遅くて偉大なEdsger Dijkstraは、コンピュータサイエンスは実験的な科学ではなく[ExpCS]であり、電子計算機に依存しないことを雄弁に説明しました。彼はそれを1960年代[ナイフ]と呼んでいます。
...危機が起こった:そのトピックは、実際には手術として手術科学を学ぶようなものであり、コンピューティングサイエンスは人間の心にしっかりと埋め込まれていた、マシンとその周辺機器について。
プログラミングは実験的な科学であるべきではありませんが、ほとんどの作業プログラマーは、ダイクストラが計算科学によって意味するものに関与する贅沢を持っていません。私たちは実験の分野で働かなければなりません。物理学者のすべてがそうではないように、私たちは実験の分野で働かなければなりません。今から30年を実験なしに行うことができれば、それはコンピュータサイエンスの偉大な成果となるでしょう。
実行する必要のある実験の種類は次のとおりです。
- 少数の例があるシステムをテストして、それらがドキュメンテーションに準拠していることを検証したり、ドキュメンテーションがない場合の応答を理解したり、
- 小さなコードの変更をテストして、実際にバグを修正したかどうかを確認し、
- 性能特性の不完全な知識のために2つの異なる条件下でシステムの性能を測定する。
- データの整合性をチェックする。
- 困難な、または難しいバグの解決策を示唆する統計を収集する。
私はこのエッセイでは実験のデザインを説明できるとは思わない。あなたは勉強し、練習しなければなりません。しかし、私は2ビットのアドバイスを提供することができます。
まず、あなたの仮説、またはあなたがテストしようとしている主張について、非常に明確にするようにしてください。また、特に自分が混乱している、または他の人と働いていると思われる場合は、仮説を書き留めるのに役立ちます。
一連の実験を設計しなければならないことがよくあります。それぞれの実験は最後の実験で得られた知識に基づいています。したがって、可能な限り多くの情報を提供するように実験を設計する必要があります。残念ながら、これは各実験を簡単にすることに緊張しています。経験を通してこの判断を発展させる必要があります。