最近,著名游戏程序员、id Software 创始人之一John Carmack在采访中表示,程序员应该专心学好一门编程语言。这倒让我感到有点惊讶。虽然我个人非常赞同这条建议,但在如今的程序员圈子里,这种观点是有争议的。
我猜,我就是大家所说的“老程序员”了。我的岁数不小了,一生都在从事编程工作,而且从步入社会之后就一直在从事这项专业工作。有时,我觉得自己是一名编程语言爱好者,亲眼目睹了许多编程语言的发展。回顾过去,这是一段激动人心的历史,我们会不由自主地得出一个(错误的)结论:多掌握几种编程语言总没坏处。编程语言的历史发展非常精彩,但如今的发展形势相对比较平和。
在本文中我想回顾一下曾经的历史,总结经验教训,并看一看究竟哪种编程语言才是最好的标准化语言。
史前阶段(50年代~80年代)
随着计算硬件和计算机科学作为一门学科逐渐兴起,计算机编程(除了处理器本身的指令之外)也开始缓慢地发展。在最初的几十年里,编程语言主要是学术界的研究对象,还俘获了一小部分研究人员。程序员的选择很有限,主要取决于领域。
业务编程使用COBOL,科学编程使用Fortran,还有一些其他语言通常用于特定领域、研究或硬件。
对于大多数程序员来说,整个编程生涯或在很长一段时间里,只需专心学习一门编程语言。虽然有人对编程语言的设计感兴趣,但彼时该领域还很稚嫩。尽管出现了一些很有趣的创新,但对于如何才能设计一种好的编程语言,人们还没有很好的理解。
专业化(80年代~90年代)
随着计算机硬件数量的增加以及用途的日益多样化,编程语言的数量也开始增长,编程语言的选择变成了一个流行的话题。人们开始对编程语言进行分门别类。我们可以通过程序员的种类以及他们渴望达到的专业水平,判断他们会选择哪种语言。个人计算机编程爱好者使用越来越流行的BASIC。这是一种很荒诞、很原始的编程语言,却被广泛使用并成为了一代程序员(包括我自己)的引路人。Pascal引入了结构化编程,并产生了巨大的影响(Pascal与Turbo-Pascal 和 Delphi 建立了一个蓬勃发展的社区,但最终消失了)。
起源于UNIX的C成为了系统编程语言。C++成为了C的后继者,并借鉴了Smalltalk的面向对象编程,成为了专业应用程序和服务开发人员的语言。最终 Visual Basic(与BASIC毫无关系)普及了“可视化编程”,满足了应用程序开发的需求(随着 Windows 的出现而迅速增长),并成为大众的首选。但人们普遍认为,VB程序员是领域专家兼职编程工作,而C和C++才是“专业”的编程人员。
这个阶段,人们仍然没有很好地理解编程语言的设计,导致许多流行的编程语言很多方面的设计都不太理想。C语言简单而强大,但很难熟练掌握,有可能出错的地方太多。C++的意图虽好,但最终的设计不佳,而且使用感不好。Visual Basic既有趣又简单,但有点儿戏,在当时的技术条件下,优雅与效率都不达标。Smalltalk 和 LISP 都是有趣而优雅的语言,但由于捆绑到了专门的硬件和