『人月の神話』を読んだ。読んだのは右の画像の新組新装版ではなくて、新装版 (原著発行20周年記念増訂版)。ただし、この2つの間に内容の違いはない (誤植の訂正は除く)。
第18章に列挙されている命題の中には、著者自身が既に考えを変えているものもある。本章でも補足されているし、第17章に考えを変えた経緯について詳しく書かれている。
自分が面白いと思ったのは、第18章の命題15.9と第16章の「自動」プログラミング。
まず命題15.9。フローチャートで詳細に記述するな、という話。
続いて、「自動」プログラミングは自動じゃないよね、という話。
原著が発売されてから40年近く経つのに、繰り返し同じ問題にかかずらうハメになる。それはまだしも、こうした過去の議論を省みられていないことが、ままある。自分も間接的に断片的に聞きかじっただけだった。ソフトウェアに関わっているような人は、新し物好きだからなのかもしれない。でも、こうして読んでみると、とっくに解決の方向が示されていたことに驚く。
勉強不足だったなぁ。
縦組から横組みに変え、また装丁を新たにして刊行するものです。誤植の訂正を除き本文の内容に変更はありません。全部は読まなかった。読んだのは、序文と16章以降。各章のタイトルは次の通り。
人月の神話 - 和書 - ピアソンは教育ソリューションを通じて世界に貢献しています。
- 二十周年記念増訂版序文
- 第16章 銀の弾などない――本質と偶有
- 第17章 「銀の弾などない」再発射
- 第18章 「人月の神話」の命題――真か偽か
- 第19章 「人月の神話」から二十年を経て
- エピローグ 五十年間の不思議、興奮、それに喜び
第18章に列挙されている命題の中には、著者自身が既に考えを変えているものもある。本章でも補足されているし、第17章に考えを変えた経緯について詳しく書かれている。
自分が面白いと思ったのは、第18章の命題15.9と第16章の「自動」プログラミング。
まず命題15.9。フローチャートで詳細に記述するな、という話。
15.9 フローチャートは、プログラム文書の作成のうちでまったく過大評価されてきたものの一つだ。詳細で逐一記述したフローチャートは厄介物であり、高水準言語での記述によって時代遅れとなった(フローチャートは図式化された高水準言語だ)。フローチャートもそうだし、UMLもそうだと思う。『UML モデリングのエッセンス』でマーチン・ファウラーが言っているとおり、あくまでスケッチとして使うのがリーズナブルだと思う。本書の著者もこの後の15.10, 15.11で同様の趣旨のことを述べている。
続いて、「自動」プログラミングは自動じゃないよね、という話。
パルナスは、この用語が外見で魅了することに利用されていて、意味(セマンティック)のある内容として使用されていないと次のように主張している。これはその通りだと思う。それを実行可能な形式に変換できるということは、それがプログラムであることに違いない。高水準言語を推し進める先は、もちろんフローチャートやUMLのようなグラフィカルな文法ではない (第16章のビジュアルプログラミング)。先ほども引き合いに出したマーティン・ファウラーは、DSL (Domain Specific Language) になると考えている (少なくとも考えていた) 様子。『ドメイン特化言語』という本を出している (未読)。このDSLが普及したら、本書の著者が第19章で述べている〈メタプログラマ〉が、プロジェクトに特化したDSLを作るようになるんじゃないだろうか、と思う。一方で、共通ライブラリをうまく設計することさえ難しいのだから、DSLまで設計するプロジェクトは少ないんじゃないか、とも。
つまるところ、自動プログラミングとは常に、プログラマが今使用できるというものではなく、高水準言語を使ったプログラミングの婉曲的表現だったのだ(文献8)。
原著が発売されてから40年近く経つのに、繰り返し同じ問題にかかずらうハメになる。それはまだしも、こうした過去の議論を省みられていないことが、ままある。自分も間接的に断片的に聞きかじっただけだった。ソフトウェアに関わっているような人は、新し物好きだからなのかもしれない。でも、こうして読んでみると、とっくに解決の方向が示されていたことに驚く。
勉強不足だったなぁ。