有关软件工程问题答学生问

原创 2002年12月17日 11:02:00
 

有关软件工程问题答学生问

作者:Edsger W. Dijkstra

翻译:刘 焱(Gallen)

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

[有可能需要对问题重新组织一下,这就留给读者作为一个练习吧]

l         无关紧要的东西不必要改进,请看下面的序列:
背景—>过度应用的投影仪—>PowerPoint

l         正因为我是一个计算机科学家,我才没有必要在一台计算机面前浪费我的时间。

[一个病理学家没有必要非得要受他所研究的病痛的折磨]

l         促进“计算机化”不是计算机科学家的责任,据说这种“促进”是通过开发一些受欢迎的应用程序来给下一代的硬件创造出一个市场。

[病理学家并没有被要求为了给更多的药物创造市场而开发什么新的疾病。]

l         大学的责任不是提供“社会要求什么”(的问题),而是满足社会的需求。

[社会要求的东西是被广泛的理解的,用不着一所大学来说三道四;大学必须去提供别人所不能提供的东西]

l         我们所用的工具塑造着我们,尤其是:我们所采用的形式塑造着我们的思维习惯,不管是好是坏。这就意味着我们在选择所学和所教的时候必须谨慎,因为不学是不可能的。

[许多年以前,如果让我招一名助手,一个前提条件就是“从来也没用过 FORTRAN”,还有:在西伯利亚的高中教过 BASIC 也是不允许的。]

l         一个程序员必须能够论证他的程序所需要的特性。如果只是事后的论证,那几乎可以肯定他没有尽到这个责任:只有当他允许这个责任影响他的设计时,他才有希望尽到这个责任。纯粹事后的否定性的检验是会有好的影响,但却是把马车放到了马的前面(本末倒置)。可是这恰恰正是在软件工场里所发生的,在那里“编程”和“质量保证”是由两个不同的小组来做的。[用不着说,从这种工场里交出来的东西是没有保证的]

l         必要的有效推理技术是非常正式的,只要编程还是由一些没有掌握这种技术的人来完成,软件危机就会一直伴随着我们,并且会被看作一种不治之症。如你所知,不治之症会做些什么:它们会请来一些江湖郎中和庸医骗子,这些人在上面所说的不治之症中所打的旗号就是软件工程专家。

l         你们有些人会怀疑前面提到的“有效推理的技术”,它对于一些小的程序来说是很好,但随着程序规模的增大它的效用会按比例增加吗?这里我强调的是那种“规模宏大绝对复杂的程序”。噢,如果你试图用它去缠清那些被一群不称职的、没有组织的程序员搞得一团糟的程序,那当然是毫无用处的。它的威力表现在程序创建阶段:(i)和其他技术比较起来它使得文字(代码)更短;(ii)它使得导出程序的长度不会随着被导出程序的增长而线性增长。最终结果就是,这样产生的程序比起通常的那些垃圾程序来说,要好上无数倍。

我们永远也不要忘记程序员是生活在一个人造的世界中,这是他们与其他科学家的本质区别。一个程序员不应当问这种问题:一种好的编程技术的适用性如何?而应该去创造一个使它适用的环境。这是他能够提交高质量设计的唯一途径。在这里,让我引用一段我在1984年写的话。

       “当今机器的容量给我们提供了大量的空间,让我们可以在其中做些乌七八糟的事情,也给一些肮脏东西的滋生产生了无穷的机会!在这样的环境下,要培养一种保持事情足够简单的严格的智力上的操守,在技术上和教育上都将是一个严峻的挑战。”

l         回答“为什么我们要教一些为业界所漠视的无用的东西”的问题,让我引用一段我在1985年写的话。

“回到我们最初的问题:计算机科学能够拯救计算机业吗?我的回答是‘如果计算机业还有救的话,救它的只能是计算机科学’。但是要让计算机行业——尤其是那些优秀的公司——认识到这一点还需要很长一段时间。几乎可以肯定这段时间要比他们计划中的‘未来’的时间要长。同时,学术界——在传统上他们的计划要更长远一些——别无选择,它必须精心挑选一流的人才,教他们如何做计算;如果它屈服于当前正流行的不正之风,那它最好还是垮台吧。”

       为了强调我们需要多大的耐心,让我再来引用我的另一句老话吧(1990)。

              “很少有人认识到当今倍受赞扬的高科技本质上讲是一门数学技术”

l         不,恐怕是Internet的流行让计算机科学深受其害。它吸引了数量越来越多的——不如说:数量压倒性的——有一点点科学爱好的学生,在科研上它只是以其速度和容量上的优势加强了流行的(有些庸俗的)观念。

