首页 理论教育 计算机软件发展史

计算机软件发展史

时间:2022-02-20 理论教育 版权反馈
【摘要】:在计算机硬件技术飞速发展下,计算机软件技术同样发展迅速。因此本小节同样不会以偏概全地介绍,而是从这三个主要方面来讲述计算机软件技术的发展过程。软件的开发离不开计算机语言,因此计算机语言对于软件的发展非常重要。前面已经提到,计算机只能直接识别和执行机器语言,那么汇编语言和机器语言产生的同时必然伴随着翻译软件的产生和发展,各种翻译程序和编译器随之兴起。下面来看一下计算机语言和编译器的发展历史。
计算机软件发展史_科技史与方法论

在计算机硬件技术飞速发展下,计算机软件技术同样发展迅速。如今,各种软件,尤其是应用软件更是数不胜数。软件的开发离不开语言,而非语言要想在机器上执行就必须经过翻译,这就刺激了编译器、IDE的发展;计算机算法会帮助编程人员更快、更好地解决问题;操作系统作为整个计算机的核心,其发展不容忽视。因此本小节同样不会以偏概全地介绍,而是从这三个主要方面来讲述计算机软件技术的发展过程。

1.计算机语言与编译器

提到计算机的发展,就不能不提计算机语言。计算机语言(Computer Language)是指用于人与计算机之间通信的语言,是人与计算机之间传递信息的媒介。计算机的每一个动作,每一个步骤都是按照人们编制的计算机程序来执行的,而程序是计算机要执行的指令的集合,指令又是通过我们掌握的计算机语言来编写的。软件的开发离不开计算机语言,因此计算机语言对于软件的发展非常重要。

计算机语言的种类很多,总的来说,可以分为机器语言、汇编语言、高级语言三大类,它们也分别对应的计算机语言的发展历程,其中机器语言和汇编语言都属于低级语言。前面已经提到,计算机只能直接识别和执行机器语言,那么汇编语言和机器语言产生的同时必然伴随着翻译软件的产生和发展,各种翻译程序和编译器随之兴起。

下面来看一下计算机语言和编译器的发展历史。编程语言发展至今,大约有2 500多种,它们之间错综复杂,相互借鉴。这里仅仅介绍几种比较常用的编程语言,而且还会通过艾伦·凯和高德纳的事迹来介绍类比、灵感等科学方法。

(1)机器语言

机器语言是一种用二进制数表示的低级计算机语言,它是计算机能够直接识别和执行的唯一语言。一条计算机指令就是机器语言的一个语句。当时计算机数据的处理过程是这样的:光电阅读器将记录在穿孔卡片上数据读入计算机,计算的结果则利用打孔机在卡片上打出一些小孔,卡片上的小孔就是用机器语言表示的输出结果,完全是用0、1代码书写的程序。

图6.2.1 约翰·巴克斯

用机器语言进行编程,对编程人的要求很高,编程人员需要熟记机器指令的代码和格式,了解计算机内部的结构和工作原理,而且编程过程烦琐,效率极低。这注定机器语言不会得到广泛应用。

(2)汇编语言

为了减轻使用机器语言编程的痛苦,20世纪50年代初出现了汇编语言(Assembly Language),它是由莫奇莱发明的。人们把机器指令代码使用有助于记忆和理解的助记符来表示,助记符可以是字母、数字或其他符号,这种由助记符组成的语言就是汇编语言。汇编语言也是低级语言。

例如:MOV AX,256;表示把256放入累加器AX

汇编语言既反映了CPU的内部结构,又充分发挥了机器的特性,比机器语言更加灵活,编程效率更高。相应地,程序员并不能操纵所有的硬件资源,相当多的资源由操作系统接管。

(3)高级语言

当计算机硬件变得强大时,就需要同样功能强大的软件使计算机得到更加有效的使用,汇编语言虽然比机器语言简单易记,但是不能满足人们的需求。这时出现了新的语言——高级语言。高级语言是相对于机器语言和汇编语言而言的。高级语言与自然语言和数学语言表达方式相当的接近,它不依赖于计算机型号,独立于计算机的硬件结构,具有很好的通用性和可移植性。高级语言的使用,大大提高了程序编写的效率和程序的可读性。当然,它和汇编程序一样,不能充分地利用硬件资源,也不能被机器直接理解和执行,需要翻译成等价的机器语言才能执行。

1)早期高级语言

①FORTRAN——世界上最早的高级语言[5]

世界上最早的高级语言是FORTRAN(公式翻译器,由“FORmula TRANslator”各取前几个字母组合而成)。它是由美国IBM公司约翰·巴克斯(John Warner Backus,1924—2007年)发明的。巴克斯被誉为“FORTRAN语言之父”(如图6.2.1所示)。

约翰·巴克斯于1949年到IBM公司工作,从此开始了在SSEC(Selective Sequence Electronic Calculator,IBM早期的一台电子管计算机)机上长达三年的工作。巴克斯进入IBM公司后,就全身心地投入到工作中,并在接受的第一个大项目中就作出了贡献。当时,这个项目计算“月历”,要求能够给出一年中任何时刻月亮所处的精确位置坐标,这是一个既复杂又困难的任务,但是巴克斯出色地完成了任务。后来,他和同事海尔里克(H.Herrick)又一起成功地开发出了一种用于浮点数运算的Speedcoding程序。月历程序和Speedcoding程序的成功,为巴克斯赢得同事的尊重和上司的器重,这为他后来FORTRAN语言的开发打下了基础。

用机器语言进行编程和调试程序有很多弊端,不仅效率低,难于检查和发现问题,非常不利于交流,而且导致软件开发费用高昂。于是,巴克斯就想开发一种接近人类语言的编程语言代替机器语言,从而提高编程效率,降低开发费用。1953年他将自己的计划提交给其上级卡斯伯特·赫德(Cuthbert Hurd)。虽然遭到当时IBM公司顾问冯·诺伊曼的反对,但是鉴于巴克斯之前的优秀表现,赫德还是批准了巴克斯的计划。1954年,在巴克斯和其同事们的努力下,FORTRAN语言终于完成了,他们对外发布了FORTRAN1。1957年4月,世界上第一个FORTRAN编译器在IBM704计算机上实现,并首次成功运行了FORTRAN程序。它标志着机器语言编程时代的结束,高级语言编程时代的开始。

