빛깔언어라는 언어를 계획하고 있습니다.

ikw3179의 이미지

빛깔언어라는 프로젝트를 개설했습니다.
http://bitggal.kldp.net
http://wiki.kldp.org/wiki.php/Bitggal

일종의 메타언어로 아직은 계획단계입니다. 혹시 이런 언어에 관심있는 분 있으면 참여해 주세요. 좋은 아이디어 있으면 제안해 주세요.

혹시 언어를 만드는 데 도움이 될 만한 카페나 커뮤니티가 있으면 소개해 주시면 감사하겠습니다. ^^

에멜무지로의 이미지

'빛깔'은 현 로마자 표기법에 따르면 bitkkal로 표기합니다. (ㄲ은 kk로 표기합니다.)

ikw3179의 이미지


Bitggal이 Bitkkal보다 보기도 입력하기도 좋은 데

언어명이나 명령어명으로 꼭 로마자 표기를 따를 필요가 있을까요?

가의 이미지

로마자 표기를 따르지 않는 경우가 많아서 로마자 표기의 혼란이 일어나는 거겠죠.

ikw3179의 이미지

이름을 '빛깔'이라는 명칭에서 따왔지만 새로운 언어명이자 프로젝트명 입니다.
즉 전혀 새로운 의미의 단어를 만들어낸 경우에 해당합니다.
따라서 동의어가 아닌 단어를 똑같은 철자를 사용해야 한다는 것은 옳지 않다고 생각됩니다.

이런 철자상의 차이로 기존의 표기와 더욱 구분을 명확히 할 수 있다는 점에서 장점이 될 수 있습니다.
검색시에도 잘 찾을 수 있습니다.

또한 실제로 인터넷상의 영문표기의 주된 목적도 발음의 정확성 보다는 정확한 식별기능에 있지 않겠습니까.

lifthrasiir의 이미지

2005년에 발표된 인디 게임 Nabacular Drop(후에 밸브 사의 포털의 모체가 됨)의 제목은 별 이유 없이 지어진 것입니다. 특히 "nabacular"라는 단어는 존재하지도 않으며 단순히 인터넷에서 찾기 편하게 하려고 (구글링-_-) 했다더군요. 굳이 표기법을 지켜야 할 필요가 없는 경우에도 표기법을 강제하는 건 그다지 납득이 가지 않습니다.

imyejin의 이미지

http://lambda-the-ultimate.org/

이 사이트에 프로그래밍 언어 전문가들이 많이 오니까 여기에서 논의를 하시면 좋은 의견을 많이 들을 수 있을지도 모릅니다. 바이너리 데이타를 다루는 언어로는 각종 요상한 텔레콤 바이너리 데이타를 다루던 얼랑이라던가, 바이트 단위의 연산을 많이 하는 암호화 알고리듬을 만드는 데 특화된 크립톨 등의 언어를 살펴보시면 디자인하는 데 도움이 될지도 모르겠습니다.

임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

ikw3179의 이미지

KLDP 에도 그와 관련된 문서가 있을 것 같은데
KLDP 문서 위키에는 어떤 문서가 도움이 될까요?

얼랭을 예전에 보긴 했지만 정말 특이한 문법이던데.
얼랭을 공부해야 겠군요.^^

lifthrasiir의 이미지

위키 페이지를 보고서도 한참동안 감을 잡지 못 해서 헤맸는데... 용어 문제였군요. -_-; 지금 만드시려는 것은 "프로그래밍 언어"나 "마크업 언어"와 같이 일반적으로 "언어"라고 할 수 있을 만한 건 아니니고, 일종의 부호화 방식으로 보입니다. 예를 들어 "빛깔"이라는 이름의 identifier를 쓸 경우 _ube5b_uae54 식으로 표현하는 방법이라는 말씀이시죠?

비슷한 류의 시도(?)를 한 언어를 한 개 소개드립니다. Fortress라는 언어는 썬에서 만든 언어로, 포트란을 대체하기 위한 목표로 만들어졌고 특히 수학 기호 등에 대한 지원이 강합니다. (물론 이것만 있는 건 아니고 문법 확장이나 그런 것들도 있습니다만 여기서는 생략.) 스펙을 직접 읽어 보시면 식별자로 적절한 문자열을 넣어 주면 예쁘게-_- 렌더링해 주는 방법에 대한 표준도 있는데요, 예를 들어서 Blackboard Q(ℚ)는 QQ라고 쓰고 나중에 보여 줄 때는 ℚ라고 보여 주는 식이더군요.

