プログラムdeタマゴ

nodamushiの著作物は、文章、画像、プログラムにかかわらず全てUnlicenseです

schemeも弄ってみませう。

さて、prologだけじゃなくってschemeの話もしておこうか。
schemeはLispの方言の一つ。

ソースの例を見ると(Scheme入門より引用

(define (list*2 ls)
(if (null? ls)
'()
(cons (* 2 (car ls))
(list*2 (cdr ls)))))

どえらい括弧が多いです。λ式みたいな感じで見ていてくらくらするw
読めるようになるには結構慣れが必要そう。まぁ、見ての通り、あまり実用的なプログラムを作るには向かない。

んで、弄っていて思ったんだけど、ものっそ英語臭がする。
まぁ、ほとんどの言語は英語だろって言われたらそうなんだが、単語が英語とか言うレベルじゃなくて文法レベルで英語。
C言語なんかの関数系のは結局数学と同じと考えてしまえば英語じゃないんだ。

でも、これは英語

schemeの文法の基本はたったのこれだけ。
(演算子 引数1 引数2)

ところで、随分と前にJavaScriptで電卓を作ってみたことがあった。(記事
この時は中置記法を逆ポーランド記法に書き換えた。
逆ポーランド記法の基本は

引数1 引数2 演算子

という並び。さて、上のschemeの文法と良く似ているが、演算子の位置が違う。
schemeしかり、Lisp言語はポーランド記法に乗っ取った文法だ。

結局の所演算子の位置が違うと言うだけなのだが、これが大問題だ。
具体的に言うなら、
演算子が後にある逆ポーランド記法は日本人向け
演算子が前にあるポーランド記法は英語圏向けなんだ。

例を見れば早いが、
「1 2 +」を日本人はそのままの順番で「1に2を加える」と読むことが出来る。一方「+ 1 2」を我々日本人は綺麗にそのままの順番で読むことが出来ない。一方英語は動詞が先で目的語が後なので「add 1 to 2」とかそのままの順番で読むことができる。

これが、私がschemeが英語臭がするという理由だ。

ちなみに、調べてみたところ逆ポーランド記法を基にした言語はForth系というのがあって、その中でも有名なMindは日本語のプログラム言語だそうだ。

やはり、schemeが英語臭がすると思った私の感覚は間違ってなかったという事だろう。


というわけで、ここら辺でばいなら!