コンピュータ・プログラミングには、分析、理解の深化、アルゴリズムの生成、異なるプログラミング言語によるアルゴリズムの実装など、様々な綿密な問題解決活動が含まれます。その目的は、特別なタスクの実行や特定の問題の解決を自動化する一連の手順を見つけることです。
さらに、アプリケーション・ドメイン【共通言語ランタイム(CLR)における、実行コードの管理単位】、形式論理、ブール論理、特殊なアルゴリズムに関する専門知識が必要とされます。
他の分野と同様、ソフトウェアやプログラミングの世界にも興味深い法則やルールがあり、開発者は会話や会議、雑談の中でよく使います。これらは、コンピュータ関連業界の有名人の直接的な言葉であったり、ソフトウェア開発を支配する不文律であったりします。
しかし、これらのルールを破ったからといって罰則を受けるわけではありません。むしろ報われることが多いのです。コンピュータ・プログラミングの基本的な法則を見てみましょう。他にもあれば、ぜひ加えてください。
【画像の下に訳文を記載してあります】
何か問題が起きるとすれば、それは必ず起きる。
ソフトウェアは、ハードウェアが高速化するより急速に低速化する。
エラーを修正するのに必要な労力は、時間の経過とともに飛躍的に増加する。
プログラムに合わせて仕様を変更するのは、その逆よりも簡単である。
プログラムの価値は、その成果の重さに反比例する。
動作中のプログラムのある部分にバグが現れるのは、別の「無関係な」部分が修正されたときである。
プログラムの完成度は90%を下回ることはなく、95%を超えることもない。
パンドラの箱を一旦開けたら【厄介な問題を引き起こしたら】、それを元に戻すにはもっと大きな箱を使うしかない。
人間の信頼性に依存するシステムは信頼できない。
問題の解決策は問題を変える。
どんなプログラムも、利用可能なメモリをすべて満たすように拡張する。
エラーを修正するのに必要な労力は、時間の経過とともに幾何学的に増加する。
どんなプログラムも、一度配備されれば、すでに時代遅れである。
プログラムのコーディングは、早く始めれば始めるほど時間がかかる。
コンピュータの処理速度は2年ごとに倍増する。
ユーザーはプログラムを使ってみるまで、それに何を求めているのかわからない。
どんなプログラムでも、実行されるのはコードの10%だけである。
すべての小さなプログラムの中には、外に出ようともがく大きなプログラムがある。
何人の女性が割り当てられたとしても、子どもが産まれるまでには9ケ月かかる。
十分な目玉があれば、全てのバグは洗い出される。
もしプログラムが有用なら、変更しなければならない。
もしプログラムが役に立たないなら、文書化しなければならない。
混乱を自動化すれば、自動化された混乱が生じる。
遅れているプロジェクトにプログラマーを加えると、さらに遅くなる。
最も小さなバグが最も大きな損害と問題を引き起こす。
自明でないプログラムには、少なくとも1つのエラーが含まれている。
ソフトウェアは、利用可能なすべてのリソースを消費するために拡張する。
デバイスの不具合は、最終検査に合格するまで現れない。徹底的にデバッグされていないプログラムを信用してはならない。
完全にデバッグされたプログラムなど存在しない。
コンピュータはエラーを起こさない – コンピュータは意図的に行っている。
どんなに複雑な問題でも、簡単な検査で見つけることができる。
プログラムのダウンロードに時間がかかればかかるほど、実行できない可能性が高くなる。
デバッグは、最初にプログラムを書くことの少なくとも2倍は難しい。
リソースはいくらあっても足りない。
優れたプログラムには常に、持っている以上のメモリが必要である。
バカでも使えるプログラムを作れば、バカしか使いたがらない。
プログラムの複雑さは、それを維持するプログラマーの能力を超えるまで増大する。
何ヶ月も見ていない自分のコードは、他人が書いたものに等しいかもしれない。
常に曲線を描いてから、測定値をプロットすること。
最初の90%のコードには10%の時間がかかる。残りの10%には残りの90%の時間がかかる。
もしあなたのプログラムが10%順次的であれば、アプリケーションを並列化することで最大10倍の性能向上を得ることができる。
ハードウェアの故障はシステム・ソフトウェアのクラッシュを引き起こし、カスタマー・エンジニアはプログラマーのせいにするだろう。
入力エディターが悪い入力をすべて拒否するように設計されている場合、独創的なバカが悪いデータを通過させる方法を発見するだろう。
定義上限定されている検出可能なエラーとは対照的に、検出不可能なエラーは無限に存在する。
プログラマーが英語でプログラムを書けるようにすれば、プログラマーが英語で書けないことがわかるだろう。
もしプログラマーがプログラムを書くように建築家が建物を建てたら、最初にやってきたキツツキが文明を破壊するだろう。
あるプログラムが少なくとも6ヶ月間稼動するまで、その最も有害なエラーは発見されない。
完璧なデモが行われる確率は、見ている人の数に反比例し、関係する金額の累乗に引き上げられる。
不注意に計画されたプロジェクトは、完了までに予想の3倍の時間がかかる。注意深く計画されたプロジェクトは、2倍の時間しかかからない。