解释这句话的最佳 Dijkstra 论文?

发布于 2024-09-02 18:23:50 字数 358 浏览 7 评论 0原文

今天早些时候,我正在阅读“谦虚的程序员”,然后跑了在此选择报价中:

因此,暂时甚至可能永远,第二类规则将自身视为程序员所需的纪律要素。我心中的一些规则是如此清晰,以至于可以教授它们,并且永远不需要争论特定程序是否违反它们。例如,如果没有提供终止证明,也没有声明其不变性不会因执行可重复语句而被破坏的关系,则不应写下循环。

我正在寻找 Dijkstra 的 1300 多篇著作中哪一篇最能详细描述他上面描述的规则。

I was enjoying "The Humble Programmer" earlier today and ran across this choice quote:

Therefore, for the time being and perhaps forever, the rules of the second kind present themselves as elements of discipline required from the programmer. Some of the rules I have in mind are so clear that they can be taught and that there never needs to be an argument as to whether a given program violates them or not. Examples are the requirements that no loop should be written down without providing a proof for termination nor without stating the relation whose invariance will not be destroyed by the execution of the repeatable statement.

I'm looking for which of Dijkstra's 1300+ writings best describe in further detail rules such as he was describing above.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梓梦 2024-09-09 18:23:50

第 5 页至第 18 页:http://userweb.cs.utexas.edu/用户/EWD/ewd02xx/EWD249.PDF
中。第 3 页到最后:http://userweb.cs.utexas.edu/用户/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 开始编号。给定页码从 1 开始, PDF 页码,而不是书面页码。


我对 EWD261 的英文翻译

如何进行数学编程

(明确定义的)程序的结构就像(明确定义的)数学理论一样。程序员的工作与富有创造力的数学家的工作没有什么不同。

不过,存在一些微小但重要的差异:

  1. 没有太多的编程基本概念,也不难理解(尽管简单得令人误解);这就是为什么它是开发实践的理想选择。 (除此之外,还有一个事实,即对正确性的要求,程序应该真正有效!)
  2. 通过大多数数学教育,人们都会了解现有的定理,即。为学生提供一组特定(详细)的概念;然而,程序员必须自己开发所需的概念。编程需要抽象,从而产生某种创造力,而数学中的抽象仅限于应用现有定理。
  3. 因为程序很大,但仍然必须工作,程序员才会学会如何仔细、有意识地进行开发。这正是一个人应该教导的!对我来说,教授广泛的知识是不合理的。

Page 5 through 18: http://userweb.cs.utexas.edu/users/EWD/ewd02xx/EWD249.PDF
Mid. page 3 through end: http://userweb.cs.utexas.edu/users/EWD/ewd04xx/EWD473.PDF
End page 5 through end: http://userweb.cs.utexas.edu/users/EWD/ewd06xx/EWD641.PDF
All: http://userweb.cs.utexas.edu/users/EWD/transcriptions/EWD02xx/EWD261.html (Dutch, translation=below)

Note: Dijkstra numbers his pages starting at 0. Given page numbers are starting at 1, the PDF page number, and not the written page numbers.


My translation of EWD261 in English:

How to program mathematically

A (well-defined) programme is structured just like a (well-defined) mathematical theory. The programmers' work is not different from that of a creative mathematician.

There are small, but important, differences, though:

  1. There are not much basic concepts of programming and they are not difficult to comprehend (though misleadingly simple); this is why it's an ideal for development practice. (Besides this, there is the fact that a demand for correctness, the programme should really work!)
  2. With most mathematical education one learns about existing theorems, viz. equipping a student with a specific (detailed) set of concepts; a programmer, however, has to develop the needed concept himself. Programming requires the abstractions which leads to a type of creativity, while the same in mathematics is limited to applying existing theorems.
  3. Because programmes are big and nevertheless have to work will programmers learn how to develop carefully and consciously. This is exactly what one should teach! To teach extensive knowledge is, for me, not justified.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文