Algorithm 版 (精华区)
发信人: ssos (存在与虚无·守拙), 信区: Algorithm
标 题: 1972:图灵奖辞(4)
发信站: 哈工大紫丁香 (2003年02月22日10:16:12 星期六), 站内信件
我想提的在软件理念上第二个大的发展是FORTRAN的诞生。在那时,这是个很蛮勇的开发项
目,承担这项任务的人们值得我们深深的钦佩。要是只是因为在它广泛使用约十年后才变
得明显的缺陷而责备他们的话,那绝对是不公平的:一个开发组有成功的超前10年的眼光
真是世上罕见!回顾起来,我们必须评价FORTRAN为一项成功的编程技术,但它对概念化鲜
有有效的辅助,而这种辅助现在是如此的急迫,以至于时间已经认为FORTRAN过时了。我们
越早忘掉FORTRAN曾存在过越好。因为作为思想的载体,它已不再适用;它浪费我们的脑力
,而且它风险性太大因此太昂贵而无法使用。FORTRAN的悲剧命运在于它被广泛接受,在思
维上把我们成千上万的程序员禁锢到我们过去的错误上。我每日祈祷我的程序员同仁们能
找到从兼容性的魔咒中解脱出来的方法。
第三个我不想遗漏的项目是LISP,那是一项完全不同风格的极妙的事业。以几条非常基本
的原则做基础,LISP显示出超乎寻常的稳定性。除此之外,在某种意义上,LISP已成为众
多最复杂的计算机应用程序的载体。LISP曾被玩笑的描述为“滥用计算机的最智慧的方法
”。我认为这个描述是个绝妙的褒扬,因为它传达了自由解放的全部意味:它曾帮助过我
们一些最天才的人们思考以前根本不可能的想法。
要提到的第四个项目是ALGOL 60。虽然直到现在FORTRAN程序员们仍倾向于用他们手头上的
特定的程序实现来理解他们的程序语言 --- 因此有八进制和十六进制转储的流行 --- 虽
然LISP的定义仍然是“这门语言意味着什么”和“机制如何运行” 的令人好奇的组合,而
著名的<<ALGOL 60算法语言报告>> 却是把抽象向前推进关键一步并以一种与实现无关的方
式来定义程序语言的伟大结晶。有人可能会争论说,就这方面来说,它的作者们已是如此
的成功,以致于他们制造了很严重的疑问,到底它能不能被实现!该报告辉煌地演示了正
规方法BNF,现在一般被称为Backus-Naur-Form,以及经过仔细推敲后的英语的威力。至少
象Peter Naur那样睿智的人用起来会是那样的。我认为可以很公正的说,仅有极少极少数
象该报告那样简短的文献对计算机业界产生了同等深远的影响。再后来,作为一个未经保
护的商标,ALGOL和与ALGOL类的名字被人轻易使用,也把荣誉带给了一些与之很不相关的
年轻项目。这是对ALGOL地位的某种让人非常讨厌的恭维。我认为BNF作为(语言)定义工具
的能力是这种语言的一个缺点:一个过於精细并且不太系统的语法会写满几页纸头。有了
象BNF那样强大的工具,<<ALGOL 60算法语言报告>>本应该更简短些。另外,我非常怀疑A
LGOL 60的参数机制:它给了程序员这么多可组合的自由,要确信地使用它程序员要有很强
的自律。除了实现起来昂贵之外,这使得使用它也很危险。
最后,虽然话题不让人愉快,我必须提及PL/I,一种定义文档大的吓人又复杂的程序设计
语言。用PL/I一定象开一个驾驶舱里有7000个按钮,开关和把手的飞机。凭它纯粹巴洛克
式的复杂, 我绝对不能明白在智力可及的范围内如何控制得住程序增长。程序设计语言,
提醒你!那是我们的基本工具---已经超脱了我们智力的控制。如果我必须要描述一下PL/
I对用户的影响,我能想到的最贴切的比喻是毒品。我记得在一个高级程序设计语言座谈会
上,有个人自称是它的忠实用户做了个为PL/I辩护的讲座。但在一个小时颂扬 PL/I 的讲
座中,他要求增加50个新“特性” ,一点也没有意识到他的问题的主要根源在于 PL/I 已
经包含了太多的“特性”。演讲者表现出因上瘾而引发的情绪消沉的全部症状,最终归结
为一种精神停滞状态,在这种状态中他只能要更多,更多,更多 … 当FORTRAN被称为幼稚
的紊乱时,整个PL/I,伴随着越来越明显的恶性肿瘤特征,最终会发展成为一个绝症。
过去已经说的太多。但犯错误是没有意义的,除非之后我们向它学习。事实上,我认为我
们已经懂得了很多关于若干年内编程将成为一种和迄今为止所截然不同的活动,如此截然
不同,我们现在最好就准备去迎接这个冲击。让我为你们勾画一下一种可能的未来。第一
眼看起来,这种可能已存在于不远将来中的编程前景也许会使你震惊得以为只是种幻想。
因此,让我加上些想法。这些想法可能使一个人得出结论,认为这种前景完全是有可能的
。
这个前景是,远在70年代结束前,我们应该能设计和应用一些系统,它们只耗费我们当前
所用的开发人年的百分之几,除此之外,那些系统实际上将是没有程序错误的。这两项进
步将携手并进。在后一方面,程序看起来有别于其他商品。其它商品的规律是质量越高价
格越高。那些需要真正的可靠软件的人们将发现,他们必须要找到一开始就避免大多数程
序错误的方法,于是结果就是编程过程将变得更便宜。如果你需要更有效率的程序员,你
发现他们不该在找错误上浪费时间---他们在一开始就不应该引入错误。用另一句话说,两
种目标都带来同一种变化。
在如此短的时间内发生如此巨变将是一种革命。在一些人看来,他们对未来的预测是基于
对不远的过去的平滑外推---这为社会和文化惯性中某些不成文规律所倾睐---这种巨变发
生的机会将是微乎其微的。但我们都知道,有时候革命的确会发生!而这次(革命)的机会
又有多少呢?
看起来需要满足三个条件。世界整体必须认识到改变的必要;第二,它的经济需求必须足
够强大;第三,改变必须在技术上可行。让我按照上述顺序来讨论这三个条件。
人们已经认识到需要更可靠的软件,我希望这一点已无不同意见。仅在几年前认识还截然
不同:谈论软件危机是亵渎。转折点是1968年10月在Garmisch举行的软件工程会议。这次
会议因第一次公开承认软件危机而引起了一场轰动。如今人们普遍认识到设计任何大型的
复杂系统将会是一件艰巨的任务。当遇到设计负责人的时候,人们发现他们非常关心可靠
性问题。简而言之,我们的第一个条件满足。
现在来说说经济的需求。当今人们常常遇到一种观点,说60年代的编程是一种报酬过高的
职业,在未来几年,程序员们的薪水将下降。通常这种观点是和经济萧条联系在一起的。
但这也可以是一种不同的健康状态下的垢病。即,过去十年的程序员没能做好他们应该做
好的工作。社会开始对程序员的表现和产品不满意。但这里有更重要的一个因素。在当前
情况下,为一个特殊系统所付的软件开发费用和硬件所需的费用是同一量级,这已是司空
见惯的,社会多多少少接受了。但硬件制造商告诉我们说,在下个十年,硬件价格将下降
十倍。如果软件开发依然和现在一样笨拙而昂贵,这将完全失去了平衡。你不能期望社会
能接受这点,因此我们必须学会以更高一个量级的效率来编程。换句话说,只要机器还是
最大的一笔开支,编程业仍可以凭它的笨拙技术继续逍遥;但那个保护伞将很快得收起来
。一言以毕之,我们的第二个条件看起来也得到了满足。
--
<<社会契约论>>是一本好书,应当多读几遍
风味的肘子味道不错,我还想再吃它
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.230.220]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.641毫秒