描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787577201597
全方位展现软件发展的历史脉络,讲述软件发展历程中的动人故事,作者10余年搜查集考证,直接采访书中人物或亲历者,包括C 之父本贾尼·斯特劳斯特鲁普、自由软件之父理查德·马修·斯托尔曼、Winows NT内核之父卡特勒等,耗时4年写就,呈现数百张珍贵历史照片。
探索软件的起源与演进,呈现软件发展史上的重要人物和事件。按软件的孕育、诞生、发展、改进、壮大过程分为六篇。
第一篇 潜龙勿用 追溯二进制数与中国文化的渊源、莱布尼茨发明二进制算术的动机和背景、穿孔卡片与二进制数的结合、穿孔卡片在自动提花机和自动计算中的应用、巴贝奇制作分析引擎的艰辛历程、世界上第一个计算机程序的诞生过程。
第二篇 见龙在田 1936年图灵机模型横空出世。世界各地的发明家陆续开始制作计算机,世界上第一台可编程计算机在德国诞生,第一台电子数字计算机ABC在美国诞生,随后为曼哈顿项目做出重要贡献的机械式通用计算机马克一号悄悄登场,第一台通用数字计算机ENIAC问世。冯?诺依曼完成在计算机历史上具有里程碑意义的《第一草稿》。
第三篇 终日乾乾 1945年图灵提出ACE提案,着手制造电子计算机,同时构思了广阔的软件蓝图。1946年,威廉姆斯和基尔伯恩发明了用电子方式访问的CRT内存,为实现存储程序计算机铺平了道路。英国国家物理实验室、曼彻斯特大学、剑桥大学和费兰蒂公司纷纷加入制造电子计算机的行列。
第四篇 或跃在渊 美洲大陆的商业化大型机纷纷出现,格蕾丝发明的编译器为软件大生产做好了准备。1952年IBM的第一台商业化的科学计算机IBM 701问世,开启了“蓝色巨人”的电子计算机征程。1956年第一台全晶体管的现代计算机TX-0在MIT诞生,从此晶体管取代电子管成为构建现代计算机的基本材料。1957年第一种被广泛使用的高级编程语言FORTRAN诞生。
第五篇 飞龙在天 1960年DEC公司推出PDP-1小型机,进一步降低计算机的成本,向更多人展示了计算机和软件的魅力。MIT和BBN公司开始研发分时操作系统,IBM投入巨资打造的OS/360,贝尔实验室的UNIX操作系统问世,操作系统的功能日臻完善。系统软件和应用软件的分工逐步形成,软件的社会化大生产即将爆发。
第六篇 亢龙有悔 集成电路技术逐渐成熟,硬件体积变得越来越小,价格越来越低。20世纪80年代个人计算机(PC)登上历史舞台。各种高级编程语言、应用软件纷纷出现。互联网走上前台,自由软件运动和开源软件大放光彩。
1 第一篇 潜龙勿用 1
第 1 章 史前,二进制符号 3
第 2 章 1679 年,二进制算术 11
第 3 章 1725 年,布雄织机 21
第 4 章 1745 年,沃康松织机 35
第 5 章 1804 年,雅卡尔织机 41
第 6 章 1834 年,分析引擎 53
第 7 章 1843 年,计算机程序 71
第 8 章 1847 年,布尔逻辑 81
第 9 章 1890 年,电动制表机 87
95 第二篇 见龙在田
第 10 章 1936 年,图灵机 97
第 11 章 1938 年,Z1 113
第 12 章 1939 年,ABC 127
第 13 章 1943 年,巨神计算机 143
第 14 章 1943 年,马克一号 149
第 15 章 1945 年,ENIAC 159
第 16 章 1945 年,《第一草稿》 183
第 17 章 1945 年,“最初六人组” 213
第 18 章 1946 年,摩尔学院讲座 227
231 第三篇 终日乾乾
第 19 章 1945 年,ACE 提案 233
第 20 章 1946 年,CRT 内存 243
第 21 章 1947 年,图灵-威尔金森讲座 253
第 22 章 1948 年,“曼彻斯特婴儿” 257
第 23 章 1949 年,EDSAC 269
第 24 章 1949 年,曼彻斯特马克一号 279
第 25 章 1950 年,试验型 ACE 285
第 26 章 1951 年,《第一手册》 291
第 27 章 1951 年,费兰蒂马克一号 305
第 28 章 1951 年,计算机机房 311
第 29 章 1951 年,加载器和系统软件 317
第 30 章 1951 年,第一销售员 321
第 31 章 1951 年,锡屋里的程序员 325
第 32 章 1952 年,加拿大的第一台计算机 333
第 33 章 1954 年,图灵的最后程序 349
1 第四篇 或跃在渊
第 34 章 1951 年,UNIVAC 一号 5
第 35 章 1951 年,旋风 1 号和磁核内存 17
第 36 章 1952 年,IAS 计算机 29
第 37 章 1952 年,A-0 编译器 37
第 38 章 1953 年,IBM 701 49
第 39 章 1954 年,IBM 704 和 IBM 705 59
第 40 章 1954 年,高级编码暑假班 63
第 41 章 1956 年,TX-0 69
第 42 章 1956 年,UNIVAC 1103A 77
第 43 章 1957 年,FORTRAN 语言 85
第 44 章 1958 年,ALGOL 58 93
第 45 章 1959 年,命名栈 105
117 第五篇 飞龙在天
第 46 章 1960 年,PDP-1 119
第 47 章 1962 年,BBN 分时操作系统 127
第 48 章 1963 年,KDF 9 135
第 49 章 1966 年,OS/360 147
第 50 章 1970 年,PDP-11 163
第 51 章 1971 年,UNIX 系统 169
第 52 章 1972 年,C 语言 195
第 53 章 1974 年,关系模型和 SQL 203
第 54 章 1978 年,VMS 219
239 第六篇 亢龙有悔
第 55 章 1972 年,4004 241
第 56 章 1974 年,CP/M 253
第 57 章 1981 年,DOS 263
第 58 章 1983 年,Word 1.0 271
第 59 章 1983 年,Turbo Pascal 277
第 60 章 1984 年,GNU 283
第 61 章 1985 年,C 297
第 62 章 1985 年,Windows 1.0 309
第 63 章 1990 年,万维网 317
第 64 章 1991 年,Linux 327
第 65 章 1993 年,NT 3.1 339
第 66 章 1993 年,Debian 353
361 跋
365 人名表
大约700万年前,在东非大峡谷西侧的广袤原野上,生活着一群人。我们对他们知之甚少,不知道他们来自哪里,如何生活,忙碌之余想些什么。我们只知道他们中的一位死后,头骨变成了一块化石。2001年,法国-乍得古人类学联合考古队的队员阿温塔?蒂姆都玛贝(Ahounta Djimdoumalbaye)在乍得北部的朱布拉沙漠(Djurab Desert)发现了这块化石。2002年7月10日,在关于这块化石的论文即将在《自然》杂志上发表的前一天,乍得总统将这块化石取名为图迈(Touma?)—出自当地戈兰游牧部落的语言,意思是“生命的希望”。
如果将这颗头骨化石正对前方,面部垂直,那么它的大脑颅底与脊髓衔接的枕骨大孔刚好垂直向下,这表明头垂直位于脊柱上,古生物学家据此判断它的主人已经习惯两腿直立行走。这是区别人和猿的关键特征。
在图迈生活的年代过去600多万年之后,距今大约7000多年前,在长江和黄河之间的中原大地上,生活着另一群人。他们将丹顶鹤的翅骨做成笛子,起初可能是为了发出声音吸引猎物,后来逐渐当作乐器,吹出各种旋律。1984年,在河南舞阳的贾湖遗址中,河南省文物考古研究所考古研究员张居中发现了一支骨笛,在之后的几年中,考古人员又发现了几十支骨笛。同样是在贾湖遗址中,考古人员还发现一些刻有符号的龟甲和骨头,这些符号看起来是象形文字,有的看似眼睛的“目”字,有的与“日”字很像。
公元前3500年左右,在两河流域的美索不达米亚地区(今伊拉克南部),生活着一群黑头发的人,他们称自己为“黑头人”。他们发明了楔形文字,写在黏土片上。他们用丰富的词汇来表达运河、堤坝、水库这些对他们生活很重要的概念。他们还用文字记录生活、传递思想。他们被称为苏美尔人,至今已发现的苏美尔文文献已有数万篇,内容有信件、法律文献、赞美歌等。
大约在公元前3400年,古埃及也有了完整的象形文字系统。
公元前约1400年,中国的文字逐渐系统化。人们有时把文字刻在龟甲或兽骨上,有时把文字铭刻或铸造在青铜器上,它们后来分别被称为甲骨文和金文。
文字的力量是巨大的。有了文字后,人类可以书写自己的思想,人与人之间可以通过文字进行跨越时空的交流,先进的技术和伟大的思想可以得到更广泛的传播。可以说,文字是第一种可以清晰记录和广泛传播人类思想的载体。
文字出现后,人类文明的发展速度大大加快,人口的数量也随之增长,人与人之间的矛盾和纷争也日益复杂化。
文字的进步意义不容置疑,但文字作为人类语言的一种书面形式,也有着与生俱来的不足,那就是可能有歧义,特别是当出现纠纷时,不同人出于不同的目的,可能做出不同的解释。被称为“通才”的德国哲学家和数学家莱布尼茨(1646—1716)曾反复思考这个问题。虽然有很多头衔,但莱布尼茨的主要职业是律师。1661年,15岁的莱布尼茨进入莱比锡大学学习法律专业,两年后便获得学士学位。1666年,获得博士学位的莱布尼茨放弃学校的教职,到美茵茨(德国莱茵兰-普法尔茨州的首府和最大城市)的高等法庭工作。从此,莱布尼茨一边从事律师工作,一边钻研自己喜爱的数学和哲学问题。莱布尼茨持续努力的一个重要方向是开发一套更好的表达方法。为此,莱布尼茨在1677年发现了微积分基本定理。但他仍继续寻找,莱布尼茨说:“如果能找到合适的字符或符号清晰且准确地表达我们的思想,就像算术里表达数字、几何里表达直线那样,那么很明显,我们就可以用算术和几何领域的方法来处理所有事情。”
1679年,莱布尼茨发明了二进制算术。在深入思索二进制表达方法后,莱布尼茨惊喜万分,他认为自己找到一种可以完美表达一切的简单方式,并且这种方式是可以计算的,便于使用机械来实现。莱布尼茨写信给在中国的法国传教士白晋,希望白晋把自己的发明介绍给中国的皇帝。1701年11月14日,白晋回信给莱布尼茨,告诉莱布尼茨中国已经有一套二进制系统,称为“八卦”,白晋还在回信中详细介绍了《周易》。
1703年,莱布尼茨把自己关于二进制算术的思考以及对《周易》的理解写成一篇论文,提交给了巴黎科学院(Paris Academy of Sciences),这篇论文的主标题是“二进制算术解说”,副标题是“关于仅使用字符0和1的二进制算术的阐释,并说明其对理解中国古代神话人物伏羲的意义”。
莱布尼茨认为二进制数是一种可以表达世界的万能方式,有了这种精确的表达方式后,在面对纠纷时,便可以通过计算来消除分歧。在写于1685年的《发现的艺术》(The Art of Discovery)一文中,莱布尼茨说:“精炼我们推理的唯一方式是使它们同数学一样切实,这样我们就能一眼找出我们的错误,并且在有争议时,我们就可以简单地说,让我们来计算吧,不需要无谓地纠缠,就能看出谁是正确的。”
在莱布尼茨去世100多年后,英国数学家巴贝奇(1791—1871)设计出一种机器,称为分析引擎。巴贝奇用穿孔卡片记录由0和1组成的二进制数,并专门设计了一类卡片,用来表达指令,通过组合不同的指令即可实现不同的计算任务。有了这种方法,人们就可以用一串串的指令表达自己的思想和智慧。如今,我们把这种表达方式称为“软件”。
在巴贝奇去世60多年后,另一位英国人图灵(1912—1954)发表了一篇伟大的论文。在这篇论文中,图灵设计了一台通用的机器。一条长长的纸带穿过这台机器,纸带上有要计算的二进制数。这台机器可以从指令表中获取指令,然后执行。这台机器后来被称为“图灵机”。
在图灵的这篇伟大论文发表后的第10年,匈牙利裔美国数学家冯?诺依曼设计了一套实现图灵机的方案,他将图灵机分解为中央算术(CA)单元、中央控制(CC)单元、内存(M)、输入(I)和输出(O)共5大部分。冯?诺依曼设计的数字化自动计算系统成稿后,成为指导自动计算技术的一份纲领性文件。不久之后,按照冯?诺依曼的设计生产的机器便在英国和美国出现了,而且数量不断增多。逐渐地,这些机器有了一个共同的名字—计算机,它们所遵守的设计架构被称为冯?诺依曼架构。
如今,我们每天的工作和生活已经离不开计算了:上班坐地铁时,通过“计算”进站,过一会儿通过“计算”付费出站;到了单位后,很多工作需要依赖“计算”完成;周末外出时,通过“计算”确定最佳路线,通过“计算”寻找好评多的餐馆就餐。
这些不同形式的计算都具有相同的本质,它们都使用莱布尼茨青睐的二进制形式表达信息。它们的基本原理都是巴贝奇开创并由图灵抽象化的图灵机模型,通过不停获取和执行指令来实现各种功能。从组成结构的角度看,它们采用的都是冯?诺依曼架构。
如果把图迈看作人类历史的开端,把契刻符号看作人类文字的起点,把巴贝奇发明分析引擎看作人类拥有计算机和软件的起点,把冯?诺依曼架构看作现代计算机规模化生产的起点,然后把人类历史的这几个关键节点标注在一条一米长的坐标轴上,那么文字历史的长度只有0.1毫米,计算机和软件历史的长度只有2.68微米,现代计算机历史的长度只有1.08微米。在长达700万年的人类历史中,大部分时间是没有文字的;而在有文字的历史中,大部分时间是没有计算机和软件的。
诚然,计算机和软件的历史很短,但它们对人类的生产和生活已经产生了巨大的影响,并且影响还在继续。
与人类此前发明的其他机器一旦完成就拥有确定的功能不同,计算机的功能是由软件赋予的。如果没有软件,那么单独的硬件就无法工作,没有任何实用功能。但是一旦为计算机设计好软件,计算机就会按照软件的指示来工作,具有软件赋予的功能,并且只要换上不同的软件,就会具有不同的功能。正如巴贝奇的学生埃达所言:“分析引擎根本不会自诩生下来就能做多少工作,但分析引擎能够做我们知道如何让它去做的任何事情。”埃达是大诗人拜伦的女儿,她是深刻思考软件的第一人。埃达不仅预见到软件的无限潜能和光辉前景,并且还用诗一般的文字将其描绘了出来。
从这个意义上说,软件是计算机系统的灵魂,是关键所在。虽然本书不可避免地涉及计算机硬件的发展历史,但主角仍然是软件。
软件不是一朝一夕就发明出来的,而是人类文明长期积累的结果。没有这些基本的积累,软件之梦就是空中楼阁。在某种程度上,软件的历史是人类历史的延续。人类很早就有“自动计算”的梦想,如果从伏羲设计最早的二进制系统算起,那么这个梦想出现的时间比文字出现的时间还要早。从这个意义上讲,完整的软件史几乎就是人类的文明史,跨越数千年。这个过程犹如一场漫长的接力跑,很多人参加了前面的接力跑,但他们没能看到抵达终点的那一刻。从漫长的历史长河中找到曾参加“软件接力跑”的那些人,把他们参跑时的精彩表现以及所做所想记录下来,让他们的贡献随着软件文明的发展被照得越来越亮,而不是日渐暗淡和泯灭,这是激发我写这本书的原因,也是激励我完成本书的力量,更代表本书的选材原则。本书记录的是那些冲锋陷阵、舍我其谁的场上运动员而不是围观者。本书的主角是那些开路的英雄和拓荒者。
软件不是一朝一夕就发明出来的,而是人类文明长期积累的结果。没有这些积累,软件之梦就是空中楼阁。在某种程度上,软件的历史就是人类历史的延续。人类很早就有“自动计算”的梦想,如果从伏羲运用*早的二进制系统算起,那么这个梦想出现的时间比文字出现的时间还要早。从这个意义上讲,完整的一部软件史几乎就是人类的文明史,跨越数千年。这个过程犹如一场漫长的接力跑,无数先驱参加了这场接力跑。从漫长的历史长河中找到曾参加“软件接力跑”的那些人,把他们参跑时的精彩表现以及所做所想记录下来既是激发作者写作的力量,也是本书的选材原则。本书的主角是那些开路的英雄和拓荒者。
多年前在写《软件调试》时,我就曾写邮件联系过Windows NT项目的组建人大卫?卡特勒,询问有关NT内核的技术问题,我没有收到回复。2021年8月,当我写到本书的第五篇时,我再次联系卡特勒,我收到了他在休假前设置的自动回复。过了大约一个月,某天早晨,我的手机屏幕上出现一个新邮件提醒,主题是“VMS and NT”,我眼前一亮,打开邮件仔细看,是卡特勒本人的回复。从那天起,卡特勒毫不厌烦地回复了我的每一封邮件,每个问题都回答得很详细,而且几乎都是在一天之内回复的。我从读大学时就开始编写Windows程序,走上职业程序员的道路后,我仍经常在Windows系统上做各种开发,因此对NT内核有很深的感情,我对有“NT内核之父”美誉的卡特勒十分仰慕和敬重。因此,卡特勒的邮件除了解决我对VMS和NT项目的疑问之外,还一次次地给予我激励和力量。他比我年长30岁,今年已经80岁高龄,但仍在编写代码和工作。
另一位让我特别感动的采访对象是“自由软件之父”理查德?马修?斯托尔曼。斯托尔曼除回答我的问题之外,他还专门请他的中国朋友审阅了我的草稿,他们一起提出了很多修改意见。值得一提的是,针对自由软件基金会的最初办公地址问题,斯托尔曼接连给我写了3封邮件,担心我误解他的意思。另外,斯托尔曼还很爽快地允许我在本书中使用我从他的相册中挑选的照片,他还向我说明了拍摄地点。
我和“C 之父”比亚尼?斯特劳斯特鲁普见过很多次面,我面对面地向他请教了很多问题,是他最早为我指出很多历史藏在“摩尔学院”,比亚尼的这个建议对本书的结构产生了很大的影响。在写第61章时,我和他来回发了很多封邮件,他的帮助让我对1980—1990年的剑桥大学和贝尔实验室有了更全面的了解。
在写第51章时,我发现了杰拉德?J.霍尔茨曼(Gerard J. Holzmann)的个人网站,上面关于贝尔实验室的回忆文章鲜活生动、细致入微,让我获益匪浅。我尝试联系杰拉德,很快就收到了他的回复。在接下来近一个月的时间里,我们之间往来邮件十几封,他不仅解答了我的很多疑问,确认了“UNIX房间”的位置,而且提供了很多新资料,包括宝贵的贝尔实验室电话簿,上面不仅有组织结构信息,还有我很想看到的每个人的办公室编号。
关于UNIX操作系统的历史,给我提供很大帮助的另一个人是曾与里奇和汤姆森一起设计文件系统的拉德?卡纳迪(Rudd Canaday),他讲述的“午餐工作会”让我对UNIX操作系统的早期开发有了身临其境的感觉。
我在写《软件调试》时就曾多次联系杰克?丹尼斯(Jack Dennis),他专门写了一篇长达几页的文章讲述自己使用旋风计算机的经历,以及MIT的精英们在TX-0计算机上大显身手开发各种软件的经过。我写本书的前身《栈上风云》时,调查有关“栈”的历史,他又给了我很多指导。
IBM是大型机时代的最大赢家,同时也是软件文明的贡献者之一。IBM对编程语言、操作系统和关系数据库都有开创性贡献。为了咨询FORTRAN团队合影的版权问题,我联系了曾在IBM工作过的保罗?麦克琼斯(Paul McJones),他很快就回复了邮件,并且帮助我识别和标注了照片上的人物。写第53章时,我阅读了很多他写的回忆文章,特别是SQL团队1995年重聚的会议记录。我多次联系他,他都热情地解答我的疑问,对于有些问题,他还写邮件给当年的团队成员,找到答案后再转给我。特别是,他欣然同意我使用他怀念约翰?巴克斯的文章作为本书的序言之一,他还向我提供了多张珍贵的照片,包括Cal TSS团队重聚的照片以及IBM圣何塞研究院在20世纪60年代的宝贵照片,因为IBM圣何塞研究院已经迁往新址,原来的建筑被全部拆除,所以这张照片特别珍贵。
另外,我还要感谢剑桥大学计算机实验室的西蒙?摩尔(Simon Moore)教授、纽卡斯尔大学的布莱恩?兰德尔(Brian Randell)教授以及纪录片《计算机》的导演凯西?克莱曼(Kathy Kleiman)。
评论
还没有评论。