我正在阅读工作中的编码器。
我在Donald Knuth的采访中看到了这一段。
Seibel:我们谈过的很多人在他们刚开始时都可以直接访问机器。然而 Dijkstra有一篇论文我相信你很熟悉,他基本上说我们不应该让计算机科学的学生在接受培训的头几年接触机器;他们应该把所有时间花在操纵符号上。
我想要链接到那篇论文。这是哪一篇论文? (他写的太多了:-)
答案 0 :(得分:7)
也许this one?
摘录,从近端开始:
在我们分手之前,我想邀请您考虑以下方式在计算机入门编程课程中对计算的激进新颖做出公正的准备。
一方面,我们教导的是谓词演算,但我们与哲学家的观点截然不同。为了训练新手程序员操纵未解释的公式,我们将其更多地作为布尔代数教授,使学生熟悉逻辑连接词的所有代数属性。为了进一步切断直觉链接,我们将布尔域的值{true,false}重命名为{black,white}。
另一方面,我们教一种简单,干净,命令式的编程语言,使用跳过和多重赋值作为基本语句,使用局部变量的块结构,分号作为语句组合的运算符,一个不错的替代构造,一个很好的重复,如果需要的话,一个程序调用。为此我们添加了最少的数据类型,比如布尔值,整数,字符和字符串。重要的是,无论我们介绍什么,相应的语义都是由与它一起使用的证明规则定义的。
从一开始,直到整个课程,我们强调程序员的任务不仅仅是写下一个程序,而是他的主要任务是给出一个正式的证据,证明他提出的程序符合同样正式的功能规格。在手持设计样张和程序的同时,学生有充分的机会通过谓词演算来完善他的操控灵活性。最后,为了将这个入门编程课程主要是正式数学课程的信息告诉我们,我们认为所讨论的编程语言尚未在校园中实施,以便学生免受测试其课程的诱惑。这就是我对新生入门编程课程提案的草图。
答案 1 :(得分:5)
我找到了manuscript Dijkstra的“残酷”讲座。