言語仕様の単純さと魅力

Schemeの魅力はやはり仕様の単純さにあると思う。単純な仕様はプログラムを単純にするし、この単純さのおかげでSICPで実演されているように、すぐにマイインタプリタとかを作って遊んだり勉強したりできる。マイインタプリタを作るのはこの上なく楽しい。これは実際に作ってみないと分からないと思うが・・・。仕様が分からないままプログラミングをすると、リファレンスを見に行ったりして立ち止まりがちになってしまう。ただし仕様が小さすぎても強力さに欠け冗長なプログラムになってしまう。Schemeは丁度よく仕様の小ささと強力さのバランスを取っているのでアルゴリズムや簡単な数学の問題などを表現する道具としても使いやすい。また、LISPの遺伝子を継いでいるので言語の拡張が容易で、プログラムの単純さを維持したまま色んなことが出来る。
ただし、仕様を単純にしたせいで解決しようとする問題が大きくなると足りないところが見つかる(例えば変数名の衝突とか、マクロとか、再帰と繰り返しのニュアンスの違いを表現できないとか)。

  1. 仕様が単純で魅力的なのでSchemeが好きになる。
  2. Schemeが好きになるとSchemeでより大きいことをしたくなる。
  3. より大きいことをするには、今の単純な仕様より大きい仕様が必要。
  4. 仕様を大きくしてみると今度は大きすぎてSchemeを好きにならない

のように、今のままではSchemeは自己否定をしてしまうかもしれない。でももし今後仕様を丁度よく大きくできたとしたら、

  1. 仕様が丁度良い大きさで、それでも魅力的なのでSchemeが好きになる。
  2. Schemeが好きになるとSchemeでより大きいことをしたくなる。
  3. より大きいことをするにしても、Schemeの仕様は丁度良い大きさなので実行可能だった。

のように、うまく不動点にはまるかもしれない。だけどそれは多様性と両立可能なのかどうかは疑問だ。どちらにしろScheme大好きなので、盛り上がっていくことに期待。