1700437068
1700437069
1700437070
1700437071
图5-17 杰勒德·霍尔兹曼,使用Pico转换而成
1700437072
1700437073
杰勒德还创造了基于专用语言的专业工具Spin,用于分析和检查涉及独立通信进程的软件系统。Spin可以验证某个系统在逻辑上是否正确,有没有死锁、停顿之类缺陷。(“你先请。”“不,你先请。”)Spin是1127中心研究如何呈现独立进程随着时间推移相互作用的范例,也体现了一流的软件工程如何做出易于使用、运行速度足够快的系统。Spin模型是用另一种叫作Promela(protocol metalanguage,意为“协议元语言”)的特殊用途语言编写。Promela也是用Yacc实现的。
1700437074
1700437075
Spin仍在蓬勃发展,它已安装到数千台设备上,还举办用户年度会议。它被用于验证大量的系统,覆盖从硬件设计到铁路信号协议的各种场景。
1700437076
1700437077
鲍勃·福勒(Bob Fourer)、戴夫·盖伊和我设计并实现了AMPL,这是一种像线性规划那样定义优化问题的语言。鲍勃是美国西北大学的管理科学和运筹学教授,长期以来一直致力于帮助人们创建数学优化模型。我们关于AMPL的工作始于1984年他来实验室休研究假的时候。
1700437078
1700437079
AMPL可以很容易地定义用于描述特定优化问题的模型,如给定运输成本、每间商店的预期销售额、每家工厂的生产能力等数据,寻找将货物从工厂运到商店的最佳方式。优化问题用代数符号写成,描述必须满足的约束条件系统,和要最大化或最小化的目标函数。
1700437080
1700437081
类似这样的优化问题触及许多行业的业务核心:航空公司机组调度,制造、运输和配送,库存控制,广告投放以及其他各种大量应用。
1700437082
1700437083
我用C++写了最初的AMPL实现,还用到Yacc语法和(我想)用于词法分析的Lex。这是我写的第一个正经C++程序,不过我很快就把代码移交给了戴夫·盖伊。
1700437084
1700437085
AMPL也许是唯一广泛使用的源自1127中心的专有语言。(语言本身不受版权保护,但据我所知,目前还没有开源的实现。)AT&T在AMPL创建几年后就开始向其他公司授权。戴夫和我从贝尔实验室退休后,我们3个人成立了一家小公司,专注AMPL优化,继续AMPL的开发和营销。最终,我们从贝尔实验室购买了产权,这样我们就可以走自己的路。公司规模仍然很小,但在其利基市场上是重要玩家。
1700437086
1700437087
20世纪80年代初,罗布·派克(图5-18)和卢卡·卡德利(Luca Cardelli)试验了为并发设计的语言,这种语言尤其关注与鼠标和键盘等输入设备的交互,因此得名Squeak[16](以及后来的Newsqueak)。Newsqueak的概念最终融入Plan 9中使用的并发语言Limbo和Alef,10年后又为Go语言所采纳。Go语言由罗布·派克、肯·汤普森和罗伯特·格里塞默于2008年在谷歌公司创建。
1700437088
1700437089
1700437090
1700437091
1700437092
图5-18 罗布·派克,约1981年(杰勒德·霍尔兹曼供图)
1700437093
1700437094
1700437095
1700437096
1700437098
UNIX传奇:历史与回忆 5.6 其他贡献
1700437099
1700437100
到目前为止,本章大部分内容强调系统软件,特别是语言,因为这是我最了解的。但我还该提及科学计算、通信、安全和硬件方面的一些重要活动,因为它们往往颇具影响力。当然也都有大量的软件成分,但并不全都整齐划一地落在Unix第7版的时间范围内。
1700437101
1700437102
1.科学计算
1700437103
1700437104
1700437105
1700437106
1700437107
1700437108
贝尔实验室符合人们对科研机构的期许,很早就参与了利用计算机对物理系统及处理进行建模和仿真的工作,这是数学研究的自然延伸。这也验证了迪克·汉明关于计算将取代实验室的预言。研究工作聚焦在数值线性代数、微分方程和积分方程、函数逼近和包含已知最佳解法的可被广泛使用的数学函数库。
1700437109
1700437110
菲利斯·福克斯(Phyllis Fox)是这类数值计算的先驱,也是为Fortran程序员开发的PORT库的主要贡献者。PORT为在不同计算机上可能有差异的数值范围定义了与特定机器相关的常量,它保证了Fortran代码能够移植到不同类型的计算机上。
1700437111
1700437112
PORT库是个大项目,最终产出1500个程序文件,13万行Fortran代码,还有大量文档。芭芭拉·赖德(Barbara Ryder)和斯图·费尔德曼开发了Fortran编译器PFORT,用于检查Fortran代码是否是用标准Fortran的可移植子集编写的。诺姆·史莱尔(Norm Schryer)编写了检查计算机算术运算的程序,因为不同计算机的浮点运算方式往往相差甚远。这项工作尤为重要,因为当时浮点行为标准还未制定。
1700437113
1700437114
埃里克·格罗斯(Eric Grosse)和比尔·库格伦(Bill Coughran)开发了半导体建模及仿真、电路分析和可视化的算法,主要用于半导体设计和制造。贝尔实验室开发的许多数值软件通过Netlib数学软件库在全球范围内发布,至今仍被科学计算界广泛使用。对Netlib和更大的社区做出重大贡献的其他数值分析家还有戴夫·盖伊、琳达·考夫曼(Linda Kaufman)和玛格丽特·莱特(Margaret Wright)等。
1700437115
1700437116
2. AT&T的800号码目录
1700437117
[
上一页 ]
[ :1.700437068e+09 ]
[
下一页 ]