FORTRAN从其诞生至今,已经出现了近百种版本,随着计算机语言的发展,FORTRAN也在不断地吸收一些新概念、新思想,不断地进行完善,并增加了许多新的功能。

巴克斯不仅是世界上第一个高级程序设计语言FORTRAN的发明人,他还是最广泛流行的元语言BNF的发明人。后来还推出了一种名为FP的函数式程序设计系统,它是函数式语言的代表。巴克斯发明的函数式风格和程序代数将程序设计从冯·诺依曼形式中解脱出来。巴克斯因为其突出贡献,于1977年10月17日获得图灵奖。

②ALGOL——算法语言[5]

1960年,第一个算法程序设计语言ALGOL推出。在ALGOL语言的定义和扩展上有一人做出了巨大贡献,他就是首届图灵奖的获得者艾伦·佩利(Alan J.Perlis)。佩利曾出任普渡大学计算中心的第一任主任,在计算机中心安装了一台IBM的CPC计算机(Card Programmed Calculator),后来更新为Datatron 205。佩利为之设计了称为IT(Internal Translator)的语言,并开发了IT的编译器。1956年他转到卡内基理工学院,在那里把IT及其编译器移植到IBM650上,并在IT的基础上,和史密斯(J.Smith)、佐轮(H.Zoren)、伊万斯(A.Evans)等人一起为IBM650设计和开发了新的代数语言和编程语言。1957年,ACM成立程序设计语言委员会,设计通用的代数语言,佩利被任命为主席。1958年,在ACM小组和以当时联邦德国的应用数学和力学协会GAMM为主的欧洲小组的联合会议上,除了佩利的想法外,约翰·麦卡锡还根据LISP语言蕴含的思想正式提出了递归和条件表达式两个概念。各小组把他们关于算法的表示方法的建议合二为一,形成了一种语言。这种语言最初叫国际代数语言(International Algebraic Language,IAL),后来改叫ALGOL 58。1960年1月,在巴黎举行的全世界软件专家参加的讨论会上,正式确立了ALGOL 60,并发表了“算法语言ALGOL 60报告”。

ALGOL是纯碎面向描述计算过程的,也就是所谓面向算法描述的。ALGOL是世界上第一个清晰定义的语言,其语法是用严格公式化的方法说明的。ALGOL 60也成为程序设计语言发展史上的一个里程碑,它标志着程序设计语言由一门“技艺”转而成为一门“科学”,标志着程序设计语言成为一门独立的学科。ALGOL 60对后来的语言发展也非常具有影响力。1967年“类型”概念的提出,第一个面向对象语言Simula 67的发明,以及后来PASCAL、C和Ada语言等的创立,都是在ALGOL 60的基础上加以扩充而形成的。

2)早期其他高级语言

继FORTRAN、ALGOL语言推出后,各种高级语言如雨后春笋般不断冒出。很快就衍生出上百种语言,其中最具有代表性的有以下几种。1964年美国达特茅斯学院的两个教员约翰·凯梅尼(John G.Kemeny)和托马斯·卡茨(Thomas E·Kurtz)开发了BASIC(Beginner’s All-Purpose Symbolic Instruction Code,适用于初学者的多功能符号指令码)语言。BASIC语言号称世界上最简单的语言。比尔·盖茨正是凭借它逐步建立起了微软帝国;1967年,尼克劳斯·沃思(Niklaus Wirth)开始开发基于ALGOL的PASCAL语言,在1971年开发完成。现代程序设计语言中常用的数据结构和算法结构大都来源于PASCAL,它是一个重要的里程碑结构化程序设计概念语言;美国贝尔实验室的Dennis M.Ritchie于1972年推出C语言。先是贝尔实验室的Ken Thompson根据BCPL语言设计出较先进的并取名为B的语言,后来Dennis M.Ritchie对B语言进行进一步改进,导致了C语言的问世。C语言是早期的编程语言BCPL(Basic Combined Programming Language)发展演变而来,在1970年,AT&T贝尔实验室的Ken Thompson根据BCPL语言设计出较先进的并取名为B的语言,最后导致了C语言的问世。C语言是现在世界上应用最广泛的语言。

①面向对象程序设计语言

20世纪70年代早期,一些研究人员发现,由Lisp、Fortran和ALGOL所衍生出来的上百种语言都存在一个弱点,写出来的程序不仅很难读懂,而且如果想要修改程序的行为,往往需要整个重写。在这样的情况下,著名工程师艾伦·凯提出了一种新思想来解决这个问题,它就是“面向对象”,艾伦·凯还设计了Smalltalk语言。

艾伦·凯——“Smalltalk之父”和“个人计算机之父”

现在,面向对象语言应用非常的广泛,尤其是C++,在连续几年的语言排名中都始终占据着前三名的位置。但是,你知道面向对象语言是怎样产生的吗?你知道现代面向对象编程语言的大部分概念是谁发展起来的吗?下面,我们就来看一下面向对象的起源和发展。

世界上第一个面向对象语言是Simula语言,它是在1965年,由挪威人克利斯·奈加特和奥利-约翰·达尔共同开发的一种语言。Simula语言是面向对象编程语言的老祖宗。它支持类似主图和例图的概念,只是相关术语有所不同。程序员可以定义主图的行为,然后让每个例图都遵循这一行为。但是在面向对象语言发展过程中,有一人作出了巨大的贡献,他就是艾伦·凯(Alan Curtis Kay,1947—)(见图6.2.2),现代面向对象编程语言的大部分概念都是由他提出来的,他创立了Smalltalk语言,开创了一种简单、有效的编程风格。他是怎样萌生了面向对象的想法,运用了什么科学方法呢?这正是下面所要讨论的。

图6.2.2 艾伦·凯

艾伦·凯出生于美国麻萨诸塞州的春田市,一年后举家迁至澳大利亚,他的父亲是一位设计假肢的生理学家,母亲是一位艺术家和音乐家。科学家和音乐家的结合,使艾伦·凯从小就受到各种不同想法的熏陶,这对他以后的科学研究非常重要。1945年初,因为战争的关系,艾伦·凯又全家重返美国。1961年,艾伦·凯应召入伍,在美国空军待了两年,期间他通过了一项能力测试,成为一名程序员,在IBM 1401上工作,凯正式开始和计算机打交道。正是在这两年里,他受到极大的触动,为后来形成“对象”的概念奠定了基础。凯在空军的工作主要是为空军解决航空训练设备之间数据和过程(procedure)传输问题。在那里,有一位程序员想出了一个聪明的办法:把数据和相应的过程捆绑到一起发送。这种方法可以让新设备里的程序直接使用过程,无须了解其中数据文件的格式。如果需要数据方面的知识,可以让过程自己到数据文件里找。这种抛开数据、直接操作过程的想法对凯是一个极大的触动,为他日后创立面向对象语言Smalltalk埋下了伏笔。

