JavaScriptはLISPである

JavaScriptはCの皮を被ったLISPである」と言われることがあるらしいのですが、誰が言い始めたんでしょうね。Paul Grahamによると「LISPがもたらした9つの新しい考え方」

  1. conditionals
  2. a function type
  3. recursion
  4. a new concept of variables
  5. garbage-collection
  6. programs composed of expressions
  7. a symbol type
  8. a notation for code using trees of symbols
  9. the whole language always available

だそうで、1〜5は現在の多くの言語に見られ、6や7はいくつかの言語に取り入れられ始めており、8と9はまだLISPにしかないのだそうです。すべての条件を満たすと結局は「LISPの新しい方言を作ったに過ぎない」のだとか。

JavaScriptには詳しくないのですが、高階関数が使えるということでLISPっぽいと言われているのかもしれませんが、それは上記の2の部分だけを指して言った事のようです。つまりは「JavaScriptLISPである」みたいな事を読んでLISPよりJavaScriptのほうが運用がラクだしいいじゃんなんて思ったのに、結局はLISPの1〜5までしか対応していないのかなぁ、とちょっとがっかりしたわけです。僕は8と9の機能は当面使わないような気がするのですが、7までは欲しい。