代码之家  ›  专栏  ›  技术社区  ›  jemfinch

最好的Dijkstra论文来解释这句话?

  •  10
  • jemfinch  · 技术社区  · 15 年前

    我很享受 "The Humble Programmer" 今天早些时候,我们看到了这个选项引用:

    因此,第二类规则目前或可能永远作为程序员所需的规则元素呈现出来。我脑海中的一些规则是如此的清晰,以至于它们可以被教授,而且对于某个给定的程序是否违反了它们,不需要争论。例如,如果没有提供终止的证据,或者没有说明其不变性不会因可重复语句的执行而被破坏的关系,则不应写下任何循环。

    我在寻找迪jkstra的1300多篇作品中哪一篇能更详细地描述规则,如他在上面描述的那样。

    1 回复  |  直到 15 年前
        1
  •  7
  •   Pindatjuh    15 年前

    第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 (荷兰语,翻译=以下)

    注:Dijkstra从0开始给他的页面编号。给定的页码从1开始,是PDF页码,而不是书面页码。


    我用英语翻译的EWD261 :

    如何进行数学编程

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

    尽管有一些小的但重要的区别:

    1. 编程的基本概念不多,也不难理解(尽管简单得令人误解);这就是为什么它是开发实践的理想选择。(除此之外,还有一个事实,即对正确性的要求,程序应该真的有效!)
    2. 在大多数数学教育中,人们学习现有的定理,即。为学生提供一套具体的(详细的)概念;然而,程序员必须自己开发所需的概念。程序设计需要抽象,这会导致一种创造性,而数学中的抽象也仅限于应用现有的定理。
    3. 因为程序是大的,而且必须工作,程序员将学习如何小心和有意识地开发。这正是我们应该教的!对我来说,传授广博的知识是不合理的。