`
huangjun_mail
  • 浏览: 118844 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

王选-“从Dijkstra谈帅才的洞察力”[转]

阅读更多

王 选
/*

 在文中,王选院士缅怀计算机科学先驱Dijkstra的历史功绩,在技术的时空中浓缩大师的魅力、勾勒计算机科学发展的轨迹。但在缅怀的背后,更值得读者重视的,是王选老师对中国软件产业缺乏既懂管理又懂技术的“师才”的忧虑。

*/

     《计算机世界》最近报道了计算机科学先驱Dijkstra于8月上旬逝世的消息。Dijkstra被西方学术界称为“结构程序设计之父”和“先知先觉”(Oracle),他一生致力于把程序设计发展成一门科学。科学研究的帅才最重要的素质是洞察力(Vision和Insight),能够发现有前景的新领域或在新领域内发现和解决最关键的问题。下面仅举几例说明Dijkstra的洞察力。

     解决编译系统中的关键问题

   FORTRAN是最早得到一定程度推广的高级语言,但FORTRAN的编译系统并未科学地解决一些主要的难题。最早提出用堆栈(stack)来编译复杂公式的是德国的Bauer和Samelson,他们的著名论文“顺序公式的翻译”(Sequential Formula Translation)是编译方面的经典论文。最近有些报道说Dijkstra是堆栈的发明人,这恐怕不符事实。Dijkstra发展了堆栈的概念,使之用于整个编译,以及目标代码运行时的动态存储分配,并在此基础上和Jenson完成了世界上第一个ALGOL60编译系统,采用了他首创的优先数编译算法。其中递归调用子程序时的环境维护是Dijkstra的重要贡献,Display这一术语就是当时他发明的,这是用来维护动态环境的一组寄存器(软件),其结构清晰并能适应任何复杂情况。我于20世纪60年代初看完他的文章后马上想到,假如计算机硬件中有对应的设备将极大地提高软件的运行效率。

   Dijkstra是ALGOL 60报告的主要起草者之一,1972年Dijkstra在他获得ACM图灵奖的讲演中,仍对这一报告给予高度评价:“只有极少极少几个像ALGOL60报告这样短的文件能给计算机界带来如此深远的影响。”

     同步进程的协调和操作系统的结构

     Dijkstra在1950~1952年期间曾当过三年程序员,在从事硬件中断处理程序的研制中,他发现一些程序错误在多个中断同时出现的情况下无法再现,很容易被当作硬件的瞬间故障,这一现象使Dijkstra毛骨悚然,促使他后来钻研用科学方法从事软件研制。操作系统是当时最复杂的软件,1965年Dijkstra在ACM通讯上发表了仅一页长的短文“并行程序的控制”,这是他在操作系统领域的第一个重要贡献。该文提出了并行程序互锁问题的一个解决方案。“死锁”(Deadly embrace)这一术语是Dijkstra发明的。1967年在首届操作系统原理研讨会上,Dijkstra介绍了他和几个博士生研制的THE多道程序系统。THE系统的目的是验证Dijkstra关于操作系统原理、结构、同步进程通信机制等方面的一系列新想法。今天已经普遍采用的系统的多层结构、抽象、上层不需了解下层的详细细节等科学原则就是当时Dijkstra提出的,引起了强烈反响;同步进程通信的信号量Semaphore这一术语也是Dijkstra当时创造的。

     同步进程协调方面的程序错误是很难发现的,为此我曾吃过大苦头。1979年我开始设计Ⅱ型照排系统,用了两台双极型高速微处理器平行工作实现轮廓字形的复原和控制激光扫描,两台微处理器通过信号量彼此协调。设计和编程均无错误,但在把微程序翻译成二进制代码时错了一位,结果造成了无法再现的随机故障:激光打印机输出的汉字有时拖尾巴。这一故障持续了一年多,引起用户不满,后由潍坊计算机公司的一位协作人员挖空心思地发现了错误的原因,即二进制码错误,问题才得以解决。

     上世纪六十年代操作系统的研制经受了一系列重大挫折,典型的例子是OS 360。而Dijkstra为首的一批科学家的努力,使操作系统走上了健康发展的道路。

     Go To语句有害和结构程序设计

     结构程序设计被称为软件发展中的第三个里程碑(第一、二个里程碑是子程序和高级语言)。早在1965年召开的IFIP会议上,Dijkstra就提出“Go To语句可以从高级语言中取消”,“一个程序的质量与程序中所含的Go To语句的数量成反比”。但是,Dijkstra讲话的影响很小,当时人们正忙于IBM 360系列的使用;而IBM 360的主要语言之一是FORTRAN,Go To语句则是FORTRAN的支柱。

     1968年Dijkstra给ACM通讯写了一篇短文,该文后改成信件形式刊登,以便早日发表,这就是具有历史意义的、著名的“Go To Letter”。Dijkstra在信中建议:“Go To语句太容易把程序弄乱,应从一切高级语言中去掉;只用三种基本控制结构就可以写各种程序,而这样的程序可以由上而下阅读而不会返回”。这封信引起了激烈的讨论。人们逐渐认识到:不是一个简单地去掉Go To的问题,而是促进一种新的程序设计观念、方法和风格,以期显著提高软件生产率和降低软件维护代价。当时采用结构程序设计方法的两个最著名项目是:

     1. 纽约时报信息库管理系统,含8.3万行源代码,只化了11人年,第一年使用过程中,只发生过一次使系统失效的软件故障;

     2. 美国宇航局空间实验室操作的模拟系统,含40万行源代码,只用两年时间就全部完成。

     上个世纪六十年代末到七十年代初,上述这两个系统可以算得上是大型软件了。

     结构程序设计概念影响了后来的高级语言,也影响了一代程序员的风格和习惯。

     坚持真理,不惜反对恩师

     ALGOL 68语言是Van Wijingaarden为主设计的,得到了IFIP下属的工作小组的多数票通过。Wirth、Dijkstra和Hoare等工作小组成员发表了“少数派报告”,强烈反对这一语言及其表达方式。ALGOL 68的表达方式独特而严格,但不易理解,是Wijingaarden的发明。事实证明,少数派是正确的,ALGOL 68很快就夭折了。

     要知道,Wijingaarden是Dijkstra的恩师。上世纪五十年代初Dijkstra在阿姆斯特丹数学中心编程序时Wijingaarden是他的领导。Dijkstra当时正在攻读理论物理学位,他发现理论物理课程和程序设计在精力上越来越冲突,他又拿不定主意,到底成为一个理论物理学家还是选择程序设计作为自己的职业,而他当时又担心程序设计能否成为被尊敬的学科。充满不安心情的Dijkstra于1952年春的一个早晨敲开了Wijingaarden办公室的门。几个小时的谈话,使Dijkstra变了另外一个人,因为Wijingaarden向他指明了程序设计这门学科正处在起步阶段,因而有重大的机会,Dijkstra可以努力使程序设计变成一个受人尊敬的学科。Dijkstra把这次谈话称为他一生中的转折点,于是决定尽快结束理论物理研究,全身心地投入程序设计。Dijkstra说,为此他应该终生感谢Wijingaarden。但是Dijkstra还是强烈地反对其恩师的得意之作ALGOL 68,少数派报告虽被IFIP压制,但真理终究得到了证明,后来的成功语言都是背离ALGOL 68方向的。

     Dijkstra的名言今天仍有现实意义

     Dijkstra的主要贡献是在上个世纪五十年代末到七十年代初,也就是他二十多岁到四十岁出头这段时间完成的。回忆这些过去的成就是想强调:洞察力对一个科学家是何等的重要! Dijkstra获图灵奖以后,软件领域又涌现出图形用户界面、面向对象技术等一系列新的里程碑,因特网更是带来一个全新的时代。但是三十年前Dijkstra关于程序可靠性的一些名言至今仍有意义:

     “有效的程序员不应该浪费很多时间用于程序调试,他们应该一开始就不要把故障引入。”

     “程序测试是表明存在故障的非常有效的方法,但对于证明没有故障,调试是很无能为力的。”

     Dijkstra大力鼓吹程序正确性证明,但这一方法离实用还有相当距离,因为一段源程序的正确性证明的文字往往比源代码还要长,所以充分的软件测试今天仍不可或缺。但是程序员的科学训练是十分重要的,有人曾做过一个试验:一个题目由一批印度程序员编程,其结果惊人地相似;而由一批中国程序员来做,编出的程序五花八门。中国的软件人员有时把创造性放在不恰当的地方。只有规范的科学的编程,一个大项目才能得到有效的管理,其质量才有保证。

     中国软件产业的发展需要有洞察力的帅才,也需要一大批训练有素的程序设计人员和既懂技术又懂管理的项目领导人。

分享到:
评论

相关推荐

    机构庆典版、量价王、量价王选股器(1).zip

    机构庆典版、量价王、量价王选股器(1).zip

    八年级语文下册第四单元15我一生中的重要抉择课件新人教版20200228464

    这些选择都体现了他对国家需求的关注和对未来趋势的洞察力。 - 课文强调了王选选择计算数学是因为他将个人事业与国家前途相结合,而投入软硬件结合领域则是在科学领域的空白区寻找创新机会。 - 对于扶植年轻人,...

    c++初赛知识点整理

    - CCF重要奖项:包括CCF王选奖和CCF终身成就奖等。 - 冯·诺伊曼奖:用于表彰在计算机科学和技术上取得杰出成就的科学家。 - 高德纳奖:自1996年起颁发,2018年的获奖者为Yoshua Bengio、Geoffrey Hinton、Yann ...

    万安2018年事业编招聘考试真题及答案解析最全版.docx

    - **解析**:王选是中国著名的计算机科学家,被誉为“中国现代毕昇”,他在汉字激光照排系统方面的贡献对中国乃至世界的出版业产生了深远的影响。 ### 知识点6:逻辑推理与论证 - **题目示例**:上面的论述依赖于...

    1602047004639264-1.pdf

    - **解析**:循环从 `-10` 开始,每次 `i` 增加 1,直到 `i 不成立为止。因此循环总共执行 20 次。 - **知识点**: - `for` 循环的使用 - 循环条件与迭代 - 结果:**C. 20** ### 质数判断 - **题目示例**:...

    2021年最新《我一生中的重要抉择》知识点.doc

    《我一生中的重要抉择》是王选先生的一篇演讲稿,这篇演讲稿中,王选以其独特的视角和深刻的洞察力,分享了他一生中的一个重要决定,即扶持年轻人成长,让他们在科技领域取得更大的成就。以下是根据文档内容提炼出的...

    就业创业大讲堂感想.doc

    吕东岚,作为山东安泰智能工程有限公司的董事长兼总经理,以其丰富的经验和深刻的洞察力,向在场的近600名学生分享了他的创业历程和成功之道。 吕总的报告主题为《审时度势,乘势而为,人人都是创业者》,他强调了...

    2024 年 03 月 GESP C++ 一级真题.docx

    - 王选发明了汉字激光照排系统,极大地推动了汉字排版技术的发展。 - **知识点:** - 汉字激光照排系统:一种用于出版印刷行业的计算机排版系统。 通过以上知识点的总结,我们不仅能够了解到C++编程的基本概念和...

    父子结点树的树枝串的形成方法

    目标是从这张表中直接生成每个结点的绝对路径,即从根结点到该结点的完整路径(如表2所示)。 #### 表1: 树型结构组织的数据表的内容 | id | pid | name | |------|------|---------| | aa | 0 | 资金 | | bd | aa...

    我一生中的八个重要抉择-教案.pdf

    王选在90年代进军日本市场,以及1995年进军广电业,显示了他对于国际市场和新技术趋势的敏锐洞察力。 7. **成功的关键因素**: 文章指出,王选的抉择具有创新性、结合实际和国家需要的特点,他的专注、勤奋和明智...

    山东省宁阳县第二十五中学八年级政治下册 第15课第2课时 搭起创新的桥梁预习学案(无答案) 鲁教版

    1. **创新思维的基本要求**:创新思维要求我们善于观察,从微小的细节中洞察事物的本质。伽利略的故事展示了勇于挑战权威和独立思考的重要性。要培养这种品质,我们需要保持好奇心,关注生活中的细微现象,寻找事物...

    最新人教部编版七年级下册语文《我一生中的重要抉择》精品教案-.pdf

    首先,本课的核心是让学生理解并掌握课文中的生字词,了解王选这位对中国IT界有重大贡献的人物及其一生中的重要抉择。王选是中国北大方正集团的创始人,他的抉择对科技进步产生了深远影响。 教学的重点在于研读课文...

    【精品文档-管理学】围绕和谐社会建设 完善企业人事管理_人力.docx

    在高科技产业,人才的要求更加多元化,需要同时具备创新思维、市场洞察力和商业运营能力。如同王选院士的观点,企业应建立吸引和留住人才的机制,营造创新氛围,鼓励员工不断学习和发展,以适应快速变化的技术市场。...

    15我一生中的重要抉择.doc

    从这篇演讲中,我们可以得到的启示是,青年人应该把握住自己的创造力和激情,勇于挑战,敢于创新。同时,社会应当为年轻人提供更多的机会,让他们在科研和技术领域发光发热。作为个人,我们也应保持谦逊,不断学习,...

    继续教育专业技术人员创新能力与创新思维试题解答-16页.pdf

    专业技术人员需要具备的创新能力不仅包括技术层面的发明创造,也包括对问题的独特洞察力、灵活的思维方式以及对市场需求的敏锐把握。 1. **创新的要素**:创新通常涉及多个要素,如人才、知识、技能和团队。案例中...

    (新人教版)广东省廉江市八年级语文下册第四单元15我一生中的重要抉择课件.ppt

    1. **王选生平与贡献**:王选是江苏无锡人,1937年出生,2002年荣获国家最高科学技术奖,是汉字激光照排系统的创始人,对中国现代汉字印刷业产生了深远影响。 2. **演讲稿结构**:演讲分为三个部分。第一部分引入...

    专业技术人员创新能力及创新思维测验试卷及答案含有解析.doc

    - 自主创新是指企业通过自身努力实现技术突破并推动后续环节,完成技术商品化的过程(选项B),这是企业核心竞争力的重要体现。 4. **人才与团队**: - 除了人才,团队(选项C)更重要,表明创新活动中团队协作的...

    2013年高一语文 暑假作业(9)

    - 王选对于权威和实际工作的关系有自己的看法,他认为真正的权威是在一线工作的人,而不是那些只靠名声而无实际贡献的人。他反对过于频繁的媒体曝光,认为这可能是科技生涯接近尾声的表现,而年轻人应该专注于实际...

    北京理工大学844机械制造工程基础2021年初试大纲.pdf

    - 生产过程:包括从原材料到成品的所有环节。 - 工艺过程:是指在生产过程中,对材料进行物理或化学变化的过程。 2. **切削与磨削加工过程的基本现象、规律和方法**: - 切削加工:通过刀具去除工件上的多余材料...

Global site tag (gtag.js) - Google Analytics