Niklaus Wirth

http://www.sinoprise.com/read.php?tid=1056&page=e

景仰一下。

Q: 您觉得怎样才是一种好的学编程的方式呢?一种编程工具是不是必要的?

A: 我们因为要编程而学习语言,而不要本末倒置。本质是编程,编程的工具是语言,是一种形式符号。一种好的方法是从简单的(但不是一眼看穿的)例子开始。当设计一个程序时,必须时刻谨记设计的正确性取决于它的作用。为了构建更复杂的程序,我们需要能够提供组织结构的符号或指令,以便能够对各部分充分发展,并将他们顺利组合成一个整体,而且组合时不需要再对各部分进行验证。显然,抽象在其中扮演了重要的角色,符号的作用也不容小视。我们必须鼓励洁净的、结构良好的语言设计,使程序设计者不必拘泥于具体计算机的烦琐,或者说为产生“好的”输出而烦心。

但不幸的是,现在应用最广范的语言并不具备上述特点。即使是最简单的程序也充满了含糊不清的符咒,使得初学者,哪怕是专家,也不知所云。它们往往十分复杂,并诱使程序员用形式奇怪的结构和夸张的风格。从前,我们接受的教育是计算机和计算机语言应该定义严谨,好使一个人可以通过学习这些定义规则而掌握所有的东西。不幸的是,现在已经不再如此了。手册变得如此厚重以致没有人使用,这是一个不容置疑错误的征兆。以C++作为最典型的示例:它对于一切我们曾经学过的关于语言设计的几十年来的东西都置之不理。新语言定义模糊,又如Java,在正式语法出炉之前,已有四个版本的Java被发布!程序员们被诱使,指使去尝试,如果一个方式行不通,就试试别的。这种通过反复试验从错误中学习程序的方式可以称做hacking。不幸的是,高速的,密集的交互试验,和耐心的电脑使得这一切成为了可能。但这种方式不能被接受,尤其在学校教育上更难接受,因为它是拙劣工程学的基础,并且造成今天错误百出的软件工程。现在已经到了我们的大学扮演主角的时候了,我们要成为领导者而不是跟随者。

Q: 一种好的大学教育是什么样子的呢,尤其对计算机科学来说?
A: 我觉得数学中的逻辑学的部分应该加入到程序设计中来。这不是程序执行的正确证明,而是正确的程序结构。不用说计算机系的学生在大学阶段将全部的数学基础课程都掌握,尤其是对事物精确把握,抽象思考的能力。
如果一个学生获得某一个应用领域的知识会更好,包括商业,科学计算和自动控制等方面。如果是对于一般教育,我认为还应该包括历史,语言,和自然科学等基础课程。

Q: 学习编程最大的挑战是什么?
A:让我引用E.W.Dijkstra的话。他说:“编程的挑战不是去将它搞成一团糟”。每一天,程序员必须同全新的复杂性问题交战,既然所面对的问题已是复杂的,所以让我们避免在编程中加入更多的人为的复杂的事情。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值