10

私は今日、 「The Humble Programmer」を楽しんでいて、次の引用に出くわしました。

したがって、しばらくの間、おそらく永遠に、第 2 種の規則は、プログラマーに必要な規律の要素として現れます。私が念頭に置いているルールのいくつかは非常に明確であるため、教えることができ、特定のプログラムがルールに違反しているかどうかについて議論する必要はありません。例としては、終了の証明を提供することなく、または繰り返し可能なステートメントの実行によって不変性が破壊されない関係を述べることなく、ループを書き留めてはならないという要件があります。

私は、ダイクストラの 1300 以上の著作の中で、彼が上で説明した規則をさらに詳細に説明しているのに最も適したものを探しています。

4

1 に答える 1

7

5 ~18 ページ: http://userweb.cs.utexas.edu/users/EWD/ewd02xx/EWD249.PDF
3 ページ目から最後まで: http://userweb.cs.utexas.edu/users/EWD/ewd04xx/EWD473.PDF
5 ページ目から最後まで: http://userweb.cs.utexas.edu/users/EWD/ewd06xx/ EWD641.PDF
すべて: http://userweb.cs.utexas.edu/users/EWD/transcriptions/EWD02xx/EWD261.html (オランダ語、translation=below)

注: Dijkstra はページに 0 から始まる番号を付けています。与えられたページ番号は、書かれたページ番号ではなく、PDF のページ番号である 1 から始まります。


私のEWD261の英語訳

数学的にプログラミングする方法

(明確に定義された) プログラムは、(明確に定義された) 数学的理論のように構成されています。プログラマーの仕事は、創造的な数学者の仕事と変わりません。

ただし、小さいながらも重要な違いがあります。

  1. プログラミングの基本的な概念はあまりなく、理解するのも難しくありません (誤解を招くほど単純ではありますが)。これが、開発の実践に理想的な理由です。(これに加えて、正確さの要求、プログラムが実際に動作する必要があるという事実があります!)
  2. ほとんどの数学教育では、既存の定理について学びます。生徒に特定の (詳細な) 一連の概念を身に付けさせる。ただし、プログラマーは必要な概念を自分で開発する必要があります。プログラミングはある種の創造性につながる抽象化を必要としますが、数学では同じことが既存の定理の適用に限定されます。
  3. プログラムは巨大でありながら機能しなければならないため、プログラマーは慎重かつ意識的に開発する方法を学びます。これはまさに教えるべきことです!私にとって、幅広い知識を教えることは正当化されません。
于 2010-05-19T04:38:50.630 に答える