凯从他母亲那里接受了熏陶,一度想以专业吉他手的身份挣钱谋生。在他接触计算机后,他可能察觉到了音乐和计算机之间的联系:“计算机程序有点类似格里高利圣歌——单声部的旋律不断在乐章中来回变化。并行程序则更类似于复调。”圣歌的一个乐章会针对某段主旋律进行多个变奏,而在计算机程序的循环中,同一段指令序列也会被重复多遍,每一次都会以不同的值开始,直到某个“终止值”判断循环结束,之后转入下一个循环,类似于圣歌的下一段旋律。而在复调音乐中,多个不同的主旋律会同时进行,就像在并行程序中同时执行多段指令序列[12]

凯的父亲也对他影响颇深。凯在离开空军后,考入科罗拉多大学。在那里,他完成了数学和分子生物学的学习,毕业后来到了犹他州大学念计算机科学系。他试图找到某种基础构件,支持一种简单、有效的编程风格。生物学知识的学习是他后来灵感的来源:“我的灵感就是把看作生物学上的细胞。”与生物学的类比让凯总结出三大原则,这就是Smalltalk的初步想法:第一,每个“例”细胞都遵从“主”细胞的某些基本行为;第二,每个细胞都能独立运作,它们之间由能透过细胞膜的化学信号进行通信;第三,细胞会分化——根据环境不同,同一个细胞可以变成鼻子的细胞,也可以变成眼睛或者脚趾甲的细胞。这就是面向对象中的“主/例”区别、信息传递和分化原则,后来都涌到了Smalltalk的设计中。

凯在产生面向对象的基本概念后并没有立即着手设计。他后来到本迪克斯(Bendix)公司工作,在那里认识了埃德·积德尔(Ed Cheadle),他们一起开发了FLEX机(一种台式机,重350磅)。当时的个人计算机有一个最主要的问题,就是无法预测用户的需求,一旦所有人都有权使用,就会出问题。从这里,凯认识到开发可扩展语言(用户能够根据自身领域的术语和操作进行修改的计算机语言)的重要性。

1969年,凯完成了犹他州大学的博士学习,到斯坦福大学人工智能实验室工作,主要教授系统设计。在教书期间,凯构思了一种书本般大小,能将用户(特别是孩子们)与世界相连的个人计算机,它就是Dynabook。为了发展Dynabook,他开始设计一种新语言。一年后,凯加入施乐公司,加入PARC(Palo Alto Research Center,帕洛阿尔托研究中心)。1971年夏天,凯开始设计这种新语言,它就是Smalltalk。Smalltalk确实与生物学上的类比相吻合:相互独立的个体(细胞)通过发送讯息彼此交流。每一条讯息都包含了数据、发送者地址、接收者地址,以及有关接收者如何对数据实施操作的指令。凯把这种简单的讯息都贯彻到Smalltalk语言中。1972年9月,他已经完成了对基本想法的简化,并把Smalltalk的整个定义写在了一张纸上。这些想法是凯所谓“面向对象”的核心内容,它在20世纪90年代变成了软件设计的基本技巧。正是因为凯的发明,我们可以通过创建对象,模拟人和存在物。这使我们的世界不必再为每一个应用都设计一门新的语言。

Smalltalk功能非常的强大,在20世纪90年代,C++流行起来后,得州仪器公司的Smalltalk三人团队和任意数量策划程序员的C++团队进行了一次“编码大赛”,Smalltalk团队轻松获胜。但是,当时施乐管理层否定了对PARC在硬件和软件方面继续供给资源,使很多PRAC技术的创造性成果没有在施乐手上发展起来,例如,个人计算机、激光打印机、鼠标、以太网;图形用户界面、Smalltalk、页面描述语言Interpress(PostScript的先驱)、图标和下拉菜单、所见即所得文本编辑器、语音压缩技术等,尤其是他和PARC其他成员合作开发的世界上第一个具有图形用户界面的个人计算机Alto未能成为产品推向市场,这很令人遗憾。后来,具有远见的乔布斯在参观PARC后,对视窗图形用户界面印象深刻,而学去了这项技术大力发展,开发出了Macintosh并大获成功,成就了现在著名的苹果公司。

艾伦·凯关于Smalltalk语言的设计,奠定了面向对象语言的基础,推动了面向对象的发展,其创造的术语“面向对象”更是成为20世纪90年代中期以来编程领域最基本的规范之一。因为Smalltalk和Alto的发明,艾伦·凯享有“Smalltalk之父”和“个人计算机之父”的美称。2003年,64岁的艾伦·凯被授予图灵奖。

艾伦·凯的科学方法

从Smalltalk语言的发明,我们可以很明显地看到艾伦·凯常用的两种方法,那就是类比和灵感。

a.类比方法

所谓的类比是这样一种推理,即根据A、B两类对象在一系列性质或关系上的相似,又已知A类对象还有其他的性质或关系,从而推出B类对象具有同样的其他性质或关系[13]

类比方法是艾伦·凯最常用的一种方法。他对计算机进行理解和研究的过程中,习惯上把它类比成自己所熟悉的一种事物。他把表面上毫不相干的音乐和计算机联系起来,把计算机程序和格里高利圣歌的旋律相类比。这帮他更好地理解计算机程序。他还把计算机编程与生物学相类比,把“类”等概念看作生物细胞,从而总结出三大原则,形成Smalltalk思想的雏形。即使是在理解个人计算机和大型机的区别时,也用了比喻的方法:“我们曾把个人计算机比作私人汽车,而大型机则是公共铁路[12]。”虽然最后,艾伦·凯发现这种比喻不太恰当。但是可以看出类比方法在艾伦·凯的科学方法中占有很重要的地位。

