A Philosophy of Software Design ch0 Preface
Preface
- 人類が計算機でプログラムを書いて80年
- あれこれ議論されてきた
- しかし、ソフトウェア設計についてはほとんど論じられてこなかった
- 45年前 -- 1971年の論文から大きくは進歩していない
- On the Criteria to be used in Decomposing Systems into Modules (David Parna)
- コンピュータサイエンスの本質的な問題は「問題を分解すること」
- よいプログラマをよいプログラマたらしめる、凡百の者との違いは?
- 何かのスキル?
- 何人かと話してみたが明文化できなかった
- 生まれつきの才能?
- 否
- Talent is Overrated (Geoff Colvin)
- 否
- 仮定: ソフトウェア設計
- 何かのスキル?
- スタンフォード大で、ソフトウェア設計の講義を行ってみた
- CS190: Software Design Studio
- ソフトウェア片を実装する
- コードレビューを通じて設計上の問題を特定し、修正する
- これをたくさん繰り返す中で設計原則を学んでいく
- CS190: Software Design Studio
- 本書の内容は、この講義の中で生じた設計原則にもとづく
- 著者はソフトウェア設計のあるべき論について答えを知ってるの?
- 否
- 本書は、著者自身が多彩な領域・多彩な言語で250000行のコードを書いてきた経験の結晶
- すべての問題は著者が実際に経験したもの
- すべての提案は「著者はうまくいった」もの
- 本書は設計上の「鶴の一声」ではない
- 異論求む
- 鵜呑みにせず、話半分で読んでね
- 一番大事な目的は「複雑性を減らすこと」
- 本書提示の考え方に沿っても複雑性を減らなそうなら、固執する必要はない
- その場合はフィードバック求む
- 何がうまくいき何がうまくいかないかを知りたい
- 連絡先等。略
- 謝辞
- 略
英語
- the state of the art
- 最先端
- divide up
- 分割する
- articulate
- 明確化する
- perplex
- 困惑させる
- put forth
- 考え・アイデア等を出す
- assimilate
- 吸収する
- 文中では学びを「咀嚼する」の意に近いか
- 吸収する
- final word
- 鶴の一声
- with a grain of salt
- 話半分で
- be indebted to
- 〜に恩義がある