COBOL技術者の憂鬱

COBOLプログラマは不在にしています

プログラミングについての本質的なこと

この間から「Jythonプログラミング」という本を読んでいるのですが、この本、Jythonの解説だけではなくて、Python自体についても簡単に解説している章が少しだけあって、その部分に書かれている内容が自分的にすごくよかったと感じています。
ディクショナリの解説のところで、Pythonの処理系内部での変数を管理する仕組みについて言及していたりしているところで、「あ、これは普通の解説と違うな」と予感していたのですが、その後に続けて次のような言葉が登場し始めて、すごく興味深く読み進めていくことができました。

オブジェクト指向には二つの思想があって、一つは「関連する変数や関数がコードのあちこちに散らばらずに、まとめたモノとして扱えるようにするべき」というもので、もう一つは「整数や関数などのモノが、モノによって扱い方が異なるのではなくて、統一的な方法で扱えるようにするべき」というものである。

関数や変数をトップレベルに書いただけのスクリプトは、一見まとまっていないように思えるが、実は「モジュール」というオブジェクトになっている。
importされたタイミングで一度だけ実行され、グローバル変数はpublicなフィールド、トップレベル関数はpublicなメソッド、トップレベルクラスはpublicなインナークラスに相当することになる。

なるほど言われてみれば目からウロコ状態なのですが、こういうふうに普段何気なく使っていることの表層がピラっとめくれて、奥に隠れている本質があらわになってくる瞬間を体験するのはとても気持ちのよいことですね。
こういう本質的なことについて深く理解を進めていくと、プログラミング言語って、とんでもなく頭のいい人間が作ってるんだなと思い知らされるし、それを完璧に理解している人でないと、よい解説本って書けないものなんだなと感じさせられます。
その他にも、クラスを使わずにクラスっぽいモノを作っていこうとしていたりして、本当に面白い内容の本でした。
今までJythonなんて使うことないわーと思って敬遠していたのですが、これはもっと早く読んでおくべきでしたね。