当我们面对新的研究对象或陌生的认识领域,需要解开一个新的“自然之谜”时,通常是从已知的对象或已知的领域出发做出各种类比,用我们熟悉的事物帮助我们理解未知的事物。自然界的客观事物之间往往存在相似关系,从微观、宏观、到宇观,从无机界到有机界,莫不如此。而且在不同研究领域中起作用的或在同一学科领域的不同部分中起作用的自然规律之间也存在联系。客体与主体之间存在相似性,自然规律之间也存在相似性。类比是科学发现这种创造性工作最有密切联系的一种逻辑方法,是推动科学认识的有力工具[13]。因此学会正确的运用类比方法非常的重要,通过类比我们可以更加深刻的理解新事物,更好地进行科学研究工作,有利于充分发挥我们的创造能力和创新能力。

b.灵感方法

科学思维中的灵感,通常是指突然出现的一种具有创造性认识内容的模糊观点。

灵感也是艾伦·凯应用的一种科学方法。艾伦·凯曾经说过“我的灵感就是把这些看作生物学上的细胞。”他从与生物学的细胞相类比中得到灵感,形成面向对象的基本概念。

灵感是可遇而不可求的,它有很大的偶然性。它一般是在苦苦思索后得到的一种对所思考事物的直觉或顿悟。灵感的诱发因素是机遇的,人们不能事先预知灵感出现的时间和地点,灵感大多是突发式的。灵感虽然很难预见,但是也并不是无迹可寻。灵感的触发总是借助于一定的方法。例如上例中,艾伦·凯的例子,类比方法就起了灵感触发的作用。灵感也不是随心所欲,凭空出现的。如果不具备相当的知识,在大脑中没有适当的知识“储存”,那是不可能产生相关灵感的。我们不能指望一个从没有接触过计算机相关知识的人会突发灵感,产生“面向对象”的想法。

灵感是一种重要的科学方法,它是认识的升华。一方面我们要抓住科学发现中的灵感;另一方面,我们也不能完全把创新寄托于灵感之上。只有努力地学习相关的科学知识,提高自身的文化素养,才能在科学研究中迸发更多的灵感,得到更大的收获。

面向对象思想从60年代的Simula语言开始,发展已经近50年,其自身理论已经十分完善,被多种面向对象程序设计语言实现。尤其是C++、Java、C#等一些比较流行且日趋成熟的编程语言,深受Smalltalk语言的影响。80年代初,布莱德·确斯(Brad Cox)在其公司Stepstone发明Objective-C。它是一种扩充C的面向对象编程语言;1983年,布贾尼·斯特劳斯特卢普(Bjarne Stroustrup)在AT &T Bell实验室研发了语言C++,这是目前流行的最广泛的面向对象编程语言,但为了保证与C的兼容性,丧失了一些好的面向对象编程语言的特性;1995年5月Sun公司推出的Java语言,这是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是纯粹的面向对象语言;1995年12月,动态语言Ruby发布。Ruby的语法像Smalltalk一样完全面向对象、脚本执行,而且具有Perl强大的文字处理功能;2000年6月,微软公司推出由主要由安德斯·海尔斯伯格(Anders Hejlsberg)主持开发的C#编程语言。C#是一种面向对象的、运行于.NET Framework之上的高级程序设计语言,继承了C、C++、Java语言的一些强大功能,是第一个面向组件的编程语言,而且它和Java一样,都是纯粹的面向对象语言。

计算机编程语言发展至今,种类多达2 500多种,它们之间相互借鉴,互相包含,各自具有其特点。

编译器/集成开发环境之争

计算机语言的发展促使一系列语言编译环境开发和使用,以及整个.net架构的形成。

编译器的作用是把某种语言写的代码转变成机器语言,从而使代码可以被机器识别和执行。世界上再早的高级程序设计语言Fortran的作者就曾说过,语言设计很容易,但是写编译器非常困难。集成开发环境(IDE),就是给你提供一整套工具来帮助你开发软件,这套工具一般包括:针对不同语言的编译器和链接器、SDK软件开发包(其中包括你能使用的各种函数库,就好比C++标准库)、一些辅助工具(比如调试器、图标设计、代码编写界面等),IDE中往往都包含了针对不同语言的编译器。

高级语言的发展促使了一系列编译器和IDE的产生和发展。

a.微软和Borland的竞争

在各大积极开发编译器的公司中,微软和Borland的竞争最为激烈。它们先是在BASIC上展开斗争。依靠BASIC起家的微软于1975年推出了BASIC的编译器Microsoft basic(qbasic),但是反响不是很好;1983年菲利普·卡恩(Philippe Kahn)和安德斯.海尔斯伯格(Anders Hejlsberg)在美国加州的Scotts Valley成立Borland公司,从事软件开发。同年推出Tuibo pascal。Tuibo pascal提供了一个集成环境的编译工作系统,集编辑、编译、运行、调试等多功能于一体,是borland公司推出的第一个作品,推出后获得极好的声誉。

继BASIC之后,C语言的大力推广,促使两公司再次进行竞争。Borland公司于1987年首次推出Turbo C产品,针对C语言的编译工具,它是最熟悉的编译工具了。在Turbo C中使用了一系列下拉式菜单,将文本编辑、程序编译、连接以及程序运行一体化,大大方便了程序的开发。全然一新的集成开发环境,受到用户的极大欢迎。该公司还相继推出了一套Turbo系列软件,如Turbo BASIC、Turbo Pascal、Turbo Prolog,这些软件都很受用户欢迎;微软也不甘示弱,后来微软推出了Micorsoft C,也是一款对于C的编译器,但是它的反响仍然比不上borland,borland占领了大部分市场份额。

C++编译器的发展仍然离不开两者的推动。1990年,Borland推出Eugene Wang设计的C++的IDE Borland C++,它红极一时,曾经占到了C、C++市场的绝大部分;1992年,微软公司推出针对Win32的开发环境Visual C++,即Microsoft Visual C++。刚开始推出时,完全败给Borland,但是后续版本功能越来越强大,逐渐赢回市场份额。

1991年,微软公司推出Visual Basic(简称VB)版本。最初的设计是由阿兰·库珀(Alan Cooper)完成的。Visual Basic是一种由微软公司开发的包含协助开发环境的事件驱动编程语言,采用Quick Basic的语法,引入事件驱动,拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,支持拖曳,并支持动态调试。当时引起了很大的轰动;1995年,Borland公司推出Delphi。它以pascal语言为主体,并进行改造,它使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,并引入了完整的面向对象程序语言(Object-Oriented Language),而且编译速度更快,会大大地提高编程效率。让广大的程序开发人员感到惊喜。

b.Java编译器、IDE之争

