我今天早些时候正在享受"The Humble Programmer"并且遇到了这个选择报价:
因此,就目前而且可能永远而言,第二类规则本身就是程序员所要求的学科要素.我想到的一些规则是如此清晰,以至于它们可以被教导,并且永远不需要就某一特定程序是否违反它们进行争论.例如,在没有提供终止证明的情况下也不应写下循环,也不说明不会因执行可重复语句而破坏其不变性的关系.
我正在寻找Dijkstra的1300多篇着作中哪一篇最能详细描述,如上所述.
第5页到第18页:http://userweb.cs.utexas.edu/users/EWD/ewd02xx/EWD249.PDF
Mid.第3页到第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的英文翻译:
如何以数学方式编程
(明确定义的)程序的结构就像(明确定义的)数学理论.程序员的工作与创造性数学家的工作没有什么不同.
但是,有一些小但重要的差异:
- 编程的基本概念并不多,并且难以理解(虽然误导性很简单); 这就是为什么它是开发实践的理想选择.(除此之外,还有一个事实是需要正确性,程序应该真的有效!)
- 通过大多数数学教育,人们可以学习现有的定理,即.为学生配备一套特定的(详细的)概念; 然而,程序员必须自己开发所需的概念.编程需要抽象导致一种创造力,而数学中的相同仅限于应用现有定理.
- 因为程序很大,但是必须要工作,程序员才能学会如何谨慎而有意识地进行开发.这正是人们应该教的!对我而言,教授广泛的知识是不合理的.
| 归档时间: |
|
| 查看次数: |
994 次 |
| 最近记录: |