见证软件历史丰碑

与人类的历史相比,软件的历史很短。1843年,英国大诗人拜伦的女儿埃达•洛夫莱斯(Ada Lovelace,1815—1852)为数学家巴贝奇的分析引擎编写了一个用于计算伯努利数的程序。凭借这段程序,埃达享有了第一个程序员的美名。她编写的伯努利数程序被认为是人类历史上的第一个计算机程序。这如果算作软件历史的起点,那么距今还不到200年。

在埃达去世大约100年后,另一个伟大的女性在软件历史上立下不朽功勋。她的名字叫格蕾丝•霍珀(Grace Hopper,1906—1992),她在UNIVAC I大型机上开发出了一个名为A-0(Arithmetic Language version 0)的特殊软件,这个软件可以把人类书写的程序自动编译为可以在计算机上执行的程序。这样的程序很快被赋予一个专有的名称——编译器。

编译器的出现,不仅解决了手工翻译的诸多不足,而且证明了一种新的“软件生产模式”,那就是可以使用适合人类理解的高级语言来编写软件,然后交给编译器翻译为适合机器执行的二进制程序,不再像以前那样非得使用晦涩的计算机硬件语言来编写程序。

基于编译器的“软件生产模式”被广泛认可后,具有不同特色、适合不同应用领域的高级语言——Fortran(1957)、ALGOL(1958)、COBOL(1959)、BASIC(1964)纷纷出现了。

高级编程语言的出现,让人类更容易把自己的智慧转换为代码,也降低了编程的门槛,让更多人可以编写软件。这为软件大生产和构建更复杂的软件世界奠定了基础。

于是,软件和代码的数量每分每秒都在不断增加。日益增加的软件刺激硬件的发展,更强大的硬件出现后,继续催生了更多和更复杂软件的出现。

软件世界变得日益复杂之后,这个世界亟待出现一个优秀的“管理者”,它能很好地统筹宝贵的硬件资源,为不同功能的应用软件提供丰富的基础设施和安全公平的“生存”环境,为不同身份的用户提供简单易用的人机接口。

在这样的背景下,Unix出现了。Unix是什么?它是计算机历史上的一座丰碑,是一种文化的代表,是一种哲学的例证,是不朽的传奇。

伴随Unix一起成名的还有一种伟大的编程语言,它就是C语言。在今天仍在广泛使用的编程语言中,C语言绝对是响当当的前辈。今天我们使用的几大主流操作系统的内核代码主要是使用C语言编写的。

无论是Unix还是C语言,每当说到它们的发明者,都不得不提到两个名字:丹尼斯•里奇(1941—2011)和肯•汤普森(1943— )。他们的年龄相近,只差两岁。他们是一起工作多年的同事,是相互欣赏的好朋友,是共同开创伟大事业的盟友。

Unix和C语言是软件历史上的两座丰碑,我一直想深入学习这段历史。于是在拿到《UNIX传奇:历史与回忆》的试读本之后,我手不释卷,很快便把它从封面读到封底。感谢那段历史的亲历者布莱恩博士在古稀之年为我们把这段珍贵的历史变为永恒的文字。

张银奎

2021年1月