Java语言在1995年面世后,因为其操作系统无关等优良特性,随着网络的普及迅速发展起来。各个软件公司很快意识到这门语言的发展前景,于是纷纷跟进,推出相关的编译器和IDE,这不再是微软和Borland两家的竞争,而是一场大混战。

这次SymanTec公司抢占了先机,它以最快的速度发布了具有集成、编译调试环境的Visual Cafe。这是第一个Java开发环境,由原Borland公司Borland C++的设计者Eugene Wang开发。但是随着Eugene Wang的离开,Visual Cafe的后续开发逐渐下滑,最终以失败告终;微软同样不落人后,很快开发了VJ++。虽然VJ++各方面相当出色,但是由于微软对Java标准进行了修改,引起了Sun的不满,且用户也担心标准不一致会影响使用,所以VJ++并没有获得太大的成功;Sun公司虽然是Java的开发者,但是却在Java IDE的第一战中输得很惨。在Symantec公司和微软之后自己也推出了一款Java的IDE SUN Workshop,但是不论在功能、执行效率方面都比不上竞争对手,而且小问题一大堆,慢慢地退出了Java开发工具的市场,后来推出了一个免费的Java IDE(Netbeans)才挽回了一点局面;Borland是最后一个推出Java IDE的公司,它推出了JBuilder,但是初始版本表现太差,反响并不好。后续版本得到极大改善才一举击败所有对手,占据了Java市场。但是好景不长,正在Borland为Java的胜利欢呼的时候,IBM的Eclipse出现了;Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件构建开发环境。主要由Eclipse项目、Eclipse工具项目、Eclipse技术项目三个项目组成,支持Java开发、C开发、插件开发,它提供建造和构造并运行集成软件开发工具的基础。

总的来说,在众多Java的集成开发环境中,目前Eclipse最受欢迎,JBuilder和Netbeans也占据了一部分市场。

c.微软.NET战略

在JAVA的IDE之争中,微软并没有占到便宜。于是,2000年,微软启动.NET战略,其目标是希望帮助用户,能够在任何时候、任何地方、利用任何工具都可以获得网络上的信息,并享受网络通信所带来的快乐。Anders被任命为微软.NET的首席架构师,支持.NET的开发工作,并几乎一手开发了C#。C#充分借鉴了C和Java的语言,甚至照搬了C的部分语法几乎集中了所有关于软件开发和软件工程研究的最新成果。.NET架构不仅包括C#,还包括ASP.net、VB.net等一系列的新语言。微软达到了和Java全面抗衡。

虽然竞争是残酷的,但是正是因为各大公司的竞争,才使得软件行业一刻不停地向前发展,软件的功能越来越完善。

2.计算机算法

算法对于软件来说非常重要,它可以帮助我们非常快速、准确地解决问题。现在的计算机算法非常多,我们不可能在这里一一进行介绍。计算机前辈们是怎样把算法发展起来的呢?他们又用了怎样的科学方法呢?下面我们就以著名的科学家高德纳的例子,看一下他的算法之路。

(1)高德纳及其科研方法

高德纳——算法大师

高德纳(Donald Ervin Knuth,中文名:唐纳德·E.克努斯,1930—)在其职业生涯中受到公众广泛的赞誉和褒奖。他一生成果无数,在编译器、排版印刷软件系统、算法等多个领域都有突出贡献。甚至其自传的开篇都有这样的感叹:“高德纳真的是一个人吗?”

高德纳于1938年出生于密尔沃基,其父是克努斯家族的第一位大学生。他继承了父亲对音乐和教育的理解,尤其是语言风格。

从初中开始,他的聪明才智就展露无遗。八年级时参加糖果生产商赞助的拼词比赛,结果比裁判给出的“官方”单词表都多2 000个。高中时创立了“普茨比度量衡体系”,里面包括一些如长度单位普茨比等一系列的基本单位。他因此得到西屋科学天才奖的提名。1956年,高德纳第一次接触到计算机,那是一台IBM 650。他根据IBM手册里面的编程实例学习编程并对其改进。1958年时,他为凯斯校篮球队编写了一个根据命中率、抢断、失误等数据为球员评分的程序。这套程序受到球队教练的好评,《新闻周刊》还为此专门写了一篇报道[12]

高德纳开始其辉煌的职业生涯是在1962年。这一年,高德纳应Addision-Wesley出版社的邀请,为编译器这一领域写一本书。这本书就是后来著名的《计算机程序设计艺术》。《计算机程序设计艺术》包罗万象,书中的每一个理论都会有巨细无疑的讨论和解释,每一条理念都蕴含着美感。当然了,如此详细的工程不是一本书可以完成的。它是一套丛书,开始的计划是出一套七卷册系列丛书。《计算机程序设计艺术》出版后得到广泛赞誉,它的前三卷(“基础算法”“半数值算法”“排序与搜寻”)成为20世纪70年代初教科书的首选,现在也被频频用于参考书。这套书更加难能可贵的一点是它的编写是与时俱进的,总是尽力跟上时代的步伐,如高德纳自己说的那样:“在1966年,举一人之力就可以了解这个计算机科学领域,但是它一直在不断成长壮大。我已经尽全力跟上它的步伐。”现在,《计算机程序设计艺术》已经出版到第四卷(“组合算法”),第五卷“造句算法”、第六卷“上下文无关语法理论”、第七卷“编译器技术”仍然在写作之中。其中第五卷预计2015年完成,也许不久我们就会见到它的面世了。

在编译器方面,高德纳最知名的算法成果就是LR(k)分析法,这是他在编写《计算机程序设计艺术》过程中突然想到的。LR(k)分析法采用“前瞻”的技巧检视字符串后面的内容,使句子的解释更加准确,可以处理更多的语言。

高德纳还发明了一个重要的算法就是他的“精确分析算法”。这种算法能够明确的证明某个算法花费的时间与输入的平方的比值倍数,相比较于很多计算机科学家的模糊指定来说,意义重大。高德纳对于数学定理的推论也很有研究,曾与加州理工学院带的本科生彼得·本迪克斯(Peter Bendix)合作开发了一种名叫克努斯—本迪克斯的算法。这个算法对于探索各种定理的含义,验证通过这些定理得到的结论很有帮助,而且精确度比一般方法高得多。

