「構造化プログラミング」を読むのはなかなか大変

構造化プログラミングは、ソフトウェアの抽象化技法の一つで、段階的に詳細になる構造をもつようにプログラムを作ることで、コードの見かけの規模を人間の理解可能な規模に落としコードの可読性を向上させることで、ソフトウェアの品質を向上させようとするプログラミングスタイルです。

構造化プログラミングはプログラマの基礎の基礎。ですが、又聞きオレオレな解説が多いのもまた、構造化プログラミングです。

構造化プログラムについて - その他(プログラミング・開発) 締切済み| 【OKWAVE】

構造化プログラムは何か教えてください・またなぜこの技術が使われるようになったかも知りたいです.
お願いします。

プログラムをいつも最初から作っていると大変ですよね。
それにプログラムの中には、いくつも同じようなロジックが出てくるのだから他のプログラムでも使えるロジックを部品として考えれば、新しくプログラムを作るとき、前に作っておいておいた部品をそのまま使えると、開発の効率が良くなりますよね。
プログラムによっては、部品とほんの少しの修正だけで出来るようになります。また、部品を共同で使えるようにすると、プログラマの癖が無くなり誰が見ても判り易い物になります。
構造化はプログラムの作り方をブロック単位で考えて、実行の順序をグループ(階層化)として扱う方法です。
そのような作り方をすると、ひとつの大きなプログラムを数人のチームで作ることが出来るようになります。

とか、典型的な感じ。日本語版 Wikipedia だって、構造化定理とgoto論争についてしか書いていません(こっちの方がある意味酷い)。うーん、これでは何がダイクストラ先生の構造化プログラミングなのか、知らない人は判断できないのではないかしら。

(以上枕終わり)


* * *

で、そう来ると当然「元ネタ読め」と成るわけですが、これがなかなか一筋縄でいかないみたい。

同僚がとある事情で、たまたま構造化プログラミングの元ネタを読もうとしたのですが、なかなか拾えないよと嘆いていました。

まずは、邦訳本ですが、既に絶版です。

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

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

それは知ってたので「古本探すしかないんじゃない」と軽く言ってみたのですが、Amazonマーケットプレイスで、

2点の新品/中古商品を見る : ¥ 29,800より

http://www.amazon.co.jp/%E6%A7%8B%E9%80%A0%E5%8C%96%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-E-W-%E3%83%80%E3%82%A4%E3%82%AF%E3%82%B9%E3%83%88%E3%83%A9/dp/4781902766

わぁ、最安値 29,800円。定価の10倍ですか。こんなに高くなってたとは。


Webの方はと言うと、同じ内容が Notes on Structured Programming(PDF) にあるのですが、もちろん英語。「技術者たるもの英語読めなきゃだめ」ということなのでしょうけれど(件の同僚は結局これを読んだみたい)、構造化プログラミングをお勉強させたい駆け出しプログラマさんに このハードルを押しつけるのはちょっと(いやかなり)つらいかしら。

かといって 2次情報は玉石混在ですし、うーん、いいのかしら、これで。

蛇足

ダイクストラ先生の「構造化プログラミング」(という本)の良いところは、ソースコードの可読性がソフトの品質に直結すること、そして「可読性が良いとはどういうことか」を くどくどくどくど(w 書いてある点*1。これは人間が手でコードを書き続ける限り不変なことだから、たとえ古くたって絶対に知っていて欲しいことにはかわりありません。

猫としては、「可読性なんてどうでもいいじゃん、品質に関係ないし」とか「関数が長くても読みにくくない。分割した方がかえって読みにくいよ」なんて本気で思っているようなダメなプログラマに読んでもらって、「もういいよ、俺が悪かったよ」と思い知るまでダイクストラ先生の説教(?)を堪能してもらいたいです、もうっ!(...最近いろいろあったのよ T△T)


さて、そこらへんの雰囲気を残していて、今日本語で読めるモノというと、猫的には、http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/Intro2Basic/Structure.htmlさんが おすすめです。こちらは ダイクストラの「構造化プログラミング」をそのまま要約したような内容になっています(くどさが減じてかえってコッチの方が理解しやすいかもw)。また、Cマガジンの特集でかなり良くまとまったのがあったと記憶していますが、何号だったかは覚えてません。

*1:良いところと言いつつ、本音を言えば、結構読みづらいというか、眠くなると言うか..^^;