Page「制約は構造を生む」というのは確か結城浩さんの『数学ガール』の中にあったフレーズだと思うが,私はこの言葉が好きである。「言葉」というのは面白いもので,表現のためのすばらしい手段でありながら,それ自体が表現に制約を加える。自然言語の場合,その「制約」が硬直化するのを防ぐため自己を改変していく1。プログラミング言語の場合は「仕様」であり「ルール」であるため自己改変がしづらい面がある。どんなプログラミング言語にも「賞味期限」があるのだ。前にも書いたけど,私は職業プログラマなので,プログラミングが好きでも嫌いでもない。私から見れば「プログラミングが好き」というのは「鋸が好き」と言ってるのと大差ない。プログラミング言語も同様で,基本的にはどんな言語にも対応できる自信はあるが,特定の言語が好きというのはない。いうわけかスクリプト言語にはあまり食指は向かなかった。これはたぶん後付けの理由だけど,スクリプト言語というのはひたすら対象を「記述」しているだけで,あまり「作ってる」実感がない。先日,ついカッとなって「エラー・ハンドリングについて」という記事を書いたが2,書いてて思い出したのが,まさに「制約は構造を生む」というフレーズだった。馴染めなかったのが「例外処理」である。かまされるのとほとんど同じであり3,「そんな危ないもん使えるか!」というのが最初の印象だった。囲ってる人とかもいて,「それって例外で実装する意味あるのか?」って感じである。結局,関数の返値専用のオブジェクトを作って,返ってくるオブジェクトの状態を見てエラー・ハンドリングしたり。言語のやり方に慣れてしまったら例外処理には戻れない4。記述するか(あるいはしないか5)がコードの構造を決める鍵になっている。逆に言うと自己改変しなくなった言語は緩慢な死を迎える。