高德纳兴趣广泛,不仅对计算机的很多领域颇有研究,对印刷设计和绘图技术同样十分着迷。在1977年听说印刷设备可以仅由0和1的比特,而不需要铅时,就产生了要开发一种新的计算机工具,用来写自己以后的书的想法。这个想法产生后,高德纳立刻暂停手上的其他项目,投入到这个想法的实现中。历时9年,他成功地开发了两套计算机语言,那就是TEX(在页面上可以为字母和其他字符排版)和METAFONT(可以定义文字本身形状)。这些程序的免费通用,使无数人受益,得到众多出版社的青睐。

高德纳因为其卓著的贡献,获得过无数赞誉和褒奖。例如1974年获得计算机科学界图灵奖,1979年获得吉米·卡特总统办法的美国国家科学奖章。面对这些荣耀,高德纳泰然处之,仍然保持着一丝不苟的精神进行科学研究工作。现在高德纳仍然在撰写《计算机程序设计艺术》,其他如音乐等也广泛涉猎。

(2)高德纳的成功秘诀

高德纳在编译器、算法分析、字体研究等方面都取得很大成就,是什么造就了他传奇般的职业生涯呢?难道他有我们所不知道的科学方法吗?

从高德纳的自传和其他人的故事中我们可以找到一些关于这些问题的蛛丝马迹。他的成功秘诀中以下几点很重要。

①独特的背景知识

“我们常说需要乃发明之母,这句话并不确切,一个人还得拥有该领域的背景知识。我并不是随走随看,研究自己看到的每一个问题。我解决的那些问题,都是因为我正好有独特的背景知识,也许会帮助我解决它——这是我的命运,我的责任。”

高德纳说他解决的那些问题,都是因为他正好有独特的背景知识。确实如此。前面在显微镜和望远镜的发明和使用中也讲过这个道理。利珀希和詹森具有制造眼镜的技术,他们都有工艺上的背景知识,所以他们可以先他人一步发明望远镜和显微镜。但是他们不具有生物、物理等方面的理论背景知识,无法把自己的发明用到更加伟大的事业当中。

在艾伦·凯发明面向对象的过程,我们也可以看到,因为他具有音乐、生物和语言编程的背景知识,所以他可以把音乐旋律、生物细胞和编程联系起来,从而产生面向对象的基本概念。因此,作为一个科研工作者,应该广泛涉猎各种有用的科学知识,拓展自己的知识面。

②一丝不苟、一次只做一件事

“我一次只做一件事,这就是计算机科学家们所说的批处理——与之相反的就是交换进出。我从不交换进出。”

专心致志地干一件事是成功的关键。虽然有的人也许能够做到一心二用,但是一件事还会被另一件事分去精力。高德纳在开发TEX和METAFONT的时候,就是暂停手上的其他项目,全身心地投入到这一件工作中。天才尚且如此,我们就更加应该这样了。当我们在做一件事的时候,就要做到全身心地投入,不要不停地“换进换出”。

③乐于理解事物

“总的来说,不管你想研究的是什么,只要你能想象自己要对计算机来解释它,你就能发现这一主题中有哪些你还不太了解的地方。这能帮助你提出正确的问题,也是对你所知的终极考验。比如,人们提出音乐理论是为了对什么好听、什么不好听作出客观而非主观的解答。我们知道莫扎特的音乐很好听,因为曲目和谐等。但当你要为计算机写出一个程序,让它创造真正优秀的音乐时,你就会知道已有的那些规则是多么苍白。”

人往往都有逆反心理,自己愿意做的事情就会积极主动地去做,情绪高涨,想尽各种办法解决难题,而不愿意做的事情就会产生懈怠,提不起精神。高德纳取得如此广泛的成就,与他理解事物的意愿分不开。“20世纪50年代程序员用代数计数法在卡片上打孔,然后‘喂’到机器里面去。之后各种灯开始忽明忽灭,机器砰然作响——计算机指令就这样被打出来!真是让人叫绝。我无法相信这一切就这样发生了,所以必须弄明白其中的原理。而当我弄明白之后,我发现可能还有更好的方法。”发明和创造都是需要以理解为基础的,只有彻底地理解了某事物,我们才能在上面进行创新。我们应当学习高德纳乐于理解事物的学习习惯,对事物理解得越透彻,我们的收获越多,开展新工作的可能性更大。

④对编程热衷、细心、准确的工作习惯

艾伦·凯讲过一个故事,我们从里面也能一窥高德纳的成功秘诀。高德纳曾经参加过在感恩节举行的编程竞赛。他用一台只能远程批处理的参赛最烂系统打败了所有人,程序调试时间最短、算法执行效率最高。当时的其他参赛者也问高德纳“你怎么这么牛”。高德纳回答:“我学编程的时候,一天能摸5分钟计算机就不错了。想让程序跑起来,就必须写得没有错误。所以编程就像在石头上雕刻一样,必须小心翼翼。我就是这样学编程的。”

习惯决定一切。良好的工作习惯是成功的一半。“我善于观察细节,这是从小接受的训练决定的。”高德纳从小就培养了细心观察、力求准确的学习习惯,所以他在观察时可以发现很多容易忽略的细节,加上他对编程的热衷,使他无往不利。

高德纳的成功秘诀看上去很简单,却并不容易做到。只要不断地学习,用各种知识充实自己,保持对工作的热情,一心一意地做事,耐心、仔细地观察,正确地运用科学方法,总会成功的。

(3)其他重要算法发展

在算法的发展道路上,众多科学家都为之作出了贡献。艾兹赫尔·W.戴克斯彻(Edsger W.Dijkstra)发明了最短路径算法,现在广泛应用于铁路建设、地图导航等领域。提出哲学家进餐问题,认识到“死锁”和“饥饿”。类比铁路系统,提出“互斥”方法PV操作;迈克尔·O.拉宾(Michael Oser Rabin)与达纳·斯科特合作提出了非确定性自动机,奠定了计算机语言处理的基础,并研究了随机算法,推动了密码学和网络计算的发展;罗伯特·E.陶尔扬(Robert Endre Tarjan)研究关于平面图判别问题,采用深度优先算法发现线性算法,提出网络最佳流量计算等优美的算法,为世界创立了一套精确判断算法质量的新标准;莱斯利·兰伯特(Leslie Lamport)受到物理学中爱因斯坦相对论的启发,提出面包店算法、时钟近似同步算法,为日后网络空间的基础性架构奠定了基础;史提芬·古克(Stephen Arthur Cook)和利奥尼德·列文(Leonid Anatolievich Levin)彼此独立地给出设计、运筹和人工智能领域中许多“难解易验”的问题给出描述,建立NP完全问题的概念……

