《软件故事》内容梗概

《软件故事》内容梗概
《软件故事》分⼗⼀章讲述了软件的发展,从最初的ENIAC编程,到最后Apache软件开源,可以说叙述了整个软件史。
这本书的作者史蒂夫-洛尔,曾是《纽约时报》的技术、商业和经济专栏作家。
第⼀章引⾔:软件和编程艺术的兴起
⼆战之前,电⼦技术还不够成熟。软件业真正迅速发展是在⼆战之后。⼆战期间催⽣出第⼀台通⽤计算机ENIAC,位于宾⼣法尼亚⼤学,这台计算机还没有存储的功能,每进⾏⼀次运算就要重新插拔各种线缆,很是⿇烦。有专门⼈员负责,成为编码员(coder)。1946年约翰·冯·诺依曼撰写了“关于EDVAC的报告初稿”。作为“曼哈顿计划”的顾问,原⼦弹的设计要进⾏成千上万次的运算,计算机的潜⼒引起了冯诺依曼的注意。经过改进有了EDVAC(Electronic Discrete Variable Automatic Computer),即电⼦离散型变量⾃动计算机。除了冯诺依曼,还有很多⼈参与EDVAC的设计,其中最为著名的是ENIAC的项⽬负责⼈J·普雷斯普尔·艾克特和约翰·莫克利,由于EDVAC最终负责撰写报告的是冯诺依曼,因此他获得了“存储程序式计算机”的殊荣。
因为存储程序的存在,程序指令就可以存储在计算机中,⼈们就不⽤没进⾏⼀次运算就要插拔⼀次线缆,这⽆疑⼤⼤提⾼了计算的效率。早期开发⼈员体会到编程的复杂性,第⼀次出现了bug这个词汇。
计算机投⼊应⽤很久之后才有了“软件”这个词出现。1958年《美国数学⽉刊》上,“软件”作为计算机术语⾸次出现在出版物上。
计算机编程的⼤部分历史课看成是努⼒扩⼤其使⽤范围的过程,即让更多⼈能够更容易地编程。但到⽬前为⽌,⼤部分编程仍然局限于精英阶层。
第⼆章 FORTRAN:早期的“转折点”
1952年IBM的新型豪华计算机-国防计算机(Defense Calculator)准备好接受实验。1953年更名为IBM 701。
齿轮有限元分析1953年末,巴克斯开启寻更好编程⽅法的研究项⽬。1957年,FORTRAN语⾔问世。
FORTRAN的成功具有双重意义。⾸先,它是⼀种英语速记和代数的编程语⾔,将⼈与计算机的交流提⾼了⼀个层次,更接近于⼈类,同时更加远离机器。FORTRAN被称为第⼀个⾼级语⾔。此外,FORTRAN运⾏良好,效率同编码员编写的程序⼀样。红柳河
FORTRAN给软件⾏业带来的巨⼤进步不可磨灭。其他语⾔都是在FORTRAN建⽴的基础上发展起来的。杰出的计算机历史学家、弗吉尼亚理⼯⼤学教授J.A.N.李称FORTRAN是编程语⾔及编程器技术发展过程中的“转折点”。
约翰-巴克斯,不是个听话的孩⼦,从⼩喜欢⿎捣⼀些机械。⼤学起初学习⼯程学和医学预科,后来发现对数学感兴趣,就申请了哥伦⽐亚⼤学试读⽣,不仅学习优异拿到数学学⼠学位,还获得了数学硕⼠学位。
⼀次偶然的机会参观SSEC(罗伯特-雷克斯-席伯等发明的选择性顺序电⼦计算机),被引荐,席伯当场录⽤了他。
SSEC是IBM的超级计算机。巴克斯是从SSEC编程开始的,编写的程序主要⽤于⼤规模科学计算。701问世后,巴克斯写给⽼板的信中提到了编程项⽬的建议,并着重强调其在经济⽅⾯的重要的作⽤。卡斯波特-赫德看到后,⽴即批准了这个项⽬。项⽬开启后,前后加⼊的⼈员有:欧⽂-齐勒,布鲁克斯⼤学研究⽣;哈兰-赫⾥克,爱荷华州⽴⼤学数学专业研究⽣。
在当时编程对于智⼒要求很⾼,程序员必须精通⼆进制的机器语⾔。后来程序员使⽤⼆进制的早期简化⼯具⼋进制。减少编程难度的进⼀步措施就是开发“汇编”程序,当时每种计算机都有⾃⼰的汇编语⾔,在通往FORTRAN等更⾼级语⾔的道路上汇编程序仍是⾄关重要的步骤。汇编语⾔最早出现在英国,剑桥⼤学的EDSAC是第⼀台运⾏的存储程序计算机。最初的⽬的是让⼈⽆需经过专门的训练就能轻松地使⽤。
FORTRAN团队设定的⽬标远远超出了汇编语⾔。每⼀⾏汇编语⾔代码会转化成⼀条⼆进制机器代码
的指令。
FORTRAN语⾔为我们留下了宝贵的财富,特别是⼀个看似平淡⽆奇的决定:将GO TO声明作为其基本命令之⼀。FORTRAN这个名字是整个项⽬组热衷于转换器或编译器的最好证明,它是公式转换系统(FORmula TRANslating)的缩写。
1954年 ,FORTRAN项⽬组撰写了⼀份描述FORTRAN语⾔及其⽬标的报告-《初步报告:IBM数学公式转换系统规范》,当时最引⼈注⽬的是“鉴于FORTRAN⼏乎会淘汰编码和检错...”。带着这份充满前景的报告,巴克斯,齐勒和赫⾥克开始周游全国,游说订购了704的客户,但并没有⼈关注。
1955年巴克斯开始扩充⼈⼿,前后加⼊的⼈员有:谢尔登-贝斯特,⿇省理⼯学院明星程序员;罗伊-纳特,联邦飞机公司;罗伯特-尼尔森,曾美国国务院密码员;理查德-⼽登堡,纽约⼤学数学博⼠;洛伊丝-海波特洛萨学院毕业后加⼊IBM;戴维-赛尔,宾⼣法尼亚⼤学⽣物物理学研究的晶体学家。
在计算机科学中,⼀个棘⼿的问题是如何让机器充分发挥作⽤帮助⼈类解决难题。巴克斯选择了拆分编译器问题,这种⽅法虽然难以理解,却是FORTRAN名副其实的成就之⼀。编译器⾸先对⾼级语⾔、数学符号和英语缩写进⾏初步扫描,或叫语法分析。接着,对程序进⾏复杂的分析,以便编译器把⼯作重点放在使程序的核⼼部分⾃动化上。然后,编译器必须计算出如何⽤最少的时间分配其编译指令使机器运⾏。最后,经过编译的程序必须被汇编成机器代码。
1957年FORTRAN⾸次⾯世于洛杉矶召开的西部计算机联席会议上,参加会议的主要是那些为数不多的SHARE会员。向⼈们证明了FORTRAN编写的程序花费的时间和运⾏的效率上远远⾼于汇编语⾔。
第三章 20世纪60年代的惨痛教训:从繁盛到COBOL 和IBM 360计划成为现实
FORTRAN问世之后,IBM看到了客户的反应,认为FORTRAN能帮助IBM卖出更多的机器。同年九⽉,IBM宣布IBM的新机型-704,将采⽤FORTRAN来编程。这⼀强制措施⾮常有效,使⽤FORTRAN⼈们解决了⼀个⼜⼀个计算领域的难题,并开创了⼀个长达⼗年的繁荣期。随后,Lisp、Algol、COBEL等新领域的语⾔层出不穷。两个新的研究分⽀-⼈⼯智能和分时技术,开始建⽴。
分时系统和⼈⼯智能是20世纪60年代最崇⾼的两个追求。分时技术的出现被认为是计算机应⽤⾏业的开始。但是在20世纪70年代初,散布在全国的分时系统的前景开始变得暗淡,⼤系统,甚⾄是可以同时为数百名⽤户提供服务的系统,越来越难以正常⼯作。
这两项研究起步阶段都起到核⼼作⽤的⼈是约翰-麦卡锡。分时系统第⼀次表述是在1959年于巴黎召开的⼀次联合国教科⽂组织会议上。当时英国计算机科学家克⾥斯托弗-斯特雷奇发表了⼀篇“⼤型,快速计算机的分时技术”的⽂章。20世纪50年代后期,⿇省理⼯学院是计算机应⽤⽅⾯的领头⽺,⽽麦卡锡当时在此担任助理教授。1959年1⽉麦卡锡在写给计算中⼼主任的备忘录中,主要从编程⽣产⼒的⾓度描述了分时技术,将其作为⼀种“能够⼤⼤减少⽤机器解决问题所需时间”的⽅法。麦卡锡罗
列了分时系统所需的技术,包括“中
断”特性和快速内存分配。麦卡锡做过的另⼀件事是杜撰出了⼀个新词“⼈⼯智能”,1958年成为⿇省理⼯学院助理教授不久,麦卡锡开始设计⼀种成为Lisp的编程语⾔,并将其应⽤到⼈⼯智能领域。麦卡锡选⽤⼀系列信息列表来构建他的语⾔,这些信息列表随后将被处理,Lisp代表“列表处理”,各种信息可以显⽰在列表中,然后⽤于推论和逻辑推理等操作。当程序运⾏时通过⾃动清除和释放计算机内存,这⼀特性成为“垃圾回收”。
20世纪50年代末,计算机应⽤范围已经超越了科学和⼯程领域,逐渐参与到那些正处于转变过程中的⼤公司和政府组织的核⼼业务中,这就迫切需要⼀种业务简化的编程语⾔。起初COBOL这种⾯向商务的通⽤语⾔,并不被⼀些⼚商和学术界认可,但是它解决了⼀⼤难题:如何在编程语⾔中处理业务数据。美国国防部是当时购买计算机的最⼤客户,他们监管了COBOL的设计,⽽且政府在其完成后宣布,除⾮计算机使⽤COBOL语⾔,否则它既不会购买也不会租⽤。
1959年COBOL⾯世时,有两家公司已经开始着⼿建⽴⾃⼰的商⽤语⾔:斯派⼒-蓝德公司的Flow-Matic和IBM的Comtran。采⽤集体的⽅式设计商⽤语⾔,最早是由宝来公司的编程经理玛丽-霍丝提出的。当她把这个想法告诉宾⼣法尼亚⼤学的索尔-考恩教授时,他们⼀直认为,为了促进这个年轻⾏业的发展,应该开发⼀种商⽤语⾔。1959年4⽉在宾西法尼亚⼤学召开的会议上,美国国防部数据系统
研究主任查尔斯-菲利普斯出任Codasyl(数据系统语⾔委员会)的主席。随后五⽉底在五⾓⼤楼开启⾸次会议,六⽉底宣布于年末交付COBOL语⾔。
珍-萨美特在COBOL短期委员会主要任务是“针对数字计算机编程,推荐⼀个短期的通⽤商务语⾔的综合办法”。这种综合办法的关键是要综合现有的三种商⽤语⾔:Flow-Matic,Comtran和空军主导的Aimaco。九⽉份定名为COBOL,即Common Business Oriented Language的简单缩写。
葛丽思-霍普是COBOL最⼤的拥护者,并且是COBOL项⽬背后最⼤的推动者。霍普曾领导开发的Flow-matic对COBOL影响很⼤。COBEL为了说服各地的公司使⽤COBOL进⾏全国范围演讲,霍普有"COBEL"之母之称。
20世纪60年代具有标志性的软件项⽬是IBM的360产品线⼤型计算机操作系统-OS/360。
1966年1⽉,⽡次-汉弗雷接任IBM编程主任⼀职。OS/360的⼯作计划延误了⼤约⼀年时间,看起来⼀近乎失控。汉弗雷取消了当年所有的交付计划,并让各个⼩组重新拟定可⾏的交付计划。计划拿到⼿后,汉弗雷宣布了⼀系列时间表,总跨度为两年。公司逐个按期完成,虽然晚了⼀年,并且⽀出了4倍的预算。但IBM最终兑现了诺⾔。IBM360成了第⼆次世界⼤战后最经典的商业成功案例,它押上整个公司作为赌注,并且取得了巨⼤回报。
第四章打破巨型计算机的控制:UNIX和C
1964年,肯-汤普森是加州⼤学伯克利分校的⼀名⼤学⽣。1964年四⽉,IBM发布IBM 360⼤型机(1964年之前,IBM被视为企业技术独裁的象征)。汤普森评价360给程序员带来的负担令⼈望⽽却步,操作系统像个怪物⼀样难以⽣产和维护。客观来说,IBM的设计包含了技术的权衡折中。
1969年汤普森和实验室的长期搭档丹尼斯-⾥奇密切合作,开发出了UNIX操作系统。⾼效、简洁、精致的Unix和IBM 360形成了鲜明的对⽐。最初,UNIX仅作为⼯具供贝尔实验室使⽤,后来逐渐⾛出实验室,进⼊了⼤学和⼯程界。1943年,肯-汤普森出⽣于新奥尔良。汤普森从⼩对机械痴迷,⼤学加⼊伯克利电⼦⼯程专业,毕业后由导师雇佣。那时汤普森认识了伯克利分校数学系⼀流的博弈论专家埃尔⽂-波利钦普,后来被其推荐⼊贝尔实验室。丹尼斯-⾥奇,从⼩在舒适的郊区长⼤,其⽗亲是贝尔实验室的⼀位科学家。⾥奇攻读数学博⼠⽆果之后,转向感兴趣的计算机,1968年加⼊贝尔实验室,⽐汤普森晚⼀年。很快,他们陷⼊Multics计划的困境。贝尔实验室⼀直与通⽤和⿇省理⼯学院保持合作,当时Multics是最具有野⼼的分时共享系统的尝试,设计⽀持1000个连接的终端和300名⽤户同时作业。但分时共享的理念中⼀次性添加了 太多新东西,试图维持三个地理上分散、⽂化背景毫不相同的机构进⾏合作必然毫⽆益处。1969年贝尔实验室认定Multics是个⾼昂的错误,于是退出了该项⽬。放弃Multics后,汤普森和⾥奇说服他们上司允许创建⾃⼰的分时系统。同年夏天,汤普森开始编写Unix第⼀个版本,共有4个主要部分:操作系统核⼼、外壳、编辑器以及编译器。
C语⾔是为Unix系统开发的。C语⾔由⾥奇主导,汤普森帮助下完成。C最早可追溯到⿇省理⼯学院和
MAC项⽬,他的“祖⽗”是BCPL。BCPL是Multics项⽬的衍⽣物开发出来的。UNIX是由汇编语⾔编写(考虑到运⾏性能),后来汤普森也认为UNIX应该有它⾃⼰的语⾔,起初他设计出了B语⾔,BCPL的简化版。1972年,⾥奇开发出了C语⾔,和Unix⼀样,C语⾔源⾃相同的理念。C语⾔很少限制熟练程序员的⾃由,也很少保护缺乏经验的程序员使其避免陷⼊⿇烦。
蒋南翔1983年汤普森和⾥奇获得图灵奖--计算机科学领域的诺贝尔奖。
第五章为⼤众编程:从达特茅斯的BASIC到Visual BASIC
1957年,托马斯-库尔兹是新罕布什州达特茅斯⼤学⼀位年轻的教授,接触到FORTRAN后,他深深地感到⾼级语⾔编程能够节省计算机时间,同时也能节省程序员的时间。随后库尔兹和同时兼导师约翰-凯莫尼开发出了⼀款简单易学的⾼级编程语⾔BASIC(Beginner's All-purpose Symbolic Instruction Code,初学者通⽤符号指令代码)。最初在达特茅斯⼤学供⽂科⽣学习。
BASIC没有标准化组织为其设⽴官⽅标准,到20世纪70年代末市⾯上已经出现了⼏⼗种不同版本的BASIC。
文华电影
斯坦福⼤学讲师丹尼斯-艾莉森在他的朋友鲍勃-阿尔布赖特的⿎励下编写了早期微型计算机编程语⾔Tiny BASIC。Tiny BASIC被认为是早期计算机教育和计算机改装必不可少的⼯具。艾莉森设计的Tiny BASIC不断改善,使之成为⼀种⽤途越来越⼴泛的语⾔。中国学术期刊网络出版总库
⽽在国家的另⼀端,马萨诸塞州的剑桥市,两个创业年轻⼈,保罗-艾伦和⽐尔-盖茨,选择了和他们截然不同的道路。1975年两个年轻⼈读过《⼤众电⼦》杂志后,随即着⼿为MITS Altair设计商业版的BASIC。两⼈为Altair编写的BASIC具有很多功能,他的速度极快,⽽且作为⼀种最初运⾏在仅有4KB的内存板上的编程语⾔,他有很多令⼈印象深刻的特性。两⼈并没有遵循达特茅斯BASIC的规则,⽽是将多条编程指令合并到⼀⾏代码中以节省空间。为了更好地控制计算机,他们把所谓的PEEK和POKE指令也加⼊其中,这样编程者就可以预览,继⽽直接操控内存中的数据字节。这与凯莫尼和库尔兹当时的设计原则背道⽽驰。
1975年夏天,盖茨和艾伦签下了⼀份合同。艾德-罗伯茨是位于新墨西哥州阿布奎基的MITS公司的总裁。两⼈称⾃⼰为Micro-soft(微型计算机软件)之意。这份合同对于⼆⼈⾄关重要,但是⼆⼈仍与MITS保持独⽴性。
Microsoft BASIC并不是当时市场上唯⼀的微机版BASIC。1976年加州蒙特利海军研究⽣院的学⽣⼩⼽登-尤班克斯编写了CBASIC。CBASIC进售价100美元,在⼀⼩部分编写特定商业软件为⽣的半专业⼈⼠中⼤受欢迎。于此相反,盖茨的着眼点落在利润丰厚的个⼈计算机制造商⾝上,他与制造商密切合作,说服他们把软件交给微软。
库博是⼀名个⼈计算机⽅⾯的业余爱好者,库博针对所谓的“⾼⼿”⽤户推出了⼀款灵巧的⼯具-Ruby。
这款程序是⼀种壳结构集,它为⽤户在屏幕上展现⼀个长⽅形的⾯板,类似于⼯作台,⽤户可以在上⾯修改操作系统的图形外壳。有了Ruby⽤户就可以⽤⿏标将⼏个项⽬拖拽并安置在⾯板上,再将其组合起来。库博到盖茨,并将Ruby卖给了微软。
C语⾔出现后,取代BASIC成为最常⽤的个⼈计算机编程语⾔,这让微软的处境雪上加霜。⽆论如何,微软必须想⽅设法让业界更多的⼈为Windows编程,盖茨认为让Ruby和BASIC联姻可以实现,随后推出Quick BASIC 4.0。将两者合⼆为⼀并⾮易事,经过⼀年半的努⼒,Visual Basic横空出世。Windows成为⾏业内的垄断性操作系统,Visual Basic功不可没。
公路超限检测站管理办法第六章欧洲的影响⼒:从Algol到Pascal再到C++
编程语⾔的类型和结构多种多样,从FORTRAN,COBOL到Visual Basic和Java,这些主流编程语⾔都有⼀个地理上的共性:诞⽣在美国。但美国不是编程语⾔唯⼀的发源地,欧洲的发展成就也不容⼩觑,像Algol,Simula和Pascal。相⽐之下,欧洲⼈在设计编程语⾔时更偏重学术理论,美国⼈更注重经济效应。
C语⾔是由BCPL语⾔演变⽽来,CPL则是由剑桥⼤学和伦敦⼤学合作开发的⼀种编程语⾔。C代表Christopher,因为正是有了克⾥斯托弗-斯特雷奇才会有CPL。本贾尼-斯特劳斯特卢普在CPL的基础上设计出了C++。
斯特劳斯特卢普⾸次接触计算机是在丹麦上⼤学期间,当时⼤⼆他兼职为⼀些企业编写商⽤程序。1979年加⼊贝尔实验室不久,他很快发现想要拆分并分发Unix模块给多个计算机,⾸先需要借助⼀种模拟⼯具来分析⽹络流量。于是,开始着⼿模拟⼯具的开发⼯作,4年后⼀种新的语⾔C++问世了。C++最终成为了⼀种功能强⼤的编程⼯具。
斯特劳斯特卢普的“梦想”是将欧洲的两种计算机语⾔Algol和Simula合⼆为⼀。尤其是Algol,它体现了欧洲对软件的贡献,即优秀的创意,但包装和实施的⼒度不够。Algol语⾔(Algorithmic Language,算法语⾔)出⾃专业委员会,Algol是多国计算机专家,尤其是欧洲本⼟科学家共同努⼒地结果。但是Algol的设计者们很少与机器打交道,在计算机应⽤⽅⾯缺乏实战经验,所以⼀直发展缓慢。Algol开发⼩组后来分为了两个阵营:“激进派”希望开拓语⾔设计的新疆域;“实⽤派”希望改进Algol,消除现存的缺陷,并加⼊有⽤的特性。
实⽤主义者沃斯开始着⼿设计⼀种与Algol⼗分相似的语⾔-Pascal。Pascal是⼀种实⽤的⼯作语⾔,脱离了纯理论,增强了实⽤性(苹果系统Macintosh由Pascal编写)。Pascal成了⼤学⾥讲授结构化编程,尤其是编写严谨的计算机科学程序所⽤的语⾔,因此对后世影响颇深。
Simula是⼀种20世纪60年代起源于挪威的编程语⾔,开发Simula是为了研究特定⽹络中的流量,Simula由两位科学家克⾥斯登-奶家特和奥利-约翰-达尔于1962-1967年在位于奥斯陆的挪威计算机中
⼼共同完成。Simula产⽣于“运筹学”,利⽤模拟等统计学⽅法分析和解决组织性问题。Simula⽤“类”标识不同类型的数据,另外Simula还有两种相互关联的概念,即继承和对象,这使程序员能够运⽤明确定义的模块来编写软件,Simula是⾸个⾯向对象的编程语⾔。
C++充分地借鉴了Simula,斯特劳斯特卢普决定将Simula与C结合,以达到C能运⾏的地⽅C++就能运⾏的⽬的。C++的主要编译器是由斯特劳斯特卢普编写的Cfront,能够把C++编译为C。

本文发布于:2024-09-22 17:20:48,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/444559.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:计算机   编程   程序   技术   编写   软件   设计   开发
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议