人类优秀软件排行
哪些软件具备伟大软件的品质?人类有史以来最伟大软件排行榜揭示了12款软件的伟大之处。
《信息周刊》网络版
Charles Babcock 2007-1-12
如果问截至目前哪款软件最棒,大多数技术专家会很快给出答案。但若是花些时间仔细研究那些催生出真正杰出软件的因素,答案就不那么显而易见了。
我所知道的一个极其重要的程序体甚至不是软件。二战期间,在英国人研制出破译德军电报密码的“巨人机”(Colossus)之前,盟军得用6个小时破解密码,而仔细分析情报、得出准确结论再将信息转给军事指挥部得耗费一天或更多时间。在巨人机的帮助下,盟军及时掌握了德军在英吉利海峡沿岸的活动情况,这一情报给了德怀特·艾森豪威尔(Dwight Eisenhower)将军取胜的信心,后者踌躇满志地发动了诺曼底登陆战役。
巨人机建于1944年,它能在纸质数据带上进行布尔运算。这台机器每小时可“吐”出30英里的数据带。布尔算法的逻辑和这台设备融合在一起。巨人机本身也许是有史以来无法被记录下来的最伟大的软件。
那么这一史实说明什么问题?首先,我们评价伟大软件得有统一标准:应该只在特定历史背景下评判相关软件。伟大软件必须体现出突破性价值、具备很强的技术优势;研发它是前人未尝试过的艰难任务;而且最终它必须在现实世界得到广泛运用。巨人机将旷日持久的机械运算转变为电子运算——它是现代计算机雏形—并通过提高破译加密电报码速度为军方提供有价值服务。这个庞然大物为软件发展史翻开了第一页。
另外一款伟大程序就是国际商业机器公司(IBM)的360系统。它诞生于1964年,是世界上第一款通用型电脑操作系统。在弗雷德利克·布鲁克斯(Frederick Brooks)描述360系统项目开发和管理的著作《人/月神话》[阿狄森·卫斯理专业出版社,1995。编者注:书名中“人/月”是软件开发领域术语,是指一个组织于单位时间内(一个月)开发程序所需的人力资源]中,他率先提出许多我们至今恪守的原理——简洁的软件设计优于复杂的;少数熟练程序员能比一大群熟练程序员取得更多成就等。早在360项目启动前,布鲁克斯就清楚大型软件研发项目中存在太多容易出错的因素。实际上,他是IBM内部360项目的激烈抨击者——尽管最终由他来主导360系统的研发工作。布鲁克斯认为可能导致项目失败的潜在问题有很多。我猜,这是IBM让他来负责这个项目的原因。
这种做法十分明智。布鲁克斯领导的360系统研发组,创造出全球第一套可同时运行不同应用程序的电脑系统。360系统的问世,促使IBM推出一系列大型主机:从原先的370系列(370 Series)一直发展到如今的z系列(zSeries)。时至今日,这些主机还得落伍地和布鲁克斯的360系统兼容:这让我意识到伟大软件的另外一个品质:它得长久拥有独特优势,无法被轻易取代。(译/爱琳)
人类优秀软件排行(二)
阿波罗飞船导航系统依靠只有8K内存的电脑,帮助飞船成功飞抵月球。
IBM360是最棒的软件之一:没人会否认这点。要是从长远的历史眼光来衡量,何谓“伟大软件”一目了然。然而距离现在越近,你就越难决定哪款软件才能配得上这个称号。
凭借自身洞察力,我排出了一张最伟大软件榜:时间跨度从巨人机诞生的那年到现在。为了制作榜单,我咨询了软件大师詹姆士·兰堡(James Rumbaugh,享誉全球的软件开发方法学大师)、美国计算机学会主席斯图尔特·费尔德曼(Stuart Feldman)、创投资本家安·温布雷德(Ann Winblad)和加里·摩根珊勒(Gary Morgenthaler)、网站脚本软件PHP3.0作者济夫·苏拉斯基(Zeev Suraski)、安迪·古曼兹(Andi Gutmans)和我的弟弟沃利(Wally)。不过这张榜单仍是我个人的榜单。那些觉得榜单充满智慧闪光点、且不失启发意义的人可给我写信。要是你觉得这份榜单有误导之嫌、令人反感或蓄意罔顾事实,请发送消息给沃利,他身高6英尺3英寸,曾是篮球明星,至今仍十分健壮。
我一直对阿波罗飞船(Apollo Spacecraft)的导航系统惊叹不已,该系统是麻省理工学院(MIT)的仪器实验室编写的。1969年,这套系统令阿波罗成功飞抵月球、分离出登月舱并使之成功登陆月球表面,最终使3名宇航员平安返回地球。当时这套系统不得不依靠飞船上内存少得可怜的“雷神”(Raytheon)电脑—该设备只有8K内存,如今连个打印机程序都使唤不了。在飞船重返大气层时,万一系统失灵,根本没时间重启系统。谢天谢地,当时没有用视窗(Windows)操作系统来导航。
在经验老道的电脑技术员看来,“阿波罗”飞船导航系统似乎不过是例行软件。如今的飞船所用导航系统要复杂得多。“阿波罗”系统的精髓是基于公认逻辑的若干著名算法。但对我而言,这仍然是最尖端的科技。伟大软件的一个优点就是:在所有环节都可能出错的前提下仍能正常工作,这点让我们至今叹为观止。
对于那些因“阿波罗”空间导航系统设计相对简单,而认定其“不过尔尔”者,请问:你宁愿将生活交由处理移动物体的复杂系统来打理么?例如,还记得当年负责丹佛国际机场(Denver International Airport)分拣和运输行李的BAE自动系统软件吧。当机场在1993年正式启用时,该系统造成的遗失或错发、还有在传送带的检查口堆积的行李是如此之多,以至于有关方面被迫将机场正式启用日期推迟了16个月。这给丹佛市带来的损失高达每天
1,100万美元。
而且,我们的生活已经被这样的软件掌控。美国联邦航空管理局(The Federal Aviation Administration)斥资上亿美元——不是一次而是3次——试图建立一套有效的空中交通管制系统。到目前为止,这套系统有一半的功能已经被弃用,技术成本总值1.44亿美元,而剩下的一半功能也定期出错和停顿。要说谁才是伟大软件,我宁可坚持选择“阿波罗”导航系统。一款被公认成功的软件,得能胜任原先设计时就希望依靠它完成的工作。
这一公理当然也适用于VisiCalc—世界上第一款电子表格软件。之所以称其伟大是它因为展现出个人计算的威力,赋予大大小小的企业分析和处理海量数据的能力。但尽管它体现出一种突破性概念,VisiCalc本身却无法被定义为伟大软件。
那互联网本身是否也担得起这样的赞誉呢?蒂姆·伯纳斯·李(Tim Berners-Lee)创造出一款整合超文本链接、普适的源代码定位器、以及HTML页面显示功能的界面,应该说,它极大地改变了我们这个世界。但网络本身来源于已有的观念,这些都需要倚赖底层的TCP/IP网络协议和BIND(伯克利互联网域名)域名服务器,一款非常底层的软件,它能驱动路由器正常工作。当然网络本身并非伟大软件,但是它的广泛影响的确让它身价倍升。
人类优秀软件排行(三)
在互联网处在襁褓期时,Java横扫整个商业领域。
用户为先
继续往下看。至少从一个方面而言,谷歌公司(Google,下称谷歌)就是伟大软件。网络搜索让谷歌超越Lycos、数字仪器公司(Digital Equipment)的AltaVista和其他搜索引擎。然而谷歌在筛选搜索结果时采用了网页排序(Page-Ranking)的算法,将搜索引擎获取的数以千计的页面进行标记,从而按它们被链接的次数来分等级。“衡量一篇学术论文的价值,得看它被其他论文引用的次数。谷歌将这一传统借用到了互联网上。”摩根珊勒风险投资公司(Morgenthaler Ventures)的摩根珊勒表示。它同时赋予上百万搜索新手一种很有价值的信息构成工具。它就是伟大软件。
我曾认为太阳计算机系统公司(Sun)的Java语言是C语言大家族衍生出来的一种语言,它完善了C语言已有的传统。然而通过反思,现在我知道自己错了。Java在客户端电脑设置虚拟机,从而实现了代码通过网络流传,并且不受硬件环境的限制。Java率先采用起到过渡作用的字节码(Byte Code),它是一种经过预编译的源代码,当它进入客户端电脑的那一刻就能被编译为机器码。Java的可移植性和功能性都很强。Java语言严格限制下载到“沙箱”(Sandbox)里的代码——譬如说,客户端电脑的硬盘被设置成严禁读写。这种“沙箱”让用户没有安全风险方面的后顾之忧,当用户使用微软未经限制的Active X代码时常遭遇此类风险。
由于具备这些基于网络的特性,在互联网处在襁褓期时,Java横扫整个商业领域。微软设计Visual Studio.Net(微软的开发IDE编程环境之一)时拷贝了Java所有的上佳创意。对于Java来说,诞生伊始遭遇激烈竞争、接着被市场接受、进而扩展自己的使用份额:如今这已是成就这款伟大软件的确凿印记。
那么更重视用户体验的应用软件,像桌面出版领域的软件又有怎样的表现呢?奥多比系统公司(Adobe Systems,下称奥多比)的PostScript软件首先使桌面出版成为可能,它能对电脑安装或激光打印机预装的字体和图像进行数字化排版。奥多比对施乐公司(Xerox,下称施乐)在硅谷的研究所—帕洛阿图研究中心(Xerox Palo Alto Research Center)推出的专业排版系统做了简化工作, PostScript成功地将易于上手和操作简洁融于一体,它让桌面出版贴近普通用户。PostScript是款设计得非常优秀的软件,但缺乏足以使其成为伟大软件的技术突破。
说到施乐的帕洛阿图研究中心,苹果公司(Apple,下称苹果)的Macintosh操作系统就建立于该中心推出的阿图系统(Alto System)的基础之上。阿图系统具有全世界首例视窗界面、首个鼠标指针、首项统一标准化的图形用户界面。然而它从未得到商业化的使用。它是在经过苹果的重新设计后才产生巨大影响的。我仍记得我生平第一次心生“这玩意真酷”之感:当时我在纽约州恩迪科特一家狭小的电脑商店里,第一次坐在麦金托什机面前。我能看到它在做什么,但就是难以置信。麦金托什机在用户界面中整合进面向对象计算(Object-Oriented Computing)的威力,从此用户对提高系统性能的要求再也没有停止过。首款Macintosh操作系统的确是伟大软件。
来自“蠕虫” 的警告
融入日常生活并改变我们的技术当然有资格冠以“伟大”的头衔。另一款备选软件就符合这个标准——即便它是软件中的害群之马。1988年,“莫里斯蠕虫”(Morris Worm)肆虐互联网,大举渗入大学服务器并导致无数办公室陷于瘫痪。如今,始作俑者康奈尔大学学生罗伯特·莫里斯(Robert Morris)声称他编写蠕虫程序的目的是为了衡量互联网的规模。结果的确如他所愿。
像大多数软件一样,理论上蠕虫病毒只能在一到两种预先设定的环境下才能发作,但结果却是它生动地展现出网络少有人知的新特征。通过利用Sendmail(一种电子邮件服务器程序)缓冲溢出的漏洞,蠕虫能在服务器之间进行自我复制和散布。当时我们并未意识到在Unix、Sendmail、Finger(Unix系统中用于查询用户情况的实用程序)和其他系统有多少“后门”和安全缺陷。在自我复制同时,蠕虫也不断随机地向服务器发出请求,复制自身。莫里斯承认,他在蠕虫程序里增加了这一特性以确保其能广为散布。他得逞了。
这种入侵无数电脑的蠕虫是一种具突破性的软件。它向人们展示了设计出众的软件如何利用互联网反社会特性而产生的惊人破坏力。人与人的联系因共同面对电脑病毒而得到加强;我们都警醒了。这一切拜莫里斯所赐。事实证明:伟大的蠕虫是无可争议的警卫兵和工作敬业的预报员。它入选伟大软件排行榜,当之无愧。
美国航空公司(American Airlines,下称美国航空)的“赛伯乐”航班查询及订票系统(Sabre System)也很伟大,它正好说明软件的发展如何超越商业战术层面的需求而跃升为战略需要。“赛伯乐”能让旅行社将客户旅行需求和航班进行配对。它排列出的结果还包括美国航空竞争对手的航班。这套系统帮助美国航空和旅行社节省时间和金钱,并帮助该航空公司不动声色地攫取市场份额。美国航空发现:通过使本公司航班号占据搜索显示屏上的较高位置,客户会更频繁地选择自己的航班。所以它擅自窜改“赛伯乐”程序让自己的航班优先出现在搜索结果上,还美其名曰“显示屏科学”。但美国政府却斥之为“显示屏偏见”并禁止此类行径。“赛伯乐”系统事件昭示了两大议题:商业策略和商业偏见。互联网出现后,搜寻航班就宛如Travelocity(编者注:全美大型旅游网站)的客户自助服务一样简便。而通用型的搜索引擎能根据搜索结果排列的位置让广告主付费。(译/爱琳)
人类优秀软件排行(四)
伟大软件榜的探花是美国基因组研究所的基因测序软件,榜眼则是IBM的R系统。
那我该怎样排列伟大软件12强呢?按降序我列表于下(未列出第一、第二和第三名):
12. 莫里斯蠕虫病毒(The Morris Worm)
11. 谷歌的网页搜索及排名算法(Google Search Rank)
10. 阿波罗飞船的导航系统(Apollo Guidance System)
9. 电子表格软件Excel(Spreadsheet Excel)
8. 麦金托什机操作系统(Macintosh OS)
7. 赛伯乐航班查询及订票系统(Sabre System)
6. Mosaic网络浏览器(Mosaic Browser)
5. Java语言(Java Language)
4. IBM的360操作系统(IBM System 360 OS)
榜单中的探花、榜眼和状元我还没有介绍。请继续看下去:
伟大软件榜第三名是美国基因组研究所(Institute for Genomic Research)的基因测序软件。这套软件绝非重量级的软件霸主,但“单纯从技术而言,它的出色程度绝对能得满分。”摩根珊勒表示。该研究所研制出的这套软件帮助科学家细分测序任务:该任务的目的是理解两万组人类基因中DNA序列蕴涵的信息。该软件具备研究人类基因组并进行序列分析所需的突破性洞察力,并能将对蛋白体亚单位的分析转为完整的分析图。“它使基因科学加速进步了至少10年。” 摩根珊勒指出。如今我们正利用这套软件研究先民从非洲大陆迁徙至世界各地的足迹。
人类基因揭示了一个事实:不同人种的基因差异是多么微乎其微,如今我们特别需要这样的信息。它为一种理念赋予了科学基础,那就是:四海之内皆兄弟。尤其在当今社会,我们身处不同种族你死我活争斗的危险之中:这一信息就更加有意义。这套软件还能执行许多额外的基因测序工作,它们是理解许多病症和有待破解的遗传物质迷题的根源。伟大软件和伟大研究结合如此紧密的案例实属凤毛麟角,因此基因测序软件理当摘得“探花”。
榜眼是IBM的R系统(System R),它是该公司在加州圣何塞阿尔马登研究实验室(Almaden Research Lab in San Jose)的研究项目,它催生出关系数据库(Relational Database)。在1970年,埃德加·考德(Edgar Codd)研究了集合论(Set Theory)的计算方法,并推导出一种将其运用在数据存储和检索的方法。集合是相关要素合在一起产生的一种整体抽象观念。例如,法国国旗颜色的集合要素就是蓝白红3色。使用集合论的关系数据库能将相关要素保存起来,但不需要将之置入特别区隔和明确标示的空间里。它也能在只知道某集合唯一的独特标识信息后,即时找出该集合中所有的要素。
R系统及其后来仿效者—DB2、Oracle系统、微软的SQL服务器和Sybase、PostgreSQL、MySQL及其他数据库系统,将产生巨大影响:目前我们对其只是略觉一二。关系数据库既能存储关于消费者的数据集合,也能搜索其他数据集合来查明特定消费者的购物习惯。数据被获取后立即输入数据库,接着后者将找到隐藏在数据里的关系。关系数据库和其SQL访问语言让我们得以从事人脑几乎无法完成的任务:定位相关数据所在的一个宽泛集合而同时无需牢记许多其他内容,例如数据的存储地点和关联特征等。
所有这些都只需要一条信息:一把有权运用这一集合的密钥。我喜欢System R是因为它操作起来非常顺畅,可测量性高,以及让专与海量数据打交道的人士叹为观止的强大用途。这是一款罕见的运用数学原理的伟大软件。(译/爱琳)


档案
日志
相册
视频



评论
想第一时间抢沙发么?