无数科学家的努力,诞生了众多优秀的算法,帮助我们更好更快地解决问题,提高了工作效率,方便了人们的生活。

3.操作系统的发展

操作系统(OS)作为计算机软件系统的核心,其发展有着非常重要的意义。在计算机刚问世时,除了硬件和应用软件外,几乎没有中间层软件,也没有操作系统。此阶段的用户独占机器,人们通过各种操作按钮来控制计算机。后来随着汇编语言的出现,操作语言开始通过有孔的纸带将程序输入计算机进行编译。人与机器交互的需要迫使了操作系统的产生。

计算机操作系统的发展经历了两个阶段。第一个阶段是早期单用户单任务的操作系统,以CP/M、MS-DOS等磁盘操作系统为代表;第二阶段是现代多用户多任务和分时实时操作系统,Windows、UNIX、Linux以及MacOS操作系统为代表。

(1)早期操作系统

早期的操作系统是单用户单任务的操作系统,结构简单,主要指的是批处理系统、CP/M操作系统、磁盘操作系统。

①批处理操作系统

批处理系统是大约五六十年代的计算机操作系统。最早的是单道批处理系统。此时的操作系统只是一段常驻内存的监督程序。操作人员把若干作业合成一排,安装在输入设备上,然后由监督程序监督这些作业按顺序依次完成,这是单道工作方式。后来在单道批处理系统的基础上引入了双缓冲机制、脱机输入/输出、SPOOL-ing技术等。此时计算机内存可以同时支持多道程序,处理机(单处理机)以交替的方式处理多道程序。虽然实际上某一时刻处理机只运行一个程序,但是从宏观上看,好像处理机在同时运行多个程序。这种工作方式的系统被称为多道批处理系统。

②CP/M操作系统

随着计算机硬件和大规模集成电路的发展,微型计算机迅速发展起来,这促使微机操作系统出现。CP/M(Control Program/Monitor,控制程序或监控程序)操作系统是第一个微机操作系统(8位操作系统),这个系统允许用户通过控制口的键盘对系统进行控制和管理,其主要功能是对文件信息进行管理,以实现硬盘文件或其他设备文件的自动存取。

CP/M在1973年由PL/M的创始人Gary Kildall(加里·基尔代尔)博士研制成功,1974年,向全世界公布,第一版的版本号为V。后来又陆续推出了一些新版本。CP/M开创了软件的新纪元,称得上是计算机改朝换代的里程碑。但是后来在16位CPU市场上惨败给败给了Microsoft的MS-DOS,从而从市场上消失。

③磁盘(DOS)操作系统

继CP/M操作系统后,出现了磁盘操作系统(Disk Operating System,DOS)。

磁盘操作系统是个人计算机上的一种面向磁盘的操作系统软件。有了磁盘操作系统,程序员就不必去深入了解机器的硬件结构,也不必去死记硬背那些枯燥的机器指令。只需通过一些接近于自然语言的DOS命令,就可以轻松地完成绝大多数的日常操作。此外,DOS还能有效地管理各种软硬件资源,对它们进行合理地调度,所有的软件和硬件都在DOS的监控和管理之下,有条不紊地进行着自己的工作,但是在操作不慎情况下也会死机。

DOS中最成功的是微软的MS-DOS(16位OS),它是1980年微软为IBM个人计算机及其兼容机上开发的操作系统,它起源于SCP86-DOS(也是CP/M一类的操作系统),是基于8086微处理器而设计的单用户的操作系统。从1981—1995年的15年间,磁盘操作系统在IBM PC兼容机市场中一直占有举足轻重的地位。磁盘操作系统家族除了微软的MS-DOS外,还有MS-DOS、PC-DOS、DR-DOS、PTSDOS、ROM-DOS、JM-OS等操作系统。16位DOS的出现,标志着微型计算机进入一个新纪元。

(2)现代操作系统

随着社会的发展,计算机应用越来越广泛,单用户的操作系统已经远远不能满足人们生产生活的需要,急需一种新的计算机操作系统来解决这一问题。此时的各大公司为了抢占先机,也相互较劲,都争先恐后推出自己的产品,各种新型的现代操作系统如雨后春笋般不断出现。计算机操作系统的发展进入第二阶段,它是以多用户多任务和实时、分时为特征的操作系统,其中有许多都非常优秀,为现在人们广泛使用,下面我们就简单介绍一下这些计算机操作系统:Windows、UNIX、Linux、Mac OS。

1)UNIX操作系统

肯尼思·汤普逊和丹尼斯·里奇

在计算机软件的发展过程中有两人在语言和操作系统方面做出了非常突出的贡献,他们就是AT&T(贝尔实验室)的肯尼思·汤普逊(Ken Thompson,后被称为UNIX之父)和丹尼斯·里奇(Dennis MacAlistair Ritchie)[5]。两人共同设计、开发了UNIX操作系统和C语言。UNIX操作系统是一个强大的多用户、多任务操作系统,支持多种处理器架构,属于分时操作系统,于1969年开始开发,直到现在仍然是软件开发的重要平台,应用广泛;而C语言是现在应用最广泛的高级编程语言。

汤普逊和里奇研究UNIX分时操作系统的想法源于早期MULTICS的开发。汤普逊和里奇最初一起在贝尔实验室工作,曾经被派到MIT去参加由ARPA出巨资支持的MAC项目,开发第二代分时操作系统MULTICS。但是在MAC项目完成前不久,贝尔实验室因感到开销太大而成功的希望不大,退出了这个项目。因此,汤普逊和里奇也随着项目的退出回到了贝尔。汤普逊和里奇在已经接触并参与开发分时操作系统后,已经不满足于贝尔实验室的批处理方式工作。分时操作系统工作方式和批处理方式相比,程序员和设备的效率都有很大提高。于是他们两人决定“要创造一个舒适、愉快的工作环境”,自己开发一个多用户多任务的操作系统。但是,他们也知道贝尔实验室不会支持这个决定,只能开始悄悄地干。

