한글로 된 ProgrammingLanguage에 대한 이야기.
1. 씨앗 언어 ¶
선은 그때 즈음에 어디선가 만들었던 한글로 된 언어 '씨앗'을 기억합니다. 컴파일이 매우 느려서 고생했었죠.
kidfriend도 '씨앗'을 기억합니다! 중학교때 약간 써봤는데 요즘에도 가끔 '처음 프로그래밍을 배울 때 씨앗으로 배우면 어떨까'하는 생각을 하곤 합니다.
'씨앗'의 가장 큰 장점은 사고의 언어와 코딩의 언어를 일치할 수 있다는 점이라고 생각합니다. 물론 '씨앗'도 당시 한국어의 문법을 완전히 소화하진 못했지만, 그때 좀 더 사람들의 주목을 받아서 성공을 했으면 지금쯤 훌륭한 언어로 거듭날 수 있지 않았을까 하고 생각합니다. 어린아이들의 사고력과 창의력은 정말 대단하다고 생각합니다. 영어 단어 if, function을 익히지 않고도 생각나는대로 규칙에 맞추어 적기만 해도 프로그램이 된다면 얼마나 즐거울까요? - 선
쓴귤은 '씨앗'이 망한(?) 이유가 '범용언어'였기 때문이라고 생각합니다. 대부분 범용언어들은 실제로 범용 언어가 아니었습니다. CLanguage는 시스템 개발 언어였고,BasicLanguage는 교육용, PerlLangague는 리포팅 툴, JavaLanguage는 가전제품용 언어였습니다. 이 언어들은 한 분야에서 가치가 확인된 후 범용언어로 성장했습니다. '씨앗'은 어떤 면에서 그 길을 거꾸로 걸으려고 했다고 봅니다. 쓴귤은 한글프로그래밍언어는 둘 중 하나일 수 밖에 없다고 봅니다. 교육용이거나 아니면 기존의 언어들을 쉽게 다룰 수 있는 툴이거나. 그러나 '씨앗'은 그 어느 것도 아니었습니다. 교육용으로 쓰기에는 너무 어려웠고(사실 한글이라는 점을 제외하면 CLanguage와 문법에서 큰 차이가 없습니다), 다른 언어(이 경우에는 CLanguage)와는 전혀 호환이 안됐지요.
씨앗이 망한 이유는 개발사에 문제가 있었습니다. 씨앗을 만들었던게 국비(지원금)를 따내기 위한 하나의 전략적 발표였다는 얘기를 들은적이 있습니다. 발매후에 버젼업은 커녕 제대로된 지원책도 없었고 결국에는 나우였던가 하이텔이였던가 씨앗관련 동호회에 모든걸 위임해버리고 빠졌죠.
나름대로 매니아층도 형성되려던 찰라에 그렇게 된거죠. 업체에서 좀더 지원이 있었더라도 그다지 효과적인 툴(언어라고 부르기에는 단순 C 문법에 한글만 대칭시킨것이였기에 무리가 있다고 봅니다)은 아니였다고 봅니다. - FiaDot
나름대로 매니아층도 형성되려던 찰라에 그렇게 된거죠. 업체에서 좀더 지원이 있었더라도 그다지 효과적인 툴(언어라고 부르기에는 단순 C 문법에 한글만 대칭시킨것이였기에 무리가 있다고 봅니다)은 아니였다고 봅니다. - FiaDot
2. 씨앗 이후 ¶
혹시 씨앗 이후에 만들어진 한글로 된 언어가 있습니까? --kidfriend
없는 것으로 알고 있습니다. 그때 한참 큰사람을 비롯 한국 토종의 분위기가 있었는데, 지금은 어디갔는지 안보이는군요. -선
우리말 프로젝트와 한글 파이썬 프로젝트가 있는듯 합니다. 많은 사람의 동참이 한글로 된 언어를 살리고 만드는 길이 되겠지요. --씨엔
창조라는 프로그래밍 언어는 코드가 완전히 한국어이고 비주얼베이직처럼 GUI방식이라서 프로그램을 만들기 좋습니다. 저도 써봤는데 정말 좋았어요..-하얀종이우리말 프로젝트와 한글 파이썬 프로젝트가 있는듯 합니다. 많은 사람의 동참이 한글로 된 언어를 살리고 만드는 길이 되겠지요. --씨엔
"창조"는 C를 한글로 대체한 문법과 Borland Delphi의 인터페이스를 따라한 컴파일러입니다. PuzzletChung이 이걸로 만델브로트_집합을 그리는 프로그램을 짰는데 실수로 괄호를 하나 안 닫았음에도 컴파일이 되는 것을 보고 더이상 쓰지 않았습니다.
풀그림의 실패원인을 되새겨보는것이 괜찮을 듯하네요. 때론 새로운 씨앗이 가능한가도 한번 보는것도 괜찮을듯하구요. --rururara3. 다른 언어 ¶
영어식의 술어+목적어가 아니라 한국어의 목적어+술어 형식 프로그래밍 언어로는 Forth가 있죠. 80년대말쯤에 이걸 한글화한 늘품이란 언어가 있었습니다.
ForthLanguage의 문법만 따른다면 언어 자체를 한글로 바꿀 수 있습니다. 다른 언어와 많이 다르기에 쉽게 접하기는 어렵겠지만.. 참고로 늘품은 처음 나왔을 때 월간 마이크로소프트웨어에 소개된 적이 있다고 들었습니다. 한참 전이군요. -_-;
포스는 현재도 버젼업이 되고 있습니다. 최근에는 원포스라고 해서 윈도우 환경에서 포스프로그램을 개발할 수 있는 환경도 있습니다.(공짜예요) 이 개발도구의 놀라운 것은 이 개발도구를 이용해서 개발도구 자체를 개발할 수도 있다는 거지요,,, 컴파일러 다운로드는 http://www.forth.org/compilers.html 에서 하세요 --munikang
포스는 현재도 버젼업이 되고 있습니다. 최근에는 원포스라고 해서 윈도우 환경에서 포스프로그램을 개발할 수 있는 환경도 있습니다.(공짜예요) 이 개발도구의 놀라운 것은 이 개발도구를 이용해서 개발도구 자체를 개발할 수도 있다는 거지요,,, 컴파일러 다운로드는 http://www.forth.org/compilers.html 에서 하세요 --munikang
4. 문법 문제 ¶
한국어의 문법 자체가 논리적이지 않기 때문에 아직까지는 영어 언어에서 말만 바꾼거 밖에 없는 것으로 알고 있습니다 -- PuzzletChung
한국어의 문법이 어째서 비논리적인지 설명을 부탁드립니다.
객체지향언어의 경우에 human.walk()는 사람.걷다() 가 맞지 않을까요? 도트(.)연산자를 조사로 바꿔준다면 더 좋겠지만, 어려울 것 같네요. 사람.걷다() -> 사람이걷다() --제루4.1. 쓴귤 ¶
이렇게 생각하는 편이 더 단순할지도 모릅니다. 조사 앞에 /를 붙인 이유는 parsing을 위해서. '/은'이나 '/는'으로 시작해서 .로 끝나면 선언. '/이'나 '/가'로 시작해서 !로 끝나면 실행. 30분이면 가르칠 수 있지 않을까요?
동물/은 { 배는 0. 먹이/를 먹어 { 배불러! } 배불러 { 배는 10. } }. 사람/은 { 동물/에게 먹이/를 먹여 { 동물/이 먹이/를 먹어! } }. 개/는 동물. 사과/는 먹이. 철수/는 사람. 철수/가 개/에게 사과/를 먹여!--쓴귤
정말 멋진 생각입니다. 개념을 확장하면 '아버지/께서 개/한테 {사과+통조림}/으로 간식/을 주세요!'와 같은 응용문장도 어려움없이 처리될 수 있겠군요! 하지만 '철수/가' 대신에
귀엽잖아요. --PuzzletChung
/를 쓴 이유는 입력하기 쉬울 뿐만 아니라, 보통 문법 시간에 /로 명사와 조사를 끊기 때문에 배우기도 쉬울 거라 생각해서지요. -- 쓴귤
세벌식을 쓰는 입장에서 {}를 쓰면 좀 불편할 것 같군요. {}는 한영키를 누르지 않는 한 칠 수가 없기 때문에.. ()는 칠 수 있습니다만.. --RedPain
- 철수-가
- 철수^가
- 철수_가
- 철수~가
철수~가 개~에게 사과~를 먹여!
/를 쓴 이유는 입력하기 쉬울 뿐만 아니라, 보통 문법 시간에 /로 명사와 조사를 끊기 때문에 배우기도 쉬울 거라 생각해서지요. -- 쓴귤
세벌식을 쓰는 입장에서 {}를 쓰면 좀 불편할 것 같군요. {}는 한영키를 누르지 않는 한 칠 수가 없기 때문에.. ()는 칠 수 있습니다만.. --RedPain
5. Python Korean Extension ¶
PythonLanguage와 라인 단위로 대응하는 한글프로그래밍언어를 생각해봅니다.
등등.. 단 숫자나 문자열 등에는 /를 붙이지 않음.
PythonLanguage | Korean Extension |
for A in B: | B/에서 A/마다: |
while A: | A/(은|는)?동안: |
if A: | A/라면: |
else: | 아니면: |
elif A: | 아니고 A/라면: |
def A(B, C, ..): | B를 A: # 즉 : 앞의 토큰에 /이 없다 |
class A: | A(은|는) |
예시1: 1에서 n까지 출력하기
변환결과
python 코드가 나오면 keVar001을 n, keVar002를 i.. 이런식으로 찾아바꾸기 해주면 깔끔한 코드가 되겠죠. 근데.. 뭐 이렇게 할 필요가 있을까 하지만.. --쓴귤
어디/까지 숫자찍어: 1에서 어디/까지 범위/에서 숫자/마다: 숫자 찍어 20까지 숫자찍어
변환결과
# keVar001 : 어디 # keVar002 : 숫자 # keFunc001(keVar001) : 어디/까지 숫자찍어 def keFunc001(keVar001): for keVar002 in range(1,keVar001): print keVar002 keFunc001(20)
6. 한글 SQL ¶
SQL과 같은 문법에서
을 다음과 같이 고칠 수 있지 않을까 싶네요
다른 ProgrammingLanguage의 함수에서도 비슷한 방식으로 쓸 수 있지 않을까 싶기도 합니다.
SELECT students INTO highschool FROM midschool
학생들을 고등학교에서 중학교로 고름
7. 자유 문법 ¶
다음과 같이 한국어 문법의 유연성을 쓸 수 있지 않을까요? -- 최종욱
철수/가 개/에게 사과/를 먹여! 개/에게 철수/가 사과/를 먹여! 사과/를 철수/가 개/에게 먹여! // 셋다 가능 미애/가 개/에게 사과/를 먹여! 철수/가 개/에게 사과/를 먹여! // 주어에 묶이는 영희/가 개/에게 수박/을 먹여! // 영문법 개/에게 사과/를 미애/가 먹여! 개/에게 사과/를 철수/가 먹여! // 개를 강조하는 개/에게 수박/을 영희/가 먹여! // 한국어 문법
'철수/이 개/로 사과/을 먹여라!'도 가능할 거 같군요. 자연언어를 프로그래밍 언어로 사용하기엔 어려운 점이 많아 보입니다. -- 나를잊어줘
See also:
- 한글 파이썬
- 한글 파이썬 문법(안)
- 한글컴파일러
- http://uri.kldp.net/ - 우리말 컴파일러 프로젝트.
- EnglishLikeFeatures - ProgrammingLanguage의 문법이 영어 문법과 비슷한 점.