l         好的,我来谈一谈你们所关注的:怎样更好地编程——虽然是可以教授的——是很难教授的。这种情形类似于数学,数学中大部分的课程局限在数学结论上;坦率地说,怎么去做数学只能由学生慢慢地去参悟。比起语言式的或图示式的论证,符号操纵式的和计算式的论证更受欢迎,其中一个原因就是后一种方式更容易教授。可是,大规模地引入计算方法学方面的课程将遇到难以克服的政治上的问题。

l         在软件行业中有许多公司,计算机科学应不应该,能不能够帮助它们还不是那么清楚。

 

 

Austin, 2000/11/28

概率论问题_生日问题

生日也会有问题,人生如此艰难。问题描述: 在一个教室中最少应有多少学生才使得至少有两个学生的生日在同一天的概率不小于1/2?直觉回答这应该是个三位数的答案,对吧! 然而答案是23!!!!第一次遇到这个...
  • KgdYsg
  • KgdYsg
  • 2017年01月12日 02:14
  • 1024

OSCHINA答读者问之一:“软件工程”的学法与用法

我曾经去给OSCHINA做过一期有关“软件工程实践”的有奖高手问答 (奖是给提问者的,哈哈),现在来看,许多问题仍然可读之处,因此整理成文字,以为众赏。 原贴在这里:http://www.oschi...
  • aimingoo
  • aimingoo
  • 2013年01月02日 20:46
  • 8254

答大二软件工程专业学生——重点学什么

【留言】 贺老师你好,我是软件工程专业的大二学生,我们学校这个学期的专业学习不是很多,已经学完了。参考学校的培养计划,下个学期开始,差不多都是专业课的学习。数据库原理,算法设计,计算机组...
  • sxhelijian
  • sxhelijian
  • 2015年11月26日 18:26
  • 3000

答学生问:研究生的论文工作需要创新吗?

 http://blog.sciencenet.cn/blog-53846-323785.html 某学生在我的上一篇博文中留言如下: 您好,我是计算机学院的研究生,之前对您的感觉一直是您学...
  • ss19890125
  • ss19890125
  • 2015年11月01日 18:06
  • 1389

写给心怀从军梦的软件工程大一学生

【来信】  我是烟台大学的一名大一学子,我对您并不陌生,在ACM协会新生见面会时,见过您,而且在博客上看了你的一些观点,的确很好。先说一下,我的情况吧:我从高一便怀有一颗参军的心,希望能够做一些军事装...
  • sxhelijian
  • sxhelijian
  • 2014年03月29日 16:54
  • 2959

软件工程一位大三学生成功上大学的案例

【来信】贺老师:  您好!我是一名大三的学生,我一直关注您的博客!今夜想打扰一下您,想跟您交流。  我喜欢上CSDN,也喜欢看您的博客。不过,作为老师的您,我感到十分的震撼!像你这么敬业,一心一意为学...
  • sxhelijian
  • sxhelijian
  • 2013年05月03日 07:51
  • 5246

为大二软件工程专业大学生解答的几个问题

【前言】   好久没有收到有深度的学生来信了。这与自己近一年来,忙于建设在线教学资源的缘故,没有时间动笔针对大学生学习中的问题,专门写指导性文章有关。没有了“引子”,IT学子指导专栏有些冷清。  ...
  • sxhelijian
  • sxhelijian
  • 2015年09月13日 16:43
  • 3878

我答同行问(续一)

本片文章出自http://blog.csdn.net/andywuchuanlong,转载请说明出处,谢谢!     我答同行问序列目录http://blog.csdn.net/andywuchua...
  • andywuchuanlong
  • andywuchuanlong
  • 2015年03月11日 09:15
  • 1417

第二周 程序阅读并回答问题

问题及代码:/*。 *Copyright(c)2014,烟台大学计算机学院 *All right reserved, *文件名:test.cpp *作者:liu_feng_zi_ ...
  • liu_feng_zi_
  • liu_feng_zi_
  • 2015年03月18日 09:28
  • 242

答读者问(12):有关考研的问题

最近我收到一位本科生朋友的邮件,内容如下:        学长:        你好!        我是XXX大学的一名大三女生,本科阶段学的是电子信息工程,成绩专业15-20%。打算考南邮的通信学...
  • zhouzxi
  • zhouzxi
  • 2014年08月28日 18:43
  • 1455
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:有关软件工程问题答学生问
举报原因:
原因补充:

(最多只允许输入30个字)