1969年,汤普逊和里奇开始着手研究,在MULTICS项目中学到的多用户、多任务技术发挥了重要作用。刚开始的时候两人只能在一台贝尔弃之不用的PDP-7上工作。PDP-7上除了一个硬盘、一个图形显示器和一台电传打字机的硬件设备外,什么软件也没有,他们只好与一种GE 645大型机配合使用。但是这台机器在两年后也不能继续使用了。正在他们为设备而发愁的时候,一个消息给他们带来了新的希望。实验室的专利部需要一个文字处理系统以便处理专利申请书。听到这个消息,汤普逊认为他们的机会来了,立即找到上级自告奋勇承担这一开发任务。在这个正当理由下,他们的开发终于不再受到各种限制了。1971年,汤普逊写了一份充分长篇的申请报告,申请到了一台新的、设备完善的PDP-11/24机器。在新设备的帮助下,他们的开发工作进展很快,1971年年底的时候,UNIX已经基本成形。UNIX吸取和借鉴了MULTICS的经验,加入了内核、进程、层次式目录,面向流的I/O,把设备当作文件等新概念,而且还进行了创新,例如,采用了一种无格式的文件结构,使文件由字符串加句号组成;采用不同于MULTICS的设计方法,实现把设备当作文件的难题。

UNIX首先在贝尔实验室的专利部使用,打字员纷纷称赞UNIX简单好用,提高了工作效率。这是UNIX的第一个版本,1971年UNIX又增添了管道功能,发行第二版本。UNIX的第一和第二版都是用汇编语言书写,很难进行移植。为了便于移植,汤普逊和里奇一直尝试用高级语言重写UNIX。剑桥大学的里查兹(M.Richards)曾于1969年开发了BCPL语言,1970年,汤普逊在BCPL的基础上开发了B语言,里奇又在B语言的基础上开发了B语言的改良版C语言。最终汤普逊和里奇成功的用C语言重写了UNIX核心,这就是第三版UNIX。至此,UNIX这个操作系统修改、移植相当便利,为UNIX日后的普及打下了坚实的基础。而UNIX和C完美地结合成为一个统一体,C与UNIX很快成为世界的主导。

1974年7月汤普逊和里奇在《the Communications of the ACM》发表UNIX的第一篇文章“The UNIX Time Sharing System”。结果可想而知,UNIX系统引起了学术界的广泛兴趣并对其源码索取,所以,UNIX第五版就以“仅用于教育目的”的协议,提供给各大学作为教学之用,成为当时操作系统课程中的范例教材。各大学、公司开始通过UNIX源码对UNIX进行了各种各样的改进和扩展。其中改良最好的是加州大学伯克利分校计算机系统研究小组(CSRG),他们在原有UNIX基础上增加了很多当时非常先进的特性,组成一个完成的UNIX整体(Berkeley Software Distribution,BSD)并对外发布,很多商业公司纷纷采用。于是,UNIX开始广泛流行。

后来,AT&T公司注意到UNIX所带来的商业价值开始禁止大学使用UNIX的源码,包括在授课中学习。他们也不断推出新的UNIX商业版本,最后他们推出了UNIX System V版本,它充分吸收了BSD UNIX的先进特性。一时UNIX System V和BSD UNIX成为当时UNIX两大主流。但后来,UNIX系统实验室指控加州大学伯克利分校计算机系统研究小组泄露商业秘密,很多BSD UNIX商家为了避免法律问题,纷纷转而用UNIX System V。

UNIX系统主要用于小型机、工作站和服务器,是现在使用最广泛的操作系统之一。现在主要版本有AIX、Solaris、HP-UX、IRIX、Xenix、A/UX等。

2)UNIX成功的关键

UNIX作为现在最流行的操作系统之一,主要有以下两个关键因素。

①积极创新、不断进取

汤普逊和里奇在进行分时操作系统的研究时,借鉴了MULTICS的一些科学经验,但是他们并没有完全照搬MULTICS的设计方法,而是进行了创新。前面已经提到,UNIX增加了无格式的文件结构的新方式,并改进了MULTICS中把设备当作文件的实现方法。可移植性的特性是UNIX成功的一个非常重要的因素。为了增加可移植性,汤普逊和里奇还不辞辛苦地开发了C语言。他们的这种孜孜不倦的进取精神值得我们学习。

创新是进步的源泉,任何旧事物向新事物的转变都离不开创新。从计算机硬件和软件的发展来看,确是如此。每一项新技术的诞生往往都是在已有的技术上进行了创新。从电子管到集成电路是工艺技术的不断创新,从机器语言到高级语言也是在不断创新。从事科学研究的工作人员必须要具备这种创新精神。创新是推动我们向前发展的重要力量,是科学技术进步的保障。

②各大行业的共同推动

UNIX得到广泛应用与好评的另外一个原因就是各大行业的共同推动。UNIX推出后,其源码可以无偿提供给各大学和公司,这为大学和公司根据自己的需求对其进行改良和创新提供了条件。正是因为很多人的共同推动,许多新的特性被加到UNIX系统中,使得UNIX的功能越来越完善,操作越来越简单。古有名言“众人拾柴火焰高”,正是应了这个道理。

3)其他主流操作系统

①Windows操作系统

Windows是Microsoft公司在1985年11月开始发布的窗口式多任务桌面操作系统。最初只是MS-DOS的模拟环境,随着计算机硬件和软件的不断升级,Windows操作系统也不断更新,变得越来越方便,越来越人性化。现在最新版本是Windows 8系统。

Windows操作系统使计算机进入图形用户界面时代。现在微软仍然致力于Windows操作系统的开发和完善。未来一定会出现性能更好的Windows系统。

Linux操作系统[14]的内核由林纳斯·托瓦兹在1991年10月5日首次发布。Linux操作系统是一种自由和开放源代码的类UNIX操作系统,是UNIX系统变种,继承了UNIX系统的一系列优良特性。Linux是一个免费软件,只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。这为Linux的发展创造了条件。而且它具有与主流的UNIX系统兼容的特性,这使得它一出现就有了一个很好的用户群。

目前流行的主流Linux发布版主要包括:Debian(及其派生版本Ubuntu、Linux Mint),Fedora(及其相关版本Red Hat Enterprise Linux,CentOS)和openSUSE等。

③Mac OS操作系统

Mac OS是一套运行于苹果Macintosh系列电脑上的操作系统。1984年,苹果公司发布了System 1,这是一个黑白界面的,也是世界上第一款成功的图形化用户界面操作系统。从System版本开始苹果操作系统更名为Mac OS,版本依次为8、9、10,2011年发布Mac OS X v1后,苹果称其为“OS X Lion”,其后的系统均改名为“OS X”。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