- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
埃德斯加·狄克斯特拉
埃德斯加·狄克斯特拉
王选:从Dijkstra谈帅才的洞察力
编者按:9月5日,本期报纸即将截稿付印之际,方正集团转来了王选老师特别写给《计算机世界》的这篇文章。
在文中,王选院士缅怀计算机科学先驱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语句太容易把程序弄乱,应从一切高级语言中去
您可能关注的文档
最近下载
- 某某医院手术质量安全提升行动方案(2023-2025年).docx
- 草乌采收及初加工技术规范.pdf
- 标准图集-20S515-钢筋混凝土及砖砌排水检查井.pdf VIP
- 嗜铬细胞瘤和副神经节瘤诊断治疗专家共识1护理课件.pptx VIP
- (全国Ⅰ卷)2017-2020年高考英语全国卷1试卷试题真题及答案.pdf
- 国开电大 《24211 学前儿童社会教育活动指导》期末考试题库(按字母排版) (1).pdf
- 嗜铬细胞瘤和副神经节瘤诊断治疗专家共识1.pptx VIP
- 嗜铬细胞瘤和副神经节瘤诊断治疗专家共识2020版.pptx VIP
- (全国Ⅱ卷)2017-2020年高考英语全国卷2试卷试题真题及答案.pdf
- 第八单元 第1课时 几分之一(教学课件)三年级数学上册人教版.ppt
文档评论(0)