科技: 人物 企业 技术 IT业 TMT
科普: 自然 科学 科幻 宇宙 科学家
通信: 历史 技术 手机 词典 3G馆
索引: 分类 推荐 专题 热点 排行榜
互联网: 广告 营销 政务 游戏 google
新媒体: 社交 博客 学者 人物 传播学
新思想: 网站 新书 新知 新词 思想家
图书馆: 文化 商业 管理 经济 期刊
网络文化: 社会 红人 黑客 治理 亚文化
创业百科: VC 词典 指南 案例 创业史
前沿科技: 清洁 绿色 纳米 生物 环保
知识产权: 盗版 共享 学人 法规 著作
用户名: 密码: 注册 忘记密码?
    创建新词条

最新历史版本 :人类最优秀软件排行榜 返回词条

  • 编辑时间: 历史版本编辑者:方兴东
  • 内容长度:图片数:目录数:
  • 修改原因:

信息周刊:人类最优秀软件排行榜 
 如果问截至目前哪款软件最棒,大多数技术专家会很快给出答案。但若是花些时间仔细研究那些催生出真正杰出软件的因素,答案就不那么显而易见了。 

我所知道的一个极其重要的程序体甚至不是软件。二战期间,在英国人研制出破译德军电报密码的“巨人机”(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系统兼容:这让我意识到伟大软件的另外一个品质:它得长久拥有独特优势,无法被轻易取代。 

何为“伟大软件”? 

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本身却无法被定义为伟大软件。它错误百出而且界面很不友好,无法胜任用户希望它能完成的许多工作。电子表格软件领域的巨大突破并非VisiCalc,甚至不是Lotus 1-2-3[莲花公司(Lotus)1983年所推出的电子表格软件],而是微软公司(Microsoft,下称微软)的Excel,它不但扩展了电子表格软件的能力,并且添加了商务人士能利用的形形色色的计算公式。虽然大众对微软声称它的使命就是创造伟大软件这点尚有争议,但Excel无疑是一款伟大软件。几乎每个人都领教过它的威力。 

寻找智能 

按理说,人工智能领域应出现众多伟大软件。曾几何时,科学家认为人工智能应该是一种类人的智能机器:它能跟人类顶嘴;传授我们曾无法理解的知识;并能将出色的推理能力和海量数据的处理指令结合在一起。那么人工智能领域里的软件究竟怎样呢?“工”则“工”矣, 

“智”尚不足。 

源自人工智能研究的人工神经元网络(Neural Nets),创造出在全世界范围内广为使用的指纹自动识别系统。它具备良好的“模式匹配”特征,但是它是真正的智能系统么?看来未必如此。 

科学家运用人工智能推出的第一种具有真正突破性意义的产品是推理引擎(Inference Engine),该产品拥有一套囊括各种条件和规则的知识库。像推理引擎这样的电脑能将一种特定条件——如病人发烧到摄氏40度——和特定条件(比方说细菌感染会导致高烧)匹配在一起来完成推理。推理机中的佼佼者是用于医疗诊断的MYCIN(Mycin Medical Diagnosis)专家系统,基于病人感染细菌的临床症状,它能准确识别病情的概率达65%,比普通内科医师还要称职。但它从来没有走出实验室进入实用领域。因为没人知道如果出现误诊该承担法律责任的主体是什么。 

我最喜欢的人工智能体是IBM的“深蓝”(Deep Blue)电脑,它曾在一场6局比赛中击败国际象棋冠军加里•卡斯帕罗夫(Garry Kasparov)。卡斯帕罗夫指控深蓝之所以取胜是因为幕后有人类在帮忙。他说的没错。在每局棋赛间隙IBM程序员拼命改写“深蓝”程序以应对卡斯帕罗夫的棋路。这使“深蓝”无缘跻身我的最伟大软件榜。IBM的这种行为并未违反规则,但也并不公平:在这种情况下卡斯帕罗夫该如何跟深蓝比拼?难道他也调整自己的大脑结构? 

人工智能软件能让人印象深刻,但我举的所有实例中却没有哪款能跻身最伟大软件的行列。 

有时我将浏览器形容成一名情感表达存在缺陷的哑巴终端。我弟弟沃利是一个研究图书馆员,他使我相信:Mosaic作为互联网历史上最早出现的图形界面网页浏览器(Graphical Browser),让网络不再是一小撮技术迷的玩物,而为普通人类所共享。它的一个前辈Gopher,差点成为最伟大的浏览器;除此以外,还有Viola WWW,历史上第一款嵌有网页间后退和前进按钮的浏览软件。 

但Mosaic将地址栏、鼠标点击功能、多媒体文件展示和超链接结合在一起,使得用户可以游刃有余地运用互联网上日益丰富的信息源。Mosaic包含着易用的元素—工具栏位于顶端和一系列下拉式菜单—这一模式随后被网景公司(Netscape)的Navigator浏览器、微软的IE和火狐浏览器(Firefox)所仿效。在你自己的IE浏览器上,点击菜单栏上的“帮助”,然后点击“关于Internet Explorer”,跳出来的对话框上就有Mosaic 的使用版权声明。Mosaic是浏览技术的伟大突破吗?不尽然,但它的确是一款用户迫切需求、且综合多种全新技术手段的软件。换言之,它是一款“既开风气亦为师”的伟大软件。 

那互联网本身是否也担得起这样的赞誉呢?蒂姆•伯纳斯•李(Tim Berners-Lee)创造出一款整合超文本链接、普适的源代码定位器、以及HTML页面显示功能的界面,应该说,它极大地改变了我们这个世界。但网络本身来源于已有的观念,这些都需要倚赖底层的TCP/IP网络协议和BIND(伯克利互联网域名)域名服务器,一款非常底层的软件,它能驱动路由器正常工作。当然网络本身并非伟大软件,但是它的广泛影响的确让它身价倍升。  

 用户为先 

继续往下看。至少从一个方面而言,谷歌公司(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系统中用于查询用户情况的实用程序)和其他系统有多少“后门”和安全缺陷。在自我复制同时,蠕虫也不断随机地向服务器发出请求,复制自身。莫里斯承认,他在蠕虫程序里增加了这一特性以确保其能广为散布。他得逞了。  
 

 现在,让我为大家揭晓史上最伟大的软件——Unix。 

因为创造出Unix,贝尔实验室常常得到赞誉,但贝尔实验室从来没有为研发这套操作系统投入过一分钱。实际上,实验室的管理层对此一无所知。当时,实验室让研发人员开发的是一套面向多客户的名为Multics的项目。该项目当时融合了许多新创意。但这个项目最后被解散了,贝尔实验室的一名参与者肯•汤普森(Ken Thompson)决定设计一套Multics的个人版,以便他编写射击游戏。费尔德曼说他当年是美国电话电报公司(AT&T)Unix项目组排名第七的研发人员,目前是美国计算机学会(Association for Computing Machinery)的主席。 

汤普森设计这套简单操作系统的初衷,是把电脑随机存储器(RAM)里的数据整块或是整页(数据页)地移动到硬盘上,释放内存空间。当再次使用它们的时候,操作系统知道访问硬盘并把它们拉回存储空间。通过这种方法,一套庞大的操作系统就可以在一台小型电脑上运行,且只占用少量内存。它的系统也是一套多用户系统。当时的大型主机只限一人使用,令计算时间变得十分昂贵,汤普森的“非丛式信息和计算系统”(首字母缩写为Unics,编者注:Unix的名字便来自于该缩写)能允许两个人同时使用一台电脑。 

Unix体现了软件的最优良传统:自身具备不断更新的生命力。汤普森在一个贝尔废弃的项目上研制Unix,研发的工具就是一台DEC PDP 7迷你电脑,内存是16K或32K—费尔德曼无法肯定究竟是哪个数字。“汤普森在编写Unix时,遇到了很大的限制。没内存、也没高效的中央处理器(CPU)。到如今要是你的手表没有比这更高的内存量或CPU,你都会觉得不好意思呢。” 

当时实验室的计算科学研究小组(Computer Science Research Group)听闻汤普森开发出Unics,希望要一份复件。在集团的要求下,汤普森和一名同事丹尼斯•里奇(Dennis Ritchie),同意在系统里加入文本格式化功能,但前提是两人能拥有一台PDP 11/20,当时一种计算能力更强的电脑。因此,Unix文本处理功能是以物物交换的形式得以实现的。Unics变成了Unix,被结构更为谨严更易于上手的C代码重新编写,并且在推出Unix3代时由AT&T进行商业化,推向市场。 

综上所述,Unix系统3代差不多就是最伟大的软件—至于最最伟大的软件,请读者容我卖个关子。 

Unix3代体现出一种进步,但它缺乏很多功能和设置,诸如窗口型输入系统、图形用户界面,以及与分布式系统进行对话的方法。为了迫使IBM放松对大型主机的垄断,AT&T只向研究人员和大学收取很少的经费便允许它们拥有Unix3代。有些人认为当软件在互联网上可以免费下载时,才导致了开放源代码这种行为的出现。事实并不是这样,Unix传播的早期阶段就为软件开源运动埋下了伏笔。Unix各类版本中的一个来自一位在夜间工作的大人物,他想改善加州大学伯克利分校的Unix版本。其他研究者听说比尔•乔伊(Bill Joy)在Unix里添加了新功能并要求他给他们邮寄一份拷贝。根据艾瑞克•奥曼(Eric Allman)的回忆:首份开源代码并非数码文件,是一卷磁带。在完成其他工作后,乔伊深夜把它装进邮包寄送出去。奥曼是乔伊的研究生同学,也是Sendmail的作者。1977年,乔伊和其他研究生改进后的Unix使得伯克利软件套件(BSD)声名鹊起。 

GNU哲学 

Unix通过不连续的代码模块进行设计,每个模块都跟硬件体系的部分相对应。这使得Unix比IBM的操作系统更容易进行改写。伯克利的硕士生动作很快。他们加入了简洁、快速的文件系统,可靠的网络组件和一款强大的代码编辑器Vi。他们增加了伯克利端口应用编程接口(API),让系统在网络中传输数据就好像在本地硬盘上一样便捷。 

国防军备承包商Bolt Beranek & Newman公司(下称BBN)当时是国防高级研究项目局(Defense Advanced Research Projects Agency,下称DARPA)TCP/IP组网项目的官方开发商。在BSD4.1a版本中,伯克利的学生们修改了TCP/IP组网协议。在1986年,Darpa测试了BSD4.3版本TCP/IP,认为它的性能优于BBN的版本。 

1982年,乔伊离开伯克利,参与创立Sun,利用BSD作为Sun操作系统和Solaris网络操作系统的底层基础。Sun和AT&T合作,改善了V System,创造出一个很耐用的System V第4版。他们同意:这将成为未来Unix的标准版本,想要从投资Unix获得回报的AT&T当时提高了获得软件的使用费。 

但是伯克利的学生们可不是那么容易对付的。他们改写了BSD的Unix,删除了有关AT&T的文件并创造出一个能在低成本英特尔硬件上运行的新发布平台。 

由于害怕未来这个版本会导致AT&T丧失利润,AT&T的Unix实验室把BSDi公司[为英特尔公司(Intel)提供BSD的公司]告上法庭。最终,AT&T的Unix实验室赢得了诉讼,束缚了BSDi公司许多年。但与此同时, AT&T利用Unix漫天要价激怒了理察•斯托曼(Richard Stallman)。他是在MIT运用这套系统从事人工智能研究的硕士研究生。他认定,软件是一种智力资产,应该免费。就像他的研究界同行公开的学术著作一样。他设计了一套工具称为GNU(编者注:GNU是“GNU´s Not Unix”的递归缩写),程序员可借此来创造自己的软件。 

这些工具被芬兰首都赫尔辛基的21岁大学生林纳斯•托瓦兹(Linus Torvalds)得到了。当时他在寻找Unix的一个版本,能在他使用英特尔硬件的电脑上运行。他利用这套工具开发出Linux,接下来的故事大家都知道了。结果Linux广受欢迎,最终取代了基于英特尔硬件的BSD。如今,Linux也在虎视眈眈高端市场。但Linux仅仅是一个不完整的GNU系统及其前辈BSD的拷贝而已。后两者创造了Linux中所有的关键理念。这也就是为什么互联网的奠基石,Sendmail和 BIND,是基于伯克利Unix系统研发的,而非System V。这也是微软为何在寻找在视窗软件中执行TCP/IP协议最佳的系统时,选择了BSD Unix的一个版本。当1983年,DARPA想建立起自己的阿尔帕网络(Arpanet)—也就是今天的互联网时,该公司放弃了现成的协议转而改用BSD的TCP/IP。 

到现在你该明白了:历史上最伟大的软件、对世界影响最大的,是BSD4.3。其他的Unix版本在商业方面更成功,但说到BSD累积起来的成就,BSD4.3代表了无与伦比的创新颠峰;它是互联网底层最大的单一加固者。更重要的是,开发完善Linux和推动开源运动的激情直接源自打造BSD的理念:热爱计算能力,并且深信人类的智能应该得到自由的(同时也是免费的)延伸。这是一种提升人类在天地间位置的巨大力量。  

→如果您认为本词条还有待完善,请 编辑词条

标签: 软件