「JavaScriptはCの皮を被ったLISPである」と言われることがあるらしいのですが、誰が言い始めたんでしょうね。Paul Grahamによると「LISPがもたらした9つの新しい考え方」は
- conditionals
- a function type
- recursion
- a new concept of variables
- garbage-collection
- programs composed of expressions
- a symbol type
- a notation for code using trees of symbols
- the whole language always available
だそうで、1〜5は現在の多くの言語に見られ、6や7はいくつかの言語に取り入れられ始めており、8と9はまだLISPにしかないのだそうです。すべての条件を満たすと結局は「LISPの新しい方言を作ったに過ぎない」のだとか。
JavaScriptには詳しくないのですが、高階関数が使えるということでLISPっぽいと言われているのかもしれませんが、それは上記の2の部分だけを指して言った事のようです。つまりは「JavaScriptはLISPである」みたいな事を読んでLISPよりJavaScriptのほうが運用がラクだしいいじゃんなんて思ったのに、結局はLISPの1〜5までしか対応していないのかなぁ、とちょっとがっかりしたわけです。僕は8と9の機能は当面使わないような気がするのですが、7までは欲しい。