[rakuten:book:10741013:detail]

第4部が始まります。 題して、C++を使った設計

私はこれから思想を紙に表現することの難しさを発見しようとしている。書くことが記述だけでれあればとても簡単なことだ。しかし、推論がかかわってくると話は違う。すでに述べたように、論点の適切な接続、明確さ、適度な流れを実現することは、私にとって途方にくれるほど難しいことだ。  Charles Darwin

wikipedia:チャールズ・ダーウィン

チャールズ・ロバート・ダーウィン(Charles Robert Darwin, 1809年2月12日 - 1882年4月19日)はイギリスの自然科学者。 全ての生物種が共通の祖先から長い時間をかけて、彼が自然選択と呼んだプロセスを通して進化したことを明らかにした。進化の事実は存命中に科学界と一般大衆に受け入れられた一方で、自然選択の理論が進化の主要な原動力と見なされるようになったのは1930年代であり、自然選択説は現在でも進化生物学の基盤の一つである[1]。また彼の科学的な発見は修正を施されながら生物多様性に一貫した理論的説明を与え、現代生物学の基盤をなしている[2]。

姉キャロラインとエマの兄ジョサイア3世が1838年に結婚するとダーウィンも結婚を意識し始めた。1838年7月に、動物の繁殖を書き留めたノートに将来の見通しについて二つの走り書きをした。“結婚”と“結婚しない”。利点には次のように書いた。「永遠の伴侶、年をとってからの友人……いずれにせよ犬よりまし」。欠点については次のように書いた。「本のためのお金が減る、おそろしい時間の無駄」

典型的な手紙魔だったダーウィン生涯で2000人と手紙による意見交換をし、そのうち約200人が聖職者だった。決して生物に対する神学的な見解を否定したわけではなかったが、しかしもっとも愛した長女アン・エリザベス(アニー)が献身的な介護の甲斐無く死ぬと、元来信仰心が薄かったダーウィンは「死は神や罪とは関係なく、自然現象の一つである」と確信した。


このパートでは、C++C++がサポートするテクニックをソフトウェア開発の大きな構図から見ていく。C++を使った設計とその効果的な実現に焦点を置く。

第23章 開発と設計

銀の弾はない。  F.Brooks


なんと。この格言そのものが、Wikipedia に掲載されて、詳しい解説がついています。

wikipedia:銀の弾などない

wikipedia:フレデリック・ブルックス

フレデリック・フィリップス・ブルックス・ジュニア(Frederick Phillips Brooks, Jr. 、1931年4月19日 - )は、アメリカ合衆国のソフトウェア技術者で、コンピュータ科学者である。IBMメインフレームである System/360 およびそのオペレーティングシステム OS/360 の開発者として有名である。バーチャルリアリティ技術に大きく貢献した人物でもある。 ブルックスが著した書籍『人月の神話』と論文『銀の弾などない』は、ソフトウェア工学およびソフトウェアプロジェクト管理の世界で多くの人々に読まれ、大きな影響をあたえている。

ブルックスは、アメリカ合衆国ノースカロライナ州ダーラムに生まれ、デューク大学を1953年に卒業、1956年に応用数学(コンピュータ科学)でハーバード大学から博士号を授与された。ハワード・エイケンが彼の指導教官であった。
ブルックスは、1956年にIBMに入社し、ニューヨークのポキプシーおよびヨークタウンでの勤務を行った。ロスアラモス国立研究所向けの一千万ドルもする科学計算用スーパーコンピュータであるStretchコンピュータや、HARVESTコンピュータの開発に従事した。その後、System/360 およびそのオペレーティングシステム OS/360 の開発グループのマネージャとなった。
1975年には、その著書 "The Mythical Man-Month" (日本語版での書名は『人月の神話』)[1]において、ソフトウェア工学におけるプロジェクト管理の経験則であるブルックスの法則を提唱した。1986年に発表した論文で No Silver Bullet(銀の弾丸など無い)というフレーズを用いて、全て問題に通用する万能な解決策などは存在しないと論じたことから、理想論的なソフトウェア設計について否定的な意味で Silver Bullet (銀の弾丸)という言葉が用いられるきっかけともなった。
ブルックスは1999年に、情報工学におけるノーベル賞とも言われているチューリング賞を受賞した。

wikipedia:ハワード・エイケン

