「構造化プログラミング」は死んだ(新刊書店の棚的な意味で)

先日の『オブジェクト指向でなぜつくるのか』について、id:JavaBlackさんとid:minekoaさんからご批判をいただきました。とりわけみねこあさんには詳細な批判を書かれていたので、これはちゃんと答えなければ……と思っているのですが、ここで大きな問題が。

オブジェクト指向でなぜつくるのか』は、

という三つのパラダイムにプログラミングの歴史をばらし、しかもそれが上記の流れで発展してきた、とする、ある意味非常に乱暴な整理をしている本です(まあ、入門書って、よい意味でも悪い意味でも、基本的に乱暴なものだとは思いますが)。なので、この本のオブジェクト指向プログラミングについて本気で弁護・あるいは否定するなら、構造化プログラミングについてもちゃんと説明できないといけないと思うわけです。

ところが。今、構造化プログラミングについて書かれている本って、ぜんぜん入手できないんですよ(構造化設計はまたちょっと違う世界だと思うのでここでは措いておきます)。

構造化プログラミングと言えば、もちろんダイクストラ『構造化プログラミング』だろうと思うのですが、これが容易には入手できません。amazonにはもちろんないですし、池袋のジュンクにも新宿のジュンクにもなさそうでした(実は今日は新宿の方にも行ってきたんですよ>長田さん。ちなみにsasashinさんが見たのはこのときの、ダイクストラを求めてさまよっていたときの私じゃないかと思います>id:sasashinさん)。うう。かといって、その他に構造化プログラミングについてちゃんと書いてある本もないようです。うーん。

構造化プログラミング (サイエンスライブラリ情報電算機 32)

構造化プログラミング (サイエンスライブラリ情報電算機 32)

なんというか、プログラミングの世界って、こういう歴史的な文化の継承が鬼のように弱いような気がしますね……。『ACMチューリング賞講演集』とか復刊してほしい……。

構造化プログラミングに関する著名な論文のうち、一番入手しやすいものは、クヌース『文芸的プログラミング』所収の『goto文を用いた構造化プログラミング』でしょうか。もっとも、この論文の中でも、構造化プログラミングという言葉を「異なった人たちはめったに同じ意味に解釈しない、単なるキャッチフレイズ」「それをきちんと定義しようとする人はめったにいない。実際、単純な定義があるのかどうかさえ、はっきりしない」としているので、構造化プログラミングが明確に理解できることはありえないのかも。うううむ。

文芸的プログラミング (ASCII SOFTWARE SCIENCE Programming Paradigm)

文芸的プログラミング (ASCII SOFTWARE SCIENCE Programming Paradigm)

ついでに言うと、コンピュータ書の世界では「古典」の「読み方」がちゃんと確立されていないような気がします。
古典はいくら優れていたとしても、所詮は時代の産物なので、時代が変わればそのまま読んで鵜呑みにできなくなると言うか、要するに「功罪」のうちの「罪」の部分が次第に大きくなっていくのは当然でしょう。なので、普通は功罪を切り分けつつ、歴史的な背景を加味した上で、その時代の限界をどのように超えていったか・あるいは超えられなかったかを、今この時代から振り返って読むのが「古典」の読み方だと思いますが、そういうのってぜんぜんないですよね。
だから昔の本がどんどん省みられなくなり、あっという間に入手困難になってしまうのかなあ、とも。なんというか、もったいないですね。

というところで、『オブジェクト指向でなぜつくるのか』の擁護についてはまた今度(本当は書きかけていたのですが、まだまだ終わらなさそうだったのでとりあえずこちらだけ)。

追記:一部「構造的プログラミング」になっていたのを修正。「文芸的」とごっちゃになっていたらしいorz