读UNIX传奇:历史与回忆05第7版(下)

1. 图书出版
1.1. 文档编制工具之所以能很好地发挥作用,原因之一是普适性强:它们被广泛应用在手册、技术文件、书籍等出版物上
1.2. 贝尔实验室成为著名的计算和计算机科学权威书籍的来源
1.3. 人们认真对待写作,殚精竭虑
1.4. 管理层支持图书写作
-
1.4.1. 出版物,包括图书在内,对于维护贝尔实验室在科学界和学术界的声誉非常重要
-
1.4.2. 在管理层的支持下,员工可以全身心地投入到图书写作中。这种全力以赴6个月足以基本完成的工作,如果只是业余或在晚上来做,可能需要数年时间
-
1.4.3. 贝尔实验室保留了书籍的版权,但作者可以获得版税,这就更有推动力了
-
1.4.4. 开明的管理方式和公司策略鼓励人们写作
-
1.4.5. 从长远来看,公司和作者都获得了回报
-
1.4.6. 贝尔实验室作者的出版物也有助于吸纳人才
-
1.4.7. 人们可以在实验室全职从事研究工作,不必像在高校那样分心于教学、管理和资金筹集
-
1.4.8. 伟大的软件结合有影响力的书籍,是当时实验室如此成功的重要原因
1.5. 比较技术性:作为编程环境的C语言和Unix,作为科研部门的文档编写,作为主要活动的计算机技术主题写作,三者之间存在共生关系
2. sed
2.1. Unix文件系统的主要简化之一是将文件统统看作为未经解释的字节序列
- 2.1.1. 没有记录,没有必需或禁止的字符,也没有文件系统强加的内部结构,只有字节
2.2. 文本文件只是字节序列,恰好是ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)中的字符
2.3. 统一的纯文本视角天然适合于管道
2.4. Unix工具箱中装满了读取文本输入、对其进行处理并输出文本的程序
2.5. grep和gres都是sed的特例
2.6. sed在shell脚本中经常被用于以某种方式转换数据流:替换字符,添加或删除不需要的空格,或丢弃不需要的东西
3. awk
3.1. grep和sed都不能处理数字数据或进行计算,grep也不能处理多行文本,这类运算仍然需要C语言程序
3.2. awk程序是模式和动作的序列
-
3.2.1. 每行输入都要测试所有模式,如果模式匹配,则执行相应动作
-
3.2.2. 模式可以是正则表达式,也可以是数字或者字符串关系
-
3.2.3. 不指定模式就会匹配所有行,不指定动作则会输出匹配行
3.3. awk支持数字或字符串变量,以及下标为数字或任意字符串的关联数组
3.4. 虽然Perl和稍后的Python接管了许多潜在应用场景,但awk今天仍然被广泛使用
3.5. 它是一个核心工具,至少有四五种独立实现,包括阿诺德·罗宾斯的Gawk和迈克尔·布伦南(Michael Brennan)的Mawk
4. 其他语言
4.1. Unix编程环境及其语言开发工具、丰富的潜在应用领域,当然还有精通编译器、编程语言理论和算法的组内专家,推动了其他语言的设计和实现
4.2. 真正的经验是,拥有了广泛的兴趣、语言专业知识以及像Yacc和Lex这样的工具,中心成员能够相对容易地为新应用领域创造新语言
4.3. C++
-
4.3.1. C++的最初版本Cfront,更准确的描述是C语言的面向对象的预处理器,最终演变成了C++
-
4.3.2. 随着功能被吸收到下游处理环节中,预处理器最终消失了,就像C++那样
-
4.3.3. 它始于1979年,当时本贾尼·斯特劳斯特鲁普刚从剑桥大学获得博士学位,加入1127中心
-
4.3.4. 1983年,它得名C++,这是里克·马希蒂(Rick Mascitti)形容C++增量运算符的双关语
-
4.3.5. 如今,C++是最广泛使用的编程语言之一,是微软Office套件和谷歌基础架构的重要组成部分,也是你最喜欢的浏览器、许多视频游戏和其他幕后软件的核心
-
4.3.6. 让C++成为C语言的超集是合理的工程和市场决策,尽管这需要容忍C语言许多语法和语义上的粗糙之处
4.4. f2c的功能是将Fortran翻译成C语言,从而使得在没有Fortran编译器或Fortran编译器索价过高的系统上使用Fortran成为可能
4.5. Pico是模式-动作语言的另一个例子
4.6. 基于专用语言的专业工具Spin,用于分析和检查涉及独立通信进程的软件系统
4.7. AMPL可以很容易地定义用于描述特定优化问题的模型,如给定运输成本、每间商店的预期销售额、每家工厂的生产能力等数据,寻找将货物从工厂运到商店的最佳方式
- 4.7.1. AMPL也许是唯一广泛使用的源自1127中心的专有语言
4.8. Newsqueak的概念最终融入Plan 9中使用的并发语言Limbo和Alef,10年后又为Go语言所采纳
- 4.8.1. Go语言由罗布·派克、肯·汤普森和罗伯特·格里塞默于2008年在谷歌公司创建
5. 其他贡献
5.1. 科学计算
-
5.1.1. 贝尔实验室符合人们对科研机构的期许,很早就参与了利用计算机对物理系统及处理进行建模和仿真的工作,这是数学研究的自然延伸
-
5.1.2. 研究工作聚焦在数值线性代数、微分方程和积分方程、函数逼近和包含已知最佳解法的可被广泛使用的数学函数库
-
5.1.3. 菲利斯·福克斯(Phyllis Fox)是这类数值计算的先驱,也是为Fortran程序员开发的PORT库的主要贡献者
-
5.1.4. PORT为在不同计算机上可能有差异的数值范围定义了与特定机器相关的常量,它保证了Fortran代码能够移植到不同类型的计算机上
-
5.1.5. PORT库是个大项目,最终产出1500个程序文件,13万行Fortran代码,还有大量文档
5.2. UUCP
-
5.2.1. 即Unix到Unix的拷贝程序(Unix to Unix copy program)
-
5.2.2. 用于在Unix系统之间(一般通过普通电话线)传送文件
-
5.2.3. UUCP主要用于软件发布,但早在互联网普及之前,它也是远程命令执行、邮件传输和新闻组的基础
-
5.2.4. Usenet是最早的世界性信息发布系统之一,它就建立在UUCP基础之上
-
5.2.5. 第一个UUCP发行版包含在Unix第7版中
-
5.2.5.1. 在接下来的几年里,它得到改进,被移植到其他操作系统上,并且开源了
-
5.2.6. 随着互联网成为标准通信网络,其协议后来居上,UUCP“寿终正寝”
5.3. 安全
-
5.3.1. 兴趣部分来自Multics,部分来自密码学方面的经验
-
5.3.2. Unix文件系统使用9个权限位来控制文件访问。文件的所有者有3个权限位,分别控制读访问、写访问和执行访问
-
5.3.3. 对于所有者来说,通常允许读和写普通的文本文件,而执行则不允许,除非该文件是可执行程序或shell脚本
-
5.3.4. 还有3个权限位用于所有者的组,大概类似于部门、项目与成员的关系,或教职工与学生的关系
-
5.3.5. 最后3个权限位适用于所有其他用户
-
5.3.6. setuid程序的编写和管理必须小心翼翼,如果不小心,就会严重危害系统安全
-
5.3.6.1. setuid由丹尼斯·里奇发明,他在1979年获得了专利
5.4. 硬件
-
5.4.1. 软件研发是1127中心的主要工作,但硬件方面的兴趣也得到了充分体现
-
5.4.2. 20世纪80年代初,巴特使用CAD工具设计制造了一套位图终端
-
5.4.3. RISC是Reduced Instruction Set Computer(精简指令集计算机)的缩写,是一种能设计出比VAX-11/780之类机器更简单、更规则的处理器架构的方式
-
5.4.4. CRISP的目标是做出契合C语言编译器输出的指令集
-
5.4.5. 尽管CRISP本身并没有在商业上取得成功,但Unix和C语言在20世纪80年代和90年代对计算硬件产生了巨大影响
浙公网安备 33010602011771号