ハワード・エイケン (Howard Hathaway Aiken, 1900年 3月9日〜1973年 3月14日) は、情報工学における先駆者IBMの、Harvard Mark I コンピュータの主任エンジニアである。
ニュージャージー州のホボケン出身。ウィスコンシン大学を卒業し、後に (1939年)、ハーバード大学から物理学のPh.D.を授与された。このとき、彼は数値的にしか解を求められない微分方程式に遭遇した。彼は、そのような退屈な作業の大部分をしてくれる電気機械式計算機械を夢想した。このコンピュータは本来 Automatic Sequence Controlled Calculator(ASCC、自動逐次制御計算機)と呼ばれていたが、後に Harvard Mark Iと改名された。グレース・ホッパーの助けとIBM資金援助を得て、1944年にマシンが完成した。1947年にはHarvard Mark IIが完成した。エイケンはさらにMark IIIとHarvard Mark IVを製作している。Mark III は一部に電子部品を使い、Mark IV では完全電子化されていた。Mark III と Mark IV は磁気ドラムメモリを使用し、Mark IV では磁気コアメモリも使っている。


Frederick P. Brooks, Jr.




目次

23-1 概要
23-2 イントロダクション
23-3 目的と手段
23-4 開発プロセス
 23-4-1 開発サイクル
 23-4-2 設計目標
 23-4-3 設計の手順
 23-4-4 実験と分析
 23-4-5 テスト
 23-4-6 ソフトウェアの維持
 23-4-7 効率
23-5 管理
 23-5-1 再利用
 23-5-2 スケール
 23-5-3 個人
 23-5-4 ハイブリッドな設計
23-6 コメント付参考文献
23-7 アドバイス→ 練習問題がないのです。


とうとう第4部にまでたどりつきました。
泣きそうにつらかったんですけど。いままでの「各論」の学習がおわり、いよいよ「各論」の知識を
縦横無尽というか、知っていることと前提して、「設計」というお話に入ります。
こうなってくると、プログラマとしての筆者というよりは、「エッセイスト」としての側面のほうが冴え渡ります。
平山尚さんのオススメ参考文献リストに載ったのがなぜかということを考える上でも、興味深いものがありました。

「プログラミング言語 C++ 第三版」も読む 第9回 - book-loverの日記

岩田:

はい(笑)。
NINTENDO64で『ポケモンスタジアム』を出すことになって、
まず『赤・緑』のバトルのロジックを解析して、
宮本(茂)さんたちのチームに渡さなきゃいけないんですけど、
当然のことながら仕様書なんかありませんでしたから・・・。

森本
すみません(笑)。

岩田
いえいえ(笑)。
ポケモン』の戦闘のプログラムを読むというのも、
わたしの仕事でした。

森本
戦闘プログラムは
とても長い時間をかけて、僕がつくったんです。
ところが、岩田さんはわずか1週間くらいで移植して、
それがもう動いてるという話を聞いてですね・・・
どんな社長なんだって(笑)。

一同
(笑)
森本
「あの人はプログラマーなの? それとも社長なの?」
とか言ったり(笑)。

岩田
はっきり言って、
社長というよりは、プログラマーでしたね、当時は(笑)。
森本
(笑)。
ビックリしました、本当に。
このわかりにくいプログラムを
こんなに早く読まれちゃったのかって。

石原
さほど高級な言語を使っているわけでもない、
ゲームボーイのソースを全部読んで、
どことどこがつながっているということを理解できる人は
そうそういないと思っていたんです。
だから、岩田さんがそれを全部読んで、
『赤・緑』のローカライズの方針と、
N64でバトルを動くためのしかけを全部書き直して、
つくってもらったというのが、なんとも驚きで・・・。

〜〜〜〜〜〜〜〜〜〜〜〜〜〜

この任天堂最高経営責任者と、ポケモンゲームプログラマの会話の中には、
「設計」「移植」という問題が絡んでいるように思います。
どうやら、ポケモンプログラマは、「ポケモン」のバトルシステムにかかわる
ソースコードを、あとで、そのプログラミング作業に従事したことのない人が
プロジェクトに参加することになっても、その新参プログラマ(ここでは任天堂の社長)が
すぐに、そのソースコードが読めるように、書式を整えるといったことをまったくやっていなかったように
思います。
任天堂の社長が、優秀なプログラマだったので、そういった体制ができていなくても、
なんとか、仕事が回ったのかなと。

今回の記述は、こういった問題意識を取り上げています。