プログラミングの格言
プログラム開発に関する名言や格言で,多くの人が納得できる代表的なものを紹介します.
これらの名言,格言は,プログラム開発に関する多くの示唆やヒントを与えてくれます.
プログラミング
- コーディング
- プログラミングで最も難しい点は,アルゴリズムをどうするか決めること.そして,それをできるだけ単純化すること.(Bill Gates)
- プログラムを詳細にわたって明確に記述する作業とプログラミングの作業は,全く同一のものである.(Kevlin Henney)
- プログラム構築の本質のほとんどは,実際には仕様書のデバッグだ.(Fred Brooks)
- ダメなプログラマはコードに悩むが,優れたプログラマはデータ構造とその関連性に悩んでいる.(Linus Torvalds)
- あなたのコードを保守することになる人が,あなたの住所を知る凶暴な精神異常者になるのを常に想定してコーディングしなさい.(Rick Osborne)
-
ソフトウェアを設計するには,2通りの方法がある.1つは,とてもシンプルに設計して,明らかに欠陥がないようにすること.もう1つは,とても複雑に設計して明らかな欠陥がないようにすることだ.前者の方がはるかに困難である.(Tony
Hoare)
-
私は自分のプログラムをできるだけ美しいものにしようとはしますが,必ずしも一般的にしようとはしません.私はプログラムを,手にしているタスクを実行できる,可能な限り明快でわかりやすいものにしようと努めます.(Simon
Jones)
- デバッグ
- デバッグは,最初の段階でコードを書くより2倍は難しい.ゆえに,可能な限り賢いコードを書いたとしたら,そのコードにバグがあったとき,あなたがそれをデバッグできるほどの賢くないのは明白である.(Brian Kernighan)
- デバッグがソフトウェアのバグを取り除くプロセスだとしたら,プログラミングとはバグを入れ込むプロセスに違いない.(E. W. Dijkstra)
- バグのないプログラムは存在しないが,デバッグの不可能なプログラムもまた存在しない.
ソフトウェア開発
- プログラム開発管理
- プログラミングの進展をコードの行数で測るのは,飛行機建造の進展を重量で測るようなものだ.(Bill Gates)
- コードの最初の90%が開発時間の90%を占め,残りの10%がさらに90%を占める.(Tom Cargill)
→ 合計の開発時間が180%になるのは,ソフトウェア開発のプロジェクトが当初予定期間を大幅に超過する傾向に皮肉を込めたものである.
「約90%のコードが割り当てられた時間の10%を占め,残りの10%が90%の時間を占める.」という解釈版もある.
- 水の上を歩くのと仕様書からソフトウェアを開発するのは簡単だ.但し,どちらも凍結しているならば.(Edward V Berard)
- もしそれがよい考えなら,思い切ってそれをしなさい.許可をもらうよりも,謝るほうが簡単だから.(Grace Hopper)
- プログラミング言語
- 世の中には2種類のプログラミング言語がある.人から文句を言われ続ける言語と,誰にも使われない言語.(Bjarne Stroustrup)
- どれほど素晴らしく構築されたプログラミング言語でも,プログラマが貧弱なプログラムを書くことは防げない.(L.Flon)
- C には,プログラマは自分が何をしようとしているかを知っているという基本哲学は残されている.C が要求するのは,自分の意図を明確に述べることである.C は"経験を積むにつれて,着こなせるようになる" (B.
W. Kernighan & D.M. Ritchie)
- オブジェクト指向(Object-Oriented)という言葉は私が作った.そのとき,C++ を想定していなかったことは確かだ.(Alan Kay)
- C++ は実にひどい言語だ.一般に,カーネルモジュールを C++で設計するやつは,好んで厄介事に巻き込まれたい者や自分が書いているのは実は C だと気がついていない C++バカだ.(Linus
Torvalds)
- PHP は,無能なアマチュア達が創ってしまった小さな悪である.一方,Perl は,スキルがあるが性格の歪んだプロフェッショナルによって創られた巨大で陰湿な悪である.
(Jon Ribbens)
経験則
一般的な経験則ですが,ソフトウェア開発にも適用できる格言とも言えます.
- パレートの法則 (80:20 の法則)
プログラムの処理にかかる時間の 80%はコード全体の 20%の部分が占める.(Vilfredo Pareto)
- パーキンソンの法則 (第一法則)
仕事の量は、完成のために与えられた時間をすべて満たすまで膨張する.(Parkinson)
→ データ量は与えられた記憶装置のスペースを満たすまで膨張する.
- ブルックスの法則
遅れているソフトウェアプロジェクトへの要員追加は,プロジェクトをさらに遅らせるだけである.(Frederick P. Brooks)
- ヴィルトの法則
ソフトウェアは,ハードウェアが高速化するより急速に低速化する.(Niklaus Wirth)
- ホフスタッターの法則
作業にはいつでも予測以上の時間がかかるものである - ホフスタッターの法則を計算に入れても.(Douglas R.Hofstadter)
- ヒック・ハイマンの法則
意思決定にかかる時間は,可能な選択肢の数に依存する.(Hick-Hyman)
→ 選択肢が多ければ多いほど,意思決定するまでに多くの時間がかかる.
- コンウェイの法則
システムを設計する組織は,その構造をそっくりまねた構造の設計を生み出してしまう.(Melvin Conway)
→ ソフトウェアを作成するチームの構造がそのままソフトウェアの構造に反映される(3つのチームで作るとソフトウェアの構造も大きく3つに分かれる).