ikw3179의 이미지

조금 자세히 설명 하겠습니다.

빛깔언어의 코드형식은 Z3A2라는 인코딩형식을 포괄하는 형식으로 숫자에 의해 나누지는 알파벳 문자열들이 Z3A2의 형식에 매치되는 경우와 그렇지 않은 경우가 있습니다. 매치되는 경우는 바이너리,문자열에 해당 됩니다. 그렇지 않은 경우는 Z3A2의 정규식에 매치되지 않는 모든 알파벳 문자열로 분리자나 변수나 함수명과 같은 심볼에 해당됩니다.
빛깔언어의 코드를 구성하는 토큰요소는 다음과 같이 정규식 패턴으로 정의할 수 있습니다.

	<B>   =>	"(?:[O-Z][A-Z][A-Z]|[A-N][A-P])+",
	<N>	=>	"[A-N][Q-Z][A-Z]+",	
	<F>	=>	"[A-N][Q-Z]"	,
	<C>	=>	"[O-Z][A-Z]"	,
	<G>	=>	"[A-Z]"	,  
	<D>	=>	"(?:[1-9][0-9]*|0)"	,

<B> Z3A2 형식의 문자열이며, <N> 은 정수값 , <F>는 함수명 ,<C>는 상수 또는 변수 ,<G>는 문장입니다. <D>는 분리자이며 동시에 인덱스 역할을 합니다.
즉 Z3A2 문자열은 하나의 토큰요소가 되는 것입니다. 따라서 전체의 일부일 뿐 부호화 방식이 아닙니다.

언어의 특징을 좀 더 설명하자면 이름을 만드는 알파벳 패턴이 제한되어 있다는 점으로 기존의 언어와 다릅니다. 예를 들어 C언어에서 'A'를 변수명으로도 함수명으로도 사용하는 것이 가능합니다. 그러나 밫깔에서는 'A'는 문장명(for문, while문 등의 )이 되며 함수명이나 변수명으로 사용할 수 없습니다. 또한 함수명은 위 정규식에 맞춘다면 'AQ' , 'BX' 같이 두 문자로 되어야 합니다. (이름의 갯수에 대해서 제한이 있겠다고 생각할 수 있으나 확장할 수 있는 방법은 있습니다.)

서문 위키 페이지의 예문을 예로 설명하면

 R   
    9 Axx
    2 XA
    3 BC
    12 KL
 
    5 t
        9 mA 0
 
    4 zDKWhWwPewHHcH
    7 s0CA
    6 JK
    34 XKK
    7 CA
....

맨위의 'R' 은 어떤 문장의 시작을 표시하며 그 아래 들여쓰기된 요소들을 포함하여 하나의 문장이 형성됩니다. '5 t'는 문장내의 문장으로 '9 mA' 라는 하나의 하위요소를 가집니다. 그리고 분리자 '0'은 분리자인 동시에 블럭을 닫는 역할을 합니다. 상위 문장인 'R' 또한 생략된 곳에 '0'이 있는 곳 까지 블럭영역이 됩니다. 그리고 zDKWhWwPewHHcH는 '수리1수리' 라는 문자열의 Z3A2 인코딩 문자열입니다.
이렇게 빛깔언어는 하나의 문법을 구비한 언어라 할 수 있습니다.

아직은 계획중에 있으니 이 설명이 모두 확정된 개념은 아닙니다.

그리고 언어유형에 대한 판단은 분리자가 있으니 마크업 언어에 가깝게 보시면 될 것 같습니다.

그리고 Fortress와 비교한다면 Fortress가 식별자를 렌더하는 방식이라면 빛깔언어는 하나의 문장 전체를 식별자 또는 문자열로 만들어 다른 언어 속으로 섞여 들어간다고 할 수 있습니다.

<.)++++< budl

cwryu의 이미지

위키 페이지에 쓰여 있는 게 인코딩밖에 없으니 언어가 아니라 인코딩이라고 할 수밖에요.

"유니 코드를 사용한다"라고 써 놓으면 그게 자바 언어를 설명한 걸까요?

ikw3179의 이미지

그런 오해도 할 수 있겠군요, 좋은 지적 감사합니다.

위 설명글을 위키에 추가했습니다.
그리고 변경된 점은 Z3A2형식과 구분하기 위해서 '''GGAL''' 이라는 용어를 사용했는데
이 새로운 용어가 Bitggal과 잘 어울릴 것 같군요.