我1992年对计算机编程问题的看法
今天在整理办公室时,我发现了这封信——这是我在1992年写下的:
20世纪70年代中期,IBM公司曾(而且或许至今仍在)使用一种名为FORTRAN的计算机语言进行大部分内部编程。
他们拥有一套相当出色的FORTRAN编译器,名为FORTRAN G编译器。这款编译器能够快速将FORTRAN代码转化为机器指令,而其生成的机器指令也以相当高效的方式实现了预期的功能。
尽管如此,IBM还是决定重新编写一套新的编译器。
在20世纪70年代中期,这一举措可谓大胆之举:因为编译器本身就是极其复杂的程序,
编写起来难度极大。更令人惊讶的是,当当时已经存在性能足够优秀的编译器时,
IBM却依然愿意投入大量资源来开发全新的编译器。
IBM耗费了数百万美元,耗费了数百名程序员的多年时间,最终推出了FORTRAN H编译器。这款编译器不仅速度极快、效率极高,还具备诸多出色的功能。
它堪称一款极为出色的编译器,至今仍是他们所采用的编译器。
接下来要讲的“第一句妙语”是:如今,编译器程序已经不再难写了。
过去十五年间,我们对编译器技术及其编写方法的理解有了翻天覆地的提升。
如今,编译器的编写变得如此简单,以至于大三的计算机科学专业学生,甚至有望在短短一个学期里,
就写出一套还算不错的编译器。
那么,一个问题来了:既然我们如今在编译器开发方面显然比十五年前进步了数千倍,
甚至一名本科生仅需四个月就能完成一套尚可使用的编译器,为什么IBM却没有投入数百万美元、
耗费数百名程序员的多年时间,去打造一款比FORTRAN H编译器好上数千倍的超级FORTRAN I编译器呢?
答案是:如今,编译器程序的质量已不再是制约我们编写计算机程序能力的瓶颈。
程序员所面临的种种问题,早已不再与编译器本身有多大的关系。
相反,这些难题更多源于编程方法和编程语言本身。
我们尚未真正掌握有效的编程方式,也尚未真正懂得如何管理自己的程序;
我们还不清楚自己究竟想表达什么,又该如何表达;
我们缺乏合适的计算机语言来清晰地传达自己想要让计算机完成的任务;
我们甚至不知道该如何思考编程问题。简而言之,IBM之所以不费心去研发一款超级FORTRAN I编译器,是因为无论它多么优秀,终究还是 FORTRAN 语言的产物。
计算机编程至今仍是一门“黑箱艺术”。它诞生不过五十多年,而至今仍无人能真正精通其中。我们所能创造的工具,远比我们所知的使用方法还要强大。