とみざわさん(その2)

これは、話半分という感じだなぁ。簡単に作れる代りに簡単なものしか作れな
い/動かないということはないですか? 単にその機能をつくるためだけに便利
なだけでは? あれば…が簡単につくれる機能というのは、それだけでは専用
機能と区別が付かなくて、いろんなものに使えるとか、さらに、害がない、と
いうような側面も考えないと言語/システム設計上まずいのでは?

# 横道ですが、(一般的な)言語の処理系つくるならMLが一番向いていると思い
# ます。

簡単なものしか作れない、ということはないでしょう。これってとみざわさんと2000年ごろにやった話を繰り返しているような気はしますが、SqueakだけでもeToysとかSqueakそのものとかのような言語処理系がありますし、そうでなくてもSmalltalkで書かれた証券取引システムみたいなものは実際に今も運用されているものがたくさんあるようです。

MLで普通のコンパイラを書くときれいに書ける、ということには同意しますよ。ただ、既存のインスタンスを変える必要がある、というようなものも世の中結構必要です。あるいは、ユーザーさんがちょっとしたスクリプトを書けるようにするときに、その処理系をどう書くのか、というような。抽象化されたスタックとかスタックポインターとかインストラクションポインターとかが言語から扱えるというのは別に限られたことしか実装できない特殊機能というわけではなく、他の言語をそこに落とし込むとき、というような場合にはかなり一般的に使えると思います。

 Greenspunの

"Greenspun's Tenth Rule of Programming: any sufficiently complicated C or Fortran
program contains an ad hoc informally-specified bug-ridden slow implementation of
half of Common Lisp."

というのは、多くの場合(Lispかどうかはともかく)、あてはまるかなあと感じています。