Smalltalk

最近、昔から気になっていたSmalltalkというプログラミング言語を触り始めました。
オブジェクト指向を追求したことで有名な言語ですが、オブジェクト指向の勉強をC++でした私には、「オブジェクト指向言語はライブラリ作成言語である」というイメージが強く、大規模プログラマ以外には縁のないものという感じでした。
ちょっと触ってみてもピンと来ず、ああ開発ツールやデバッガが充実しているなーという感じでしたが、少し勉強してみようと、Kent Beckさんの「Smalltalkベストプラクティス・パターン」を眺めているうちに、大きな無理解を認識しました。
Smalltalkは言語仕様が非常に簡単で、先ほど指摘したようにライブラリで構成されているといっていい言語です。その意味ではライブラリ作成言語というのは正しかったのですが、私が思っていたライブラリというものは、汎用性のあるアルゴリズムの集合というイメージでした。Smalltalkのライブラリはもっと粒度の小さいもので、むしろボキャブラリを増やす辞書のイメージに近いものだったのです。
簡単な言葉から新しい言葉を作り世界を広げ、その世界を繰り返し推敲する過程は、作文に非常に近い感じがします。
面白いことに、どうしたらコンピュータに特定の仕事をさせることができるかと考えずに、どうしたら自分のしたいことをピッタリした表現で表せるかを追求したくなるのです。