打字猴:1.700436894e+09
1700436894
1700436895
1700436896
1700436897 图5-11 Pic绘图语言(输入和输出)
1700436898
1700436899 5.图书出版
1700436900
1700436901
1700436902
1700436903
1700436904
1700436905 文档编制工具之所以能很好地发挥作用,原因之一是普适性强:它们被广泛应用在手册、技术文件、书籍等出版物上。代码作者们的办公室在同一条走廊上,如果程序有缺陷或者工作不顺畅,就会有强大压力来推动他们修复问题,并在必要时增加功能。当然,这不仅仅适用于文档编制软件。我们都是自己软件的用户,这给了我们改进软件的真正动力。
1700436906
1700436907 计算科学研究中心的成员在20世纪70年代和80年代写出了特别多有影响力的图书,远超人们对一个工业研究实验室的预期。因此,经过一段时间后,贝尔实验室成为著名的计算和计算机科学权威书籍的来源。
1700436908
1700436909 阿尔·阿霍写了几本广泛使用的课本,包括1977年与杰夫·厄尔曼合写的名作“龙书”《编译原理》(Principles of Compiler Design)(图5-12),还有与杰夫及约翰·霍普克罗夫特(John Hopcroft)合写的《计算机算法的设计与分析》(Design and Analysis of Computer Algorithms)。本贾尼·斯特劳斯特鲁普(图5-13)在20世纪80年代创造了C++,几年后写了几本C++书。乔恩·本特利在《ACM通讯》上的专栏文章结集成《编程珠玑》(Programming Pearls)一书。数学中心的迈克·加里(Mike Garey)和戴维·约翰逊(David Johnson)用Troff和Eqn为他们的大作《计算机和难解性:NP完全性理论导引》 (Computers and Intractability: A Guide to the Theory of NP Completeness)排版。我们也以图书形式出版了Unix 和Plan 9的用户手册,诸如此类。这些出版物成为好几代程序员和计算机科学专业学生的标准教材和参考书。
1700436910
1700436911
1700436912
1700436913
1700436914 图5-12 阿霍与厄尔曼的“龙书”, 第1版,1977年
1700436915
1700436916
1700436917
1700436918
1700436919 图5-13 本贾尼·斯特劳斯特鲁普, 约1984年(本贾尼·斯特劳斯特鲁普供图)
1700436920
1700436921 这群来自工业界的相对少量的研究人员何以能写出这么多有影响力的书?
1700436922
1700436923 以我之见,有那么几个原因。首先,人们认真对待写作,殚精竭虑。对于其他人的作品来说,他们也是了不起的审读者。道格·麦基尔罗伊是这群人中的魁首。无论什么主题,道格都能发现别人发现不了的错误(有细微错误也有关键错误),别人都没有他那种如炬的眼光。我在贝尔实验室时,无论写了什么都会请道格点评,而他总是如我所请。当他撕裂我的文字时,我感到很惭愧,但这使我成为更好的写作者,同样的事情也发生在其他人身上。
1700436924
1700436925 当然,道格并不是唯一的审读者。每个人都慷慨奉献出自己的时间,对同事写的东西不吝给出意见,这不过是文化使然。在其他地方这种情况并不常见,所以贝尔实验室才能那么伟大。
1700436926
1700436927 其次,管理层支持图书写作。出版物,包括图书在内,对于维护贝尔实验室在科学界和学术界的声誉非常重要。在管理层的支持下,员工可以全身心地投入到图书写作中。这种全力以赴6个月足以基本完成的工作,如果只是业余或在晚上来做,可能需要数年时间。虽然贝尔实验室保留了书籍的版权,但作者可以获得版税,这就更有推动力了。我想我们中没有人是为了赚钱而写书的——实验室没人会蠢到以为写技术书有利可图,但如果图书取得了些许成功,作者就能拿到这笔钱。
1700436928
1700436929 开明的管理方式和公司策略鼓励人们写作。从长远来看,公司和作者都获得了回报。贝尔实验室作者的出版物也有助于吸纳人才。
1700436930
1700436931 贝尔实验室并不是什么神秘的机密机构,学生们知道,他们使用的软件和教材来源于这里。潜在的新员工可以看到好作品正在被研究和发表,他们不必担心自己泯然于“工业”研究实验室里。这使贝尔实验室拥有与高校同等的招聘优势。而且,人们可以在实验室全职从事研究工作,不必像在高校那样分心于教学、管理和资金筹集。伟大的软件结合有影响力的书籍,是当时实验室如此成功的重要原因。
1700436932
1700436933 第三个因素比较技术性:作为编程环境的C语言和Unix,作为科研部门的文档编写,作为主要活动的计算机技术主题写作,三者之间存在共生关系。这是从道格·麦基尔罗伊的Roff、乔·奥桑纳的Nroff和Troff等文本格式化程序开始的,然后是Eqn、Tbl等预处理程序。有了这些工具,更加容易制作包含数学符号、表格、图片、图表、图等不易排版内容的文档。这反过来又催生了更好的写作,因为所有这些文档编制程序都有个重要特点:可以借助它们轻易地反复修改文档,并始终有一份整洁的副本,而不必经历将材料交给打字员然后等上好几天这种痛苦而缓慢的过程。
1700436934
1700436935 这可能听起来没什么了不起,但我确信,能够如此轻松地进行修改,写作就更加出色,因为制作最新书版的开销几乎完全消除了,而且完全摈弃了打字员、编辑和打印机等中间环节。技术文档和Unix程序员手册看重准确性,但书籍更看重整个过程的控制。对于编程书籍来说,程序直接用源代码排版至关重要,这样我们就可以确定打印出来的东西是正确的,没有被人为干预无意中改变。
1700436936
1700436937 当然,这些工具都用C语言编写,因为C语言表达力强,效率高。也许,今天不会有很多人记得,当机器容量以千字节而不是千兆字节为单位时,时间和空间的利用效率乃是重中之重。每个字节都得斟酌使用,所以在某种程度上,每条指令也得再三推敲,因此,一种能在这两方面都节约的语言不仅优秀,而且是实际需要。
1700436938
1700436939 本书使用上述文档编制工具的衍生程序制作,形成了圆满的闭环。本书还用了詹姆斯·克拉克(James Clark)编写的Groff、Geqn等出色的新实现和增强功能。
1700436940
1700436941
1700436942
1700436943
[ 上一页 ]  [ :1.700436894e+09 ]  [ 下一页 ]