Smalltalkのコードが追いやすい理由

オブジェクト指向のコードが追いにくい理由


を受けて、いつもの連想ゲームなエントリー。

OOPのコードが追いにくいのは動的なフローであるからです。そしてそれは契約に基づくプログラミングでは「結果を返してくれる何か」と抽象化して委譲するのでそこより先のフローに立ち入りません。

つまり、デバッグ時以外ではこの動的フローを強く意識せずともプログラムは書けるわけで、動的フローが身についていないままデバッグの段で動的フローに触れることになると、「OOPは役に立たない。コードの可読性を損なうだけで百害あって一利なしだ!」と憤慨することになりかねないのです。

なるほどー。抽象的でない方が取っつきやすいですから、ビギナーへのハードルは OOP の方が高い?のかもしれません。


でも、絶望するのは未だ早いです*1。そういう人には Smalltalk がよろしいかと。もう、全ては動的であることを受け入れてしまって、今、そこにあるオブジェクトを、見れる/さわれる/変えられる! 環境ならば、動的なフローだってちっとも追いにくくないのです。

コメント欄にで、

東方算程譚で先に書いてしまったけど、オブジェクト指向のコードを「読む」のが原因だと思います。
オブジェクト指向のコードに限らずコードは読むものではなくて頭の中で動かすものだと私は思うのです。

とあるけれど、それを頭の外でやってくれるのが Smalltalk の素敵なところ。

Smalltalk にふれると、OOPって簡単なものに思えてくるから不思議。言語よりもあのUnix の「ファイル」の変わりに「オブジェクト」がある OSモドキ環境が、簡単に思える大きな力になっている風に感じます。だから、OOP が広く普通の人のものになるには、ああいう環境とペアであるべきなのかもしれない、とか電波なことを言ってみたり。

*1:脳内で響く「絶望した!初心者はコードが追いにくいとかいいながら、苦労して中級者になれば、中級者が苦労するシステムだという、OOPの報われなさに絶望した!」の声w