软件的黄金时代
分類: 图书,计算机/网络,软件工程/开发项目管理,
作者: 刘朝阳 著
出 版 社: 人民邮电出版社
出版时间: 2009-5-1字数:版次: 1页数: 166印刷时间:开本: 16开印次:纸张:I S B N : 9787115196484包装: 平装编辑推荐
窥斑见豹,细细品IT生存法则,运筹帷幄,再迎软件黄金时代。
这是首部洞悉世界软件业60年,传奇历史和商业智慧的中文读本。
软件作为产业虽然只有短短几十年的历史。但却是一段最难为大众所理解的“秘史”,可偏偏这个神秘的产业正在越来越深入地渗透并左右我们的生活、商业乃至社会行为方式。
从二战时期的科学天才到20世纪末的商业Geek文化,再到21世纪的“我们”,软件的创造者和使用者的群体在不断地融合与扩张。从亚马逊书店的云计算到智能手机、吸尘器和大众汽车中的Linux系统。软件已经成为21世纪企业的核心竞争要素。同时也在彻底改变人们的数字生活方式。今天,在互联网经历了一轮牛市之后。那些在信息技术大潮中努力寻找前行方向的人们,需要紧紧抓住软件这条产业缰绳。软件60年,从哪里来?到哪里去?《软件的黄金时代》也许将为你打开一扇通往这个最鲜为人知的产业历史的大门。
“软件行业60年的历史比一些传统行业数百年的历史更为丰富、更加激动人心。作者提炼出这60年历史的精华集于一书,使人们在轻松悠闲的阅读中得以将软件的大千世界尽收眼底。”
中国工程院院士倪光南
“读史可以使人明智,以史为鉴,可以知未来。因为。历史中蕴含着未来的逻辑,未来不过是历史的延伸。读完本书,您不仅可以从软件60年技术史和商业史中汲取智慧,还会了解软件史上名副其实的巨人——IBM。”
中国计算机报社常务副社长兼总编辑刘保华
“在某种程度上,软件引领着IT行业的发展,甚至改变着世界的运行轨迹,这是一个充满变数、充满竞争、充满新鲜感的行业。作者在变数中洞察规律,并融汇在故事中娓娓道来。读者不仅可以领略软件的发展脉络,更可以知道软件在实现企业改革和业务需求时的重大价值。”
《IT时代周刊》总编辑曹健
内容简介
本书描述了软件行业技术、市场、产业、商业价值、关键事件、人物事迹的历史运行轨迹,以及软件已经改变的和将要改变的人类生活与商业创新之间的逻辑分析和价值判断。
在内容上,本书涉及了软件历史的几乎所有重要技术:程序语言、操作系统、数据库、中间件、应用软件和开源软件、人工智能、软件工程、网络安全、Web2.0、移动互联网、企业管理、个人数据处理等,并在横向话题分类中进行灵活组合。
在构架上,以史鉴今,糅合话题式和模块式的内容编排,迎合当今读者多元化的阅读取向,使不同身份的读者都能够轻松找到兴趣点和舒适的阅读方式。
在风格上,本书通俗、活泼、充满矛盾和尖锐的思想火花;书中挖掘了足够多的新闻历史事件的背景关联和更多重量级人物的对话和思想碰撞,内容具备足够的思想张力和启迪性,与当今IT业的热点话题和趋势息息相关,使得各行各业的非技术背景读者也能从软件的技术史和商业史汲取养分。
目录
1计算机语言的“巴别塔”
从织布机到火星车
编程语言的五代十国
程序员的钥匙
语言的战争
“面向用户”的FORTRAN与COBOL
Java的涅槃
互联网的快言快语
2操作系统的世纪大战
进化与轮回
OS/360——50亿美元的赌注
DOS的身世之谜
棋王的噩梦与UNIX传奇
Linux的开源盛世
Web:桌面操作系统的终结者
3数据库演义
巨人的藏经阁
群雄逐鹿
互联网的新引擎
企业的数字水晶球
4软件开发的达尔文进化
前言:软件的柏林墙
《人月神话》与工艺革命
开源社区的效率之谜
5中间件推动商业创新
软件的底盘
决胜流程
企业的智能管家
企业的软件化生存
6软件互联网
沃森的预言
云端的唤雨巫师
Web2.0:软件的第二人生
第三次办公革命
7中国的机遇
三十而立
蓝色隐形冠军
多赢的生态系统
软件的蓝海
书摘插图
1计算机语言的“巴别塔”
引言:
“巴别塔”这个词源自于《圣经》第十一章,讲的是洪荒之后,诺亚方舟上留下的人类妄自尊大,竟然想修一座通天塔与上帝见面,于是上帝非常搓火,混乱了他们的语言,造成思想无法统一,文化产生差异,分歧、猜嫉等各种问题接踵而来。于是,这座塔也便成了一个泡影。在希伯莱语中,“巴别”干脆就是“混乱”的代名词。
如果我们为《圣经》中记载的巴别塔故事寻找一个活生生的范型(Paradigm),那么计算机语言,或者说编程语言(Programming Language)的发展就是一个绝佳的例子。从1955年约翰巴克斯(John Bucks)发明高级语言FORTRAN而引发软件的第一次工业化革命以来,经过几十年的发展,编程语言超过了2000种,语言之间的战争也从未停止过。
计算机语言与软件制造业的全球化运动紧密相关,也是人们参与下一代DIY(Do It Yourself)互联网的关键。因此,理解语言进化所遵循的生存法则是我们探寻软件2.0革命趋势的第一步。即使在今天,对于程序开发人员来说,掌握什么样的程序语言与就业前景
和薪水高低之间的关系依然众说纷纭,这方面的误区和口水大战也从来也没有停止过。
从FORTRAN到如今互联网上流行的动态语言,程序语言作为人类软件工程的核心技术已经经历了数次变革,而每一次变革,都深刻地影响到整个软件产业的技术和产业格局演变。在互联网时代的软件工业化和全球化趋势中,程序语言已经进入了一个全新的发展阶段,易于掌握、能够进行敏捷的Web开发的成为一种潮流,而类似IBM推动的Project Zer0互联网应用开发平台则有望使“软件盲”也能够参与企业级软件的开发和定制,这将意味着以大规模协作为特征的第二次软件工业化革命已经拉开序幕。同时,这也让人们看到了平息编程语言“巴别塔”的希望。
从织布机到火星车
“如果你想成为周游世界的旅行家,那么你大概需要学习用6912种语言说:‘你好,厕所在哪里?’根据Ethnologue.com的统计,地球上现存的人类语言种类高达6912种。对于一个程序员来说,每周都会有一门新的编程语言问世。”
——Brian Hayes《分号的战争》
勇气号的困惑
2004年1月份,Java之父詹姆斯高斯林(James Gosling)博士端坐在美国航空航天总署(NASA)的喷气推进实验室,目不转睛地观察着勇气号探测器在火星上的一举一动,这可能是人类有史以来最慢的一次互联网远程通信(有高达9分钟的延迟和只有数KB的数据带宽)。
也许有人会发问:“火星上怎么会有互联网?”当时,虽然只有地球、火星探测车和地球空间站等少数几个通信节点,但谷歌的首席科学家、互联网之父温瑟夫(Vin Cerf)依然认为这是星际互联网的雏形(早在2001年,温瑟夫来北京布道下一代互联网,我曾有幸向温瑟夫求证过类似的问题)。而Java语言,则再一次充当了互联网先锋的角色。在距离地球1亿2000万公里之外的红色星球上,勇气号的Java控制系统经受住了绵延千里的火星风暴的考验,从未死机。勇气号最初设计的使用寿命是3个月,能够在火星表面“自驾游”600米;但出人意料的是,“勇气号”最终在火星上超期服役18个月,在火星上留下了一串足足7公里长的“脚印”,这让人们对勇气号的科技水平大加赞赏。
Java语言漫游火星,成为1995年以来Java最为成功的一次品牌宣传,NASA的网站提供一款名叫Maestro的软件供全球网民下载,用以观看勇气号传回的火星三维画面。根据美国《Associated Press》报道,自1月4日成功登陆火星之后的24小时内,NASA网站首页和相关网站创造了1 09亿次的点击记录。这导致NASA不得不增加网站服务器带宽,以应付潮水般涌来的访问请求。
勇气号让大众对计算机语言的兴趣大增。人们想知道计算机语言是如何诞生、繁衍、变异、进化和消亡的,人们也对全世界程序员数十年来关于语言优劣的唇枪舌剑深感不解?为什么他们不说同一种语言?为什么语言不但没有实现统一,新的语言反倒是如雨后春笋一般破土而出?为什么Java是火星上唯一通用的计算机语言,而在地球上却不能一统天下?计算机语言,这个在开源运动先驱Richard Stallman眼中用来控制那些掌管人类信息社会的冰冷机器的神秘力量,从哪里来?到哪里去?
在探讨语言的巴别塔之前,我们首先要搞清楚什么是计算机语言?维基百科上的解释是:计算机语言是用来控制计算机行为的人工语言。
解释编程语言起源的最好例证也许是自动提花织布机,人们在卡片上编制好针脚顺序,织布机就能编织出人们想要的布料花纹,织布机好比是电脑,而布料的花纹则是计算机语言“编织”出的应用程序。
提花编织机最早出现在中国。据史书记载,西汉年间,钜鹿县纺织工匠陈宝光的妻子,能熟练地掌握提花机操作技术,她的机器配置了120根经线,平均60天即可织成一匹花布,每匹价值万钱。明朝刻印的《天工开物》一书中还赫然地印着一幅提花机的示意图。可以想象,当欧洲的王公贵族对从“丝绸之路”传入的美丽绸缎赞叹不已时,中国的提花机也必定会沿着“丝绸之路”传入欧洲。
不过,用当时的编织机编织图案相当费事。若要织出花样,织工们必须细心地按照预先设计的图案,在适当位置“提”起一部分经线,以便让滑梭牵引着不同颜色的纬线通过。机器当然不可能自己“想”到该在何处提线,只能靠人手“提”起一根又一根经线,不厌其烦地重复这种操作。
1725年,法国纺织机械师布乔(B.Bouchon)突发奇想,想出了一个“穿孔纸带”的绝妙主意。布乔首先设法用一排编织针控制所有的经线运动,然后在一卷纸带上根据编织图案打出一排排小孔。启动机器后,正对着小孔的编织针能穿过去钩起经线,其他的针则被纸带挡住不动。这样一来,编织针就自动按照预先设计的图案去挑选经线,布乔的“思想”于是“传递”给了编织机,而编织图案的“程序”也就“储存”在穿孔纸带的小孔之中。
在高级语言发明之前,指挥计算机工作的程序是机器语言、汇编语言这样的针对特定计算机的“低级语言”写成的,“低级语言”由0和1这样的二进制码或者生涩的符号构成,以方便机器解读,这种非常不直观的语言害惨了程序员,他们需要像操作手工提花织布机那样不厌其烦地把自己的“命令”翻译成机器语言,其繁琐程度不亚于教导一个幼儿园小朋友:鸡蛋要剥了皮吃。在今天使用高级语言的程序员眼里,低级语言程序员同时也兼任着“人肉编译器”的苦差。最初的程序记录和输入方式现在看来也很原始,往往是通过打孔卡片、纸带、继电器开关旋钮这样的模拟介质(这比织布机的打孔卡先进不到哪里去)。
与低级语言对应的“高级语言”,拥有一个抽象层(在人类算法语言与机器语言之间充当翻译的编译器),使得程序员无需操心某一台具体的电脑硬件结构,而是把主要精力放在解决问题上。高级语言及编译技术彻底把程序员从繁重枯燥的机器代码中解放出来,同时也为软件生产从手工作坊走向工业化大规模生产提供了可能。所以说,高级语言是现代计算机科学的重要基石之一,也是最为核心的软件技术。早在1955年,IBM的约翰巴克斯发明了最早的高级语言FORTRAN,随后开发了世界上最早的语言编译系统KOMPILER,这被看作是软件业历史上划时代的一刻。
编程语言的五代十国
Noam Chomsky坚信所有的人类语言都有共同的“深层架构”,这与大脑的“硬件”结构紧密相关。但是非常遗憾的是,计算机的硬件和算法始终处于高速的分化整合发展中,而计算机语言之间的差异也远比任何两种人类语言之间的差异要大。这一点,从最早的高级语言FORTRAN与LISP的分化就已经体现出来。
FORTRAN问世之后,另外一位IBM员工麦卡锡想改造FORTRAN的功能,使它支持递归运算,但是由于改造的过程过于复杂,麦卡锡只好另起炉灶开发了表处理程序LISP,麦卡锡希望他的LISP成为“制造一台拥有人类智慧的机器”的工具,LISP后来也成为人工智能的标准语言之一,至今仍然有人使用。
FORTRAN广泛运用的时候,还没有一种可以用于商业计算的语言。美国国防部注意到这种情况,1959年5月,五角大楼委托格雷斯霍波(G.Hopper)博士领导一个委员会,开始设计面向商业的通用语言(Common Business Oriented Langauge),即COBOL语言。
1958年,一个国际商业和学术界计算机科学家组成的委员会在瑞士苏黎世开会,探讨如何改进FORTRAN,并且设计一种标准化的电脑语言,巴克斯、麦卡锡都参加了这个委员会。1960年,该委员会在1958年的设计基础上,定义了一种新的语言版本——国际代数语言ALGOL 60,首次引进了麦卡锡提出的递归和条件表达式的思想。ALGOL语言虽然没有被广泛运用,但它演变为其他程序语言的概念基础。
ALGOL语言诞生之后,计算级高级语言的大家族逐渐人丁兴旺起来,人们对计算机语言的分类方法也见仁见智。通常,我们将计算机语言分为四类:命令式语言、功能性语言、面向对象语言和表述性语言。
命令式语言由一堆命令构成,组合起来完成一件特定的任务。打一个不那么形象的比方:一个生活缺乏规律的程序员早晨起床后,他的妈妈往往会对他发出这样一系列的“命令”:刷牙,冲咖啡,叠被子,打领带,然后到办公室打卡报到。最早的高级编程语言都是命令式的,比如FORTRAN、COBOL和AIGOL。
功能性语言的鼻祖是麦卡锡发明的LISP。FORTRAN语言之父,约翰巴克斯在发明FORTRAN之后也成为功能性语言的倡导者,在他的推动下,一些纯粹的功能性语言先后诞生,包括ML、Miranda和Haskell等。
面向对象编程语言的核心思想是把命令语句和它们调用的数据封装成一个个“对象”,人们不需要再为“对象”中的数据操作费心,这好比人们把金属丸、炸药、引信用金属壳封装起来,变成一颗子弹,显然,现代自动武器所使用的子弹远比早期需要每次射击前都人工装填火药的火绳枪能更快更好地“解决问题”,这也是面向对象技术流行至今的原因。面向对象语言的另一个重要特征是继承性,前辈们定义好的“对象”功能会得到继承,如此一直能追溯到面向对象语言的开山鼻祖——SIMULA67。
……
