Friday 11 August 2006

進化の袋小路は、プログラミングの最小単位?



なんか間違った方向に来てしまったが、進みすぎて、もはや戻れない... みたいな感じ。



ちまちま、小さいステップでプログラムを書いて、動かなかったら、デバッグして見直して。それって、IBM 360に始まって、それを真似して作ったPDP-8、それから、Intel 4004 から 8086、Pentinum って続くわけなんだけどさ。



結局、プログラミングの最小単位は、機械語一命令ってところから抜け出れてない。もっと、プログラムを書いていく最小単位を引き上げる方向に持っていくべきなはず。オブジェクト指向ってのは、そういう部分もあったはずだ。



例えば、Smalltalk のプログラミング指針に、

 メソッドは一画面に収まるぐらいにする

見たいなのがあったわけだけど、それって分割単位を小さくする方向だよね。複雑なメソッドを作れってわけじゃなくて、



 「あらゆる」プログラムを作るのに、必要十分なメソッドの集合



ってのを作ることは可能だったんじゃないかな? でも、



 メソッド == サブルーチン



という実装上の妥協が、それを不可能にしてしまった気がする。それじゃぁ、最小単位は大きくならない。



 メソッド == 制約記述



みたいなアプローチもあったが、制約に時間を入れないと因果的な記述にならない。一方で時間を入れると、命令指向に逆戻りみたいな矛盾があって、それを乗り越えられない。



スプレッドシートとか、Inspire のレイアウトみたいなのは、成功した例になっているとは思うけど、十分に汎用になってない。



その「汎用」の定義がTuring completeってのがまずいのかも知れない。Turing complete だと、どうしても命令指向な発想になってしまう。Sub Turing みたいなレベルでのプログラミングをもっと追求するべきなのかもね。そもそも、人間の能力自体が Turing completge とは思えないし。



例えば、Firefox browser が Turing complete かって言うと、JavaScript engine みたいなものを外せば、そうではないと思う。そうでないなら、もっと簡単に作れて良いはず。



一方で、良くできたライブラリがあれば解決とかいうのとも違う。もっと、材料を混ぜ合わせて、かき混ぜると出来上がりみたいなプログラミングが可能だという気がするのだが...

No comments: