编译器的发展史

编译器的发展史,第1张

编译器

编译器,是将便于人编写,阅读,维护的高级计算机语言翻译为计算机能识别,运行的低级机器语言的程序。编译器将源程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。源程序一般为高级语言(High-level language),如Pascal,C++等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。

一个现代编译器的主要工作流程如下:

源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连接器(链接器,Linker)→可执行程序(executables)

目录 [隐藏]

1 工作原理

2 编译器种类

3 预处理器(preprocessor)

4 编译器前端(frontend)

5 编译器后端(backend)

6 编译语言与解释语言对比

7 历史

8 参见

工作原理

翻译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器言)。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。

典型的编译器输出是由包含入口点的名字和地址以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。

编译器种类

编译器可以生成用来在与编译器本身所在的计算机和 *** 作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高级语言作为输入,输出也是高级语言的编译器。例如: 自动并行化编译器经常采用一种高级语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语言构造进行注释(如FORTRAN的DOALL指令)。

预处理器(preprocessor)

作用是通过代入预定义等程序段将源程序补充完整。

编译器前端(frontend)

前端主要负责解析(parse)输入的源程序,由词法分析器和语法分析器协同工作。词法分析器负责把源程序中的‘单词’(Token)找出来,语法分析器把这些分散的单词按预先定义好的语法组装成有意义的表达式,语句 ,函数等等。 例如“a = b + c;”前端词法分析器看到的是“a, =, b , +, c;”,语法分析器按定义的语法,先把他们组装成表达式“b + c”,再组装成“a = b + c”的语句。 前端还负责语义(semantic checking)的检查,例如检测参与运算的变量是否是同一类型的,简单的错误处理。最终的结果常常是一个抽象的语法树(abstract syntax tree,或 AST),这样后端可以在此基础上进一步优化,处理。

编译器后端(backend)

编译器后端主要负责分析,优化中间代码(Intermediate representation)以及生成机器代码(Code Generation)。

一般说来所有的编译器分析,优化,变型都可以分成两大类: 函数内(intraprocedural)还是函数之间(interprocedural)进行。很明显,函数间的分析,优化更准确,但需要更长的时间来完成。

编译器分析(compiler analysis)的对象是前端生成并传递过来的中间代码,现代的优化型编译器(optimizing compiler)常常用好几种层次的中间代码来表示程序,高层的中间代码(high level IR)接近输入的源程序的格式,与输入语言相关(language dependent),包含更多的全局性的信息,和源程序的结构;中层的中间代码(middle level IR)与输入语言无关,低层的中间代码(Low level IR)与机器语言类似。 不同的分析,优化发生在最适合的那一层中间代码上。

常见的编译分析有函数调用树(call tree),控制流程图(Control flow graph),以及在此基础上的 变量定义-使用,使用-定义链(define-use/use-define or u-d/d-u chain),变量别名分析(alias analysis),指针分析(pointer analysis),数据依赖分析(data dependence analysis)等等。

上述的程序分析结果是编译器优化(compiler optimization)和程序变形(compiler transformation)的前提条件。常见的优化和变新有:函数内嵌(inlining),无用代码删除(Dead code elimination),标准化循环结构(loop normalization),循环体展开(loop unrolling),循环体合并,分裂(loop fusion,loop fission),数组填充(array padding),等等。 优化和变形的目的是减少代码的长度,提高内存(memory),缓存(cache)的使用率,减少读写磁盘,访问网络数据的频率。更高级的优化甚至可以把序列化的代码(serial code)变成并行运算,多线程的代码(parallelized,multi-threaded code)。

机器代码的生成是优化变型后的中间代码转换成机器指令的过程。现代编译器主要采用生成汇编代码(assembly code)的策略,而不直接生成二进制的目标代码(binary object code)。即使在代码生成阶段,高级编译器仍然要做很多分析,优化,变形的工作。例如如何分配寄存器(register allocatioin),如何选择合适的机器指令(instruction selection),如何合并几句代码成一句等等。

编译语言与解释语言对比

许多人将高级程序语言分为两类: 编译型语言 和 解释型语言 。然而,实际上,这些语言中的大多数既可用编译型实现也可用解释型实现,分类实际上反映的是那种语言常见的实现方式。(但是,某些解释型语言,很难用编译型实现。比如那些允许 在线代码更改 的解释型语言。)

历史

上世纪50年代,IBM的John Backus带领一个研究小组对FORTRAN语言及其编译器进行开发。但由于当时人们对编译理论了解不多,开发工作变得既复杂又艰苦。与此同时,Noam Chomsky开始了他对自然语言结构的研究。他的发现最终使得编译器的结构异常简单,甚至还带有了一些自动化。Chomsky的研究导致了根据语言文法的难易程度以及识别它们所需要的算法来对语言分类。正如现在所称的Chomsky架构(Chomsky Hierarchy),它包括了文法的四个层次:0型文法、1型文法、2型文法和3型文法,且其中的每一个都是其前者的特殊情况。2型文法(或上下文无关文法)被证明是程序设计语言中最有用的,而且今天它已代表着程序设计语言结构的标准方式。分析问题(parsing problem,用于上下文无关文法识别的有效算法)的研究是在60年代和70年代,它相当完善的解决了这个问题。现在它已是编译原理中的一个标准部分。

有限状态自动机(Finite Automaton)和正则表达式(Regular Expression)同上下文无关文法紧密相关,它们与Chomsky的3型文法相对应。对它们的研究与Chomsky的研究几乎同时开始,并且引出了表示程序设计语言的单词的符号方式。

人们接着又深化了生成有效目标代码的方法,这就是最初的编译器,它们被一直使用至今。人们通常将其称为优化技术(Optimization Technique),但因其从未真正地得到过被优化了的目标代码而仅仅改进了它的有效性,因此实际上应称作代码改进技术(Code Improvement Technique)。

当分析问题变得好懂起来时,人们就在开发程序上花费了很大的功夫来研究这一部分的编译器自动构造。这些程序最初被称为编译器的编译器(Compiler-compiler),但更确切地应称为分析程序生成器(Parser Generator),这是因为它们仅仅能够自动处理编译的一部分。这些程序中最著名的是Yacc(Yet Another Compiler-compiler),它是由Steve Johnson在1975年为Unix系统编写的。类似的,有限状态自动机的研究也发展了一种称为扫描程序生成器(Scanner Generator)的工具,Lex(与Yacc同时,由Mike Lesk为Unix系统开发)是这其中的佼佼者。

在70年代后期和80年代早期,大量的项目都贯注于编译器其它部分的生成自动化,这其中就包括了代码生成。这些尝试并未取得多少成功,这大概是因为 *** 作太复杂而人们又对其不甚了解。

编译器设计最近的发展包括:首先,编译器包括了更加复杂算法的应用程序它用于推断或简化程序中的信息;这又与更为复杂的程序设计语言的发展结合在一起。其中典型的有用于函数语言编译的Hindley-Milner类型检查的统一算法。其次,编译器已越来越成为基于窗口的交互开发环境(Interactive Development Environment,IDE)的一部分,它包括了编辑器、连接程序、调试程序以及项目管理程序。这样的IDE标准并没有多少,但是对标准的窗口环境进行开发已成为方向。另一方面,尽管近年来在编译原理领域进行了大量的研究,但是基本的编译器设计原理在近20年中都没有多大的改变,它现在正迅速地成为计算机科学课程中的中心环节。

在九十年代,作为GNU项目或其它开放源代码项目的一部分,许多免费编译器和编译器开发工具被开发出来。这些工具可用来编译所有的计算机程序语言。它们中的一些项目被认为是高质量的,而且对现代编译理论感性趣的人可以很容易的得到它们的免费源代码。

大约在1999年,SGI公布了他们的一个工业化的并行化优化编译器Pro64的源代码,后被全世界多个编译器研究小组用来做研究平台,并命名为Open64。Open64的设计结构好,分析优化全面,是编译器高级研究的理想平台。

编译器是一种特殊的程序,它可以把以特定编程语言写成的程序变为机器可以运行的机器码。我们把一个程序写好,这时我们利用的环境是文本编辑器。这时我程序把程序称为源程序。在此以后程序员可以运行相应的编译器,通过指定需要编译的文件的名称就可以把相应的源文件(通过一个复杂的过程)转化为机器码了。

编译器工作方法

首先编译器进行语法分析,也就是要把那些字符串分离出来。然后进行语义分析,就是把各个由语法分析分析出的语法单元的意义搞清楚。最后生成的是目标文件,我们也称为obj文件。再经过链接器的链接就可以生成最后的可执行代码了。有些时候我们需要把多个文件产生的目标文件进行链接,产生最后的代码。我们把一过程称为交叉链接。

所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行。即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。

单道程序的运行过程:

在A程序计算时,I/O空闲, A程序I/O *** 作时,CPU空闲(B程序也是同样);必须A工作完成后,B才能进入内存中开始工作,两者是串行的,全部完成共需时间=T1+T2。

多道程序的运行过程:

将A、B两道程序同时存放在内存中,它们在系统的控制下,可相互穿插、交替地在CPU上运行:当A程序因请求I/O *** 作而放弃CPU时,B程序就可占用CPU运行,这样 CPU不再空闲,而正进行A I/O *** 作的I/O设备也不空闲,显然,CPU和I/O设备都处于“忙”状态,大大提高了资源的利用率,从而也提高了系统的效率,A、B全部完成所需时间<<T1+T2。

多道程序设计技术不仅使CPU得到充分利用,同时改善I/O设备和内存的利用率,从而提高了整个系统的资源利用率和系统吞吐量(单位时间内处理作业(程序)的个数),最终提高了整个系统的效率。

单处理机系统中多道程序运行时的特点:

(1)多道:计算机内存中同时存放几道相互独立的程序;

(2)宏观上并行:同时进入系统的几道程序都处于运行过程中,即它们先后开始了各自的运行,但都未运行完毕;

(3)微观上串行:实际上,各道程序轮流地用CPU,并交替运行。

多道程序系统的出现,标志着 *** 作系统渐趋成熟的阶段,先后出现了作业调度管理、处理机管理、存储器管理、外部设备管理、文件系统管理等功能。 20世纪60年代中期,在前述的批处理系统中,引入多道程序设计技术后形成多道批处理系统(简称:批处理系统)。

它有两个特点:

(1)多道:系统内可同时容纳多个作业。这些作业放在外存中,组成一个后备队列,系统按一定的调度原则每次从后备作业队列中选取一个或多个作业进入内存运行,运行作业结束、退出运行和后备作业进入运行均由系统自动实现,从而在系统中形成一个自动转接的、连续的作业流。

(2)成批:在系统运行过程中,不允许用户与其作业发生交互作用,即:作业一旦进入系统,用户就不能直接干预其作业的运行。

批处理系统的追求目标:提高系统资源利用率和系统吞吐量,以及作业流程的自动化。

批处理系统的一个重要缺点:不提供人机交互能力,给用户使用计算机带来不便。

虽然用户独占全机资源,并且直接控制程序的运行,可以随时了解程序运行情况。但这种工作方式因独占全机造成资源效率极低。

一种新的追求目标:既能保证计算机效率,又能方便用户使用计算机。 20世纪60年代中期,计算机技术和软件技术的发展使这种追求成为可能。

C语言的发展历史

C语言的发展颇为有趣。它的原型ALGOL 60语言。(也成为A语言)

1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。

1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。

1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX *** 作系统。

而在1973年,B语言也给人“煮”了一下,美国贝尔实验室的DMRITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。

为了使UNIX *** 作系统推广,1977年Dennis MRitchie 发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。

1978年Brian WKernighian和Dennis MRitchie出版了名著《The C Programming Language》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。

1988年,随着微型计算机的日益普及, 出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准, 成为现行的C语言标准 3C语言的主要特点 。C语言发展迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的功能。许多著名的系统软件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 语言编写的。用C语言加上一些汇编语言子程序, 就更能显示C语言的优势了,象PC- DOS 、WORDSTAR等就是用这种方法编写的。

计算机语言发展史:

机器语言;

汇编语言 ;

高级语言 。

机器语言 

电子计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机的语言的基础。机器语言,是第一代计算机语言。

汇编语言

用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“ADD”代表加 法,“MOV”代表数据传递等等,这种程序设计语言就称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。

高级语言 

1954年,第一个完全脱离机器硬件的高级语言—FORTRAN问世了,40多年来,使用较普遍的有FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/ 1、Pascal、C、PROLOG、Ada、C++、VC、VB、Delphi、JAVA 等。

1969年,提出了结构化程序设计方法,1970年,第一个结构化程序设计语言—Pascal语言出现,标志着结构化程序设计时期的开始。

80 年代初开始,在软件设计思想上,又产生了一次革命,其成果就是面向对象的程序设计。其方法就是软件的集成化,如同硬件的集成电路一样,生产一些通用的、封装紧密的功能模块,称之为软件集成块,它与具体应用无关,但能相互组合,完成具体的应用功能,同时又能重复使用。

第一部计算机并没有 *** 作系统。这是由于早期个人电脑的建立方式(如同建造机械计算机)与效能不足以执行如此程序。

但在1947年发明了晶体管,以及莫里斯·威尔克斯(Maurice Vincent Wilkes)发明的微程序方法,使得电脑不再是机械设备,而是电子产品。系统管理工具以及简化硬件 *** 作流程的程序很快就出现了,且成为 *** 作系统的基础。

到了1960年代早期,商用电脑制造商制造了批次处理系统,此系统可将工作的建置、调度以及执行序列化。此时,厂商为每一台不同型号的电脑创造不同的 *** 作系统,因此为某电脑而写的程序无法移植到其他电脑上执行,即使是同型号的电脑也不行。

到了1964年,IBM推出了一系列用途与价位都不同的大型电脑IBM System/360,大型主机的经典之作。而它们都共享代号为OS/360的 *** 作系统(而非每种产品都用量身订做的 *** 作系统)。让单一 *** 作系统适用于整个系列的产品是System/360成功的关键,且实际上IBM大型系统便是此系统的后裔;为System/360所写的应用程序依然可以在现代的IBM机器上执行!

OS/360也包含另一个优点:永久贮存设备—硬盘驱动器的面世(IBM称为DASD(Direct access storage device))。另一个关键是分时概念的建立:将大型电脑珍贵的时间资源适当分配到所有使用者身上。分时也让使用者有独占整部机器的感觉;而Multics的分时系统是此时众多新 *** 作系统中实践此观念最成功的。

1963年,奇异公司与贝尔实验室合作以PL/I语言建立的Multics,是激发1970年代众多 *** 作系统建立的灵感来源,尤其是由AT&T贝尔实验室的丹尼斯·里奇与肯·汤普逊所建立的Unix系统,为了实践平台移植能力,此 *** 作系统在1969年由C语言重写;另一个广为市场采用的小型电脑 *** 作系统是VMS。 第一代微型计算机并不像大型电脑或小型电脑,没有装设 *** 作系统的需求或能力;它们只需要最基本的 *** 作系统,通常这种 *** 作系统都是从ROM读取的,此种程序被称为监视程序(Monitor)。

1980年代,家用电脑开始普及。通常此时的电脑拥有8-bit处理器加上64KB内存、屏幕、键盘以及低音质喇叭。而80年代早期最著名的套装电脑为使用微处理器6510(6502芯片特别版)的Commodore C64。此电脑没有 *** 作系统,而是以8KB只读内存BIOS初始化彩色屏幕、键盘以及软驱和打印机。它可用8KB只读内存BASIC语言来直接 *** 作BIOS,并依此撰写程序,大部分是游戏。此BASIC语言的解释器勉强可算是此电脑的 *** 作系统。

早期最著名的磁盘启动型 *** 作系统是CP/M,它支持许多早期的微电脑,且其功能被MS-DOS大量抄袭。

最早期的IBM PC其架构类似C64。当然它们也使用了BIOS以初始化与抽象化硬件的 *** 作,甚至也附了一个BASIC解释器!但是它的BASIC优于其他公司产品的原因在于他有可携性,并且兼容于任何符合IBM PC架构的机器上。这样的PC可利用Intel-8088处理器(16-bit寄存器)寻址,并最多可有1MB的内存,然而最初只有640KB。软式磁盘机取代了过去的磁带机,成为新一代的储存设备,并可在他512KB的空间上读写。为了支持更进一步的文件读写概念,磁盘 *** 作系统(Disk Operating System,DOS)因而诞生。此 *** 作系统可以合并任意数量的磁区,因此可以在一张磁盘片上放置任意数量与大小的文件。文件之间以档名区别。IBM并没有很在意其上的DOS,因此以向外部公司购买的方式取得 *** 作系统。

1980年微软公司取得了与IBM的合约,并且收购了一家公司出产的 *** 作系统,在将之修改后以MS-DOS的名义出品,此 *** 作系统可以直接让程序 *** 作BIOS与文件系统。到了Intel-80286处理器的时代,才开始实作基本的储存设备保护措施。MS-DOS的架构并不能完全满足所有需求,因为它同时只能执行最多一个程序(如果想要同时执行程式,只能使用TSR的方式来跳过OS而由程序自行处理多任务的部份),且没有任何内存保护措施。对驱动程序的支持也不够完整,因此导致诸如音效设备必须由程序自行设置的状况,造成不兼容的情况所在多有。许多应用程序因此跳过MS-DOS的服务程序,而直接存取硬件设备以取得较好的效能。虽然如此,但MS-DOS还是变成了IBM PC上面最常用的 *** 作系统(IBM自己也有推出DOS,称为IBM-DOS或PC-DOS)。MS-DOS的成功使得微软成为地球上最赚钱的公司之一。

而1980年代另一个崛起的 *** 作系统异数是Mac OS,此 *** 作系统紧紧与麦金塔电脑捆绑在一起。此时一位施乐帕罗奥托研究中心员工Dominik Hagen访问了苹果电脑的史蒂夫·乔布斯,并且向他展示了此时施乐发展的图形化使用者界面。苹果电脑惊为天人,并打算向施乐购买此技术,但因帕罗奥托研究中心并非商业单位而是研究单位,因此施乐回绝了这项买卖。在此之后苹果一致认为个人电脑的未来必定属于图形使用者界面,因此也开始发展自己的图形化 *** 作系统。现今许多我们认为是基本要件的图形化接口技术与规则,都是由苹果电脑打下的基础(例如下拉式菜单、桌面图标、拖曳式 *** 作与双点击等)。但正确来说,图形化使用者界面的确是施乐创始的。 Apple 电脑,苹果电脑的第一代产品。延续80年代的竞争,1990年代出现了许多影响未来个人电脑市场深厚的 *** 作系统。由于图形化使用者界面日趋繁复, *** 作系统的能力也越来越复杂与巨大,因此强韧且具有d性的 *** 作系统就成了迫切的需求。此年代是许多套装类的个人电脑 *** 作系统互相竞争的时代。

上一年代于市场崛起的苹果电脑,由于旧系统的设计不良,使得其后继发展不力,苹果电脑决定重新设计 *** 作系统。经过许多失败的项目后,苹果于1997年释出新 *** 作系统——MacOS的测试版,而后推出的正式版取得了巨大的成功。让原先失意离开苹果的Steve Jobs风光再现。

除了商业主流的 *** 作系统外,从1980年代起在开放原码的世界中,BSD系统也发展了非常久的一段时间,但在1990年代由于与AT&T的法律争端,使得远在芬兰赫尔辛基大学的另一股开源 *** 作系统——Linux兴起。Linux内核是一个标准POSIX内核,其血缘可算是Unix家族的一支。Linux与BSD家族都搭配GNU计划所发展的应用程序,但是由于使用的许可证以及历史因素的作弄下,Linux取得了相当可观的开源 *** 作系统市占率,而BSD则小得多。

相较于MS-DOS的架构,Linux除了拥有傲人的可移植性(相较于Linux,MS-DOS只能运行在Intel CPU上),它也是一个分时多进程内核,以及良好的内存空间管理(普通的进程不能存取内核区域的内存)。想要存取任何非自己的内存空间的进程只能通过系统调用来达成。一般进程是处于使用者模式(User mode)底下,而执行系统调用时会被切换成内核模式(Kernel mode),所有的特殊指令只能在内核模式执行,此措施让内核可以完美管理系统内部与外部设备,并且拒绝无权限的进程提出的请求。因此理论上任何应用程序执行时的错误,都不可能让系统崩溃(Crash)。

另一方面,微软对于更强力的 *** 作系统呼声的回应便是Windows NT于1993年的面世。

1983年开始微软就想要为MS-DOS建构一个图形化的 *** 作系统应用程序,称为Windows(有人说这是比尔·盖茨被苹果的Lisa电脑上市所刺激)。

一开始Windows并不是一个 *** 作系统,只是一个应用程序,其背景还是纯MS-DOS系统,这是因为当时的BIOS设计以及MS-DOS的架构不甚良好之故。

在1990年代初,微软与IBM的合作破裂,微软从OS/2(早期为命令行模式,后来成为一个很成功但是曲高和寡的图形化 *** 作系统)项目中抽身,并且在1993年7月27日推出Windows NT 31,一个以OS/2为基础的图形化 *** 作系统。

并在1995年8月15日推出Windows 95。

直到这时,Windows系统依然是建立在MS-DOS的基础上,因此消费者莫不期待微软在2000年所推出的Windows 2000上,因为它才算是第一个脱离MS-DOS基础的图形化 *** 作系统。

Windows NT系统的架构为:在硬件阶层之上,有一个由微内核直接接触的硬件抽象层(HAL),而不同的驱动程序以模块的形式挂载在内核上执行。因此微内核可以使用诸如输入输出、文件系统、网络、信息安全机制与虚拟内存等功能。而系统服务层提供所有统一规格的函数调用库,可以统一所有副系统的实作方法。例如尽管POSIX与OS/2对于同一件服务的名称与调用方法差异甚大,它们一样可以无碍地实作于系统服务层上。在系统服务层之上的副系统,全都是使用者模式,因此可以避免使用者程序执行非法行动。

DOS副系统将每个DOS程序当成一进程执行,并以个别独立的MS-DOS虚拟机器承载其运行环境。另外一个是Windows 31 NT 模拟系统,实际上是在Win32副系统下执行Win16程序。因此达到了安全掌控为MS-DOS与早期Windows系统所撰写之旧版程序的能力。然而此架构只在Intel 80386处理器及后继机型上实作。且某些会直接读取硬件的程序,例如大部分的Win16游戏,就无法套用这套系统,因此很多早期游戏便无法在Windows NT上执行。

Windows NT有31.35.351与40版。

Windows 2000是Windows NT的改进系列(事实上是Windows NT 50)、Windows XP(Windows NT 51)以及Windows Server 2003(Windows NT 52)、Windows Vista(Windows NT 60)、Windows 7(Windows NT 61)也都是立基于Windows NT的架构上。

而本年代渐渐增长并越趋复杂的嵌入式设备市场也促使嵌入式 *** 作系统的成长。

大型机与嵌入式系统使用很多样化的 *** 作系统。大型主机有许多开始支持Java及Linux以便共享其他平台的资源。嵌入式系统百家争鸣,从给Sensor Networks用的Berkeley Tiny OS到可以 *** 作Microsoft Office的Windows CE都有。 现代 *** 作系统通常都有一个使用的绘图设备的图形用户界面(GUI),并附加如鼠标或触控面版等有别于键盘的输入设备。旧的OS或性能导向的服务器通常不会有如此亲切的界面,而是以命令行界面(CLI)加上键盘为输入设备。以上两种界面其实都是所谓的壳,其功能为接受并处理用户的指令(例如按下一按钮,或在命令提示列上键入指令)。

选择要安装的 *** 作系统通常与其硬件架构有很大关系,只有Linux与BSD几乎可在所有硬件架构上运行,而Windows NT仅移植到了DEC Alpha与MIPS Magnum。在1990年代早期,个人计算机的选择就已被局限在Windows家族、类Unix家族以及Linux上,而以Linux及Mac OS X为最主要的另类选择,直至今日。

大型机与嵌入式系统使用很多样化的 *** 作系统。在服务器方面Linux、UNIX和WindowsServer占据了市场的大部分份额。在超级计算机方面,Linux取代Unix成为了第一大 *** 作系统,截止2012年6月,世界超级计算机500强排名中基于Linux的超级计算机占据了462个席位,比率高达92%。随着智能手机的发展,Android和iOS已经成为目前最流行的两大手机 *** 作系统。

2012年,全球智能手机 *** 作系统市场份额的变化情况相对稳定。智能手机 *** 作系统市场一直被几个手机制造商巨头所控制,而安卓的垄断地位主要得益于三星智能手机在世界范围内所取得的巨大成功。2012年第三季度,安卓的市场份额高达748%,2011年则为574%。2013年第一季度,它的市场份额继续增加,达到75%。虽然 Android 占据领先,但是苹果 iOS 用户在应用上花费的时间则比 Android 的长。虽然在这方面 Android 的数字一度接近苹果,但是像 iPad 3 这样的设备发布之后,苹果的数字还是会进一步增长。Windows Phone 系统在 81 版发布后市场份额稳步提高,应用生态正在改善,众多必需应用不断更新,但是速度还略嫌迟缓。微软收购了诺基亚,发展了许多OEM厂商,并不断发布新机型试图扭转WP的不利局面,小有成效。

计算机的发展历史

一、第一台计算机的诞生

第一台计算机(ENIAC)于1946年2月,在美国诞生。

ENIAC PC机

耗资 100万美圆 600美圆

重量 30吨 10kg

占地 150平方米 0.25平方米

电子器件 1.9万只电子管 100块集成电路

运算速度 5000次/秒 500万次/秒

二、计算机发展历史

1、第一代计算机(1946~1958)

电子管为基本电子器件;使用机器语言和汇编语言;主要应用于国防和科学计算;运算速度每秒几千次至几万次。

2、第二代计算机(1958~1964)

晶体管为主要器件;软件上出现了 *** 作系统和算法语言;运算速度每秒几万次至几十万次。

3、第三代计算机(1964~1971)

普遍采用集成电路;体积缩小;运算速度每秒几十万次至几百万次。

4、第四代计算机(1971~ )

以大规模集成电路为主要器件;运算速度每秒几百万次至上亿次。

三、我国计算机发展历史

从1953年开始研究,到1958年研制出了我国第一台计算机

在1982年我国研制出了运算速度1亿次的银河I、II型等小型系列机。

计算机的历史

计算机是新技术革命的一支主力,也是推动社会向现代化迈进的活跃因素。计算机科学与技术是第二次世界大战以来发展最快、影响最为深远的新兴学科之一。计算机产业已在世界范围内发展成为一种极富生命力的战略产业。

现代计算机是一种按程序自动进行信息处理的通用工具,它的处理对象是信息,处理结果也是信息。利用计算机解决科学计算、工程设计、经营管理、过程控制或人工智能等各种问题的方法,都是按照一定的算法进行的。这种算法是定义精确的一系列规则,它指出怎样以给定的输入信息经过有限的步骤产生所需要的输出信息。

信息处理的一般过程,是计算机使用者针对待解抉的问题,事先编制程序并存入计算机内,然后利用存储程序指挥、控制计算机自动进行各种基本 *** 作,直至获得预期的处理结果。计算机自动工作的基础在于这种存储程序方式,其通用性的基础则在于利用计算机进行信息处理的共性方法。

计算机的历史

现代计算机的诞生和发展 现代计算机问世之前,计算机的发展经历了机械式计算机、机电式计算机和萌芽期的电子计算机三个阶段。

早在17世纪,欧洲一批数学家就已开始设计和制造以数字形式进行基本运算的数字计算机。1642年,法国数学家帕斯卡采用与钟表类似的齿轮传动装置,制成了最早的十进制加法器。1678年,德国数学家莱布尼兹制成的计算机,进一步解决了十进制数的乘、除运算。

英国数学家巴贝奇在1822年制作差分机模型时提出一个设想,每次完成一次算术运算将发展为自动完成某个特定的完整运算过程。1884年,巴贝奇设计了一种程序控制的通用分析机。这台分析机虽然已经描绘出有关程序控制方式计算机的雏型,但限于当时的技术条件而未能实现。

巴贝奇的设想提出以后的一百多年期间,电磁学、电工学、电子学不断取得重大进展,在元件、器件方面接连发明了真空二极管和真空三极管;在系统技术方面,相继发明了无线电报、电视和雷达……。所有这些成就为现代计算机的发展准备了技术和物质条件。

与此同时,数学、物理也相应地蓬勃发展。到了20世纪30年代,物理学的各个领域经历着定量化的阶段,描述各种物理过程的数学方程,其中有的用经典的分析方法已根难解决。于是,数值分析受到了重视,研究出各种数值积分,数值微分,以及微分方程数值解法,把计算过程归结为巨量的基本运算,从而奠定了现代计算机的数值算法基础。

社会上对先进计算工具多方面迫切的需要,是促使现代计算机诞生的根本动力。20世纪以后,各个科学领域和技术部门的计算困难堆积如山,已经阻碍了学科的继续发展。特别是第二次世界大战爆发前后,军事科学技术对高速计算工具的需要尤为迫切。在此期间,德国、美国、英国部在进行计算机的开拓工作,几乎同时开始了机电式计算机和电子计算机的研究。

德国的朱赛最先采用电气元件制造计算机。他在1941年制成的全自动继电器计算机Z-3,已具备浮点记数、二进制运算、数字存储地址的指令形式等现代计算机的特征。在美国,1940~1947年期间也相继制成了继电器计算机MARK-1、MARK-2、Model-1、Model-5等。不过,继电器的开关速度大约为百分之一秒,使计算机的运算速度受到很大限制。

电子计算机的开拓过程,经历了从制作部件到整机从专用机到通用机、从“外加式程序”到“存储程序”的演变。1938年,美籍保加利亚学者阿塔纳索夫首先制成了电子计算机的运算部件。1943年,英国外交部通信处制成了“巨人”电子计算机。这是一种专用的密码分析机,在第二次世界大战中得到了应用。

1946年2月美国宾夕法尼亚大学莫尔学院制成的大型电子数字积分计算机(ENIAC),最初也专门用于火炮d道计算,后经多次改进而成为能进行各种科学计算的通用计算机。这台完全采用电子线路执行算术运算、逻辑运算和信息存储的计算机,运算速度比继电器计算机快1000倍。这就是人们常常提到的世界上第一台电子计算机。但是,这种计算机的程序仍然是外加式的,存储容量也太小,尚未完全具备现代计算机的主要特征。

新的重大突破是由数学家冯·诺伊曼领导的设计小组完成的。1945年3月他们发表了一个全新的存储程序式通用电子计算机方案—电子离散变量自动计算机(EDVAC)。随后于1946年6月,冯·诺伊曼等人提出了更为完善的设计报告《电子计算机装置逻辑结构初探》。同年7~8月间,他们又在莫尔学院为美国和英国二十多个机构的专家讲授了专门课程《电子计算机设计的理论和技术》,推动了存储程序式计算机的设计与制造。

1949年,英国剑桥大学数学实验室率先制成电子离散时序自动计算机(EDSAC);美国则于1950年制成了东部标准自动计算机(SFAC)等。至此,电子计算机发展的萌芽时期遂告结束,开始了现代计算机的发展时期。

在创制数字计算机的同时,还研制了另一类重要的计算工具——模拟计算机。物理学家在总结自然规律时,常用数学方程描述某一过程;相反,解数学方程的过程,也有可能采用物理过程模拟方法,对数发明以后,1620年制成的计算尺,己把乘法、除法化为加法、减法进行计算。麦克斯韦巧妙地把积分(面积)的计算转变为长度的测量,于1855年制成了积分仪。

19世纪数学物理的另一项重大成就——傅里叶分析,对模拟机的发展起到了直接的推动作用。19世纪后期和20世纪前期,相继制成了多种计算傅里叶系数的分析机和解微分方程的微分分析机等。但是当试图推广微分分析机解偏微分方程和用模拟机解决一般科学计算问题时,人们逐渐认识到模拟机在通用性和精确度等方面的局限性,并将主要精力转向了数字计算机。

电子数字计算机问世以后,模拟计算机仍然继续有所发展,并且与数字计算机相结合而产生了混合式计算机。模拟机和混合机已发展成为现代计算机的特殊品种,即用在特定领域的高效信息处理工具或仿真工具。

20世纪中期以来,计算机一直处于高速度发展时期,计算机由仅包含硬件发展到包含硬件、软件和固件三类子系统的计算机系统。计算机系统的性能—价格比,平均每10年提高两个数量级。计算机种类也一再分化,发展成微型计算机、小型计算机、通用计算机(包括巨型、大型和中型计算机),以及各种专用机(如各种控制计算机、模拟—数字混合计算机)等。

计算机器件从电子管到晶体管,再从分立元件到集成电路以至微处理器,促使计算机的发展出现了三次飞跃。

在电子管计算机时期(1946~1959),计算机主要用于科学计算。主存储器是决定计算机技术面貌的主要因素。当时,主存储器有水银延迟线存储器、阴极射线示波管静电存储器、磁鼓和磁心存储器等类型,通常按此对计算机进行分类。

到了晶体管计算机时期(1959~1964),主存储器均采用磁心存储器,磁鼓和磁盘开始用作主要的辅助存储器。不仅科学计算用计算机继续发展,而且中、小型计算机,特别是廉价的小型数据处理用计算机开始大量生产。

1964年,在集成电路计算机发展的同时,计算机也进入了产品系列化的发展时期。半导体存储器逐步取代了磁心存储器的主存储器地位,磁盘成了不可缺少的辅助存储器,并且开始普遍采用虚拟存储技术。随着各种半导体只读存储器和可改写的只读存储器的迅速发展,以及微程序技术的发展和应用,计算机系统中开始出现固件子系统。

20世纪70年代以后,计算机用集成电路的集成度迅速从中小规模发展到大规模、超大规模的水平,微处理器和微型计算机应运而生,各类计算机的性能迅速提高。随着字长4位、8位、16位、32位和64位的微型计算机相继问世和广泛应用,对小型计算机、通用计算机和专用计算机的需求量也相应增长了。

微型计算机在社会上大量应用后,一座办公楼、一所学校、一个仓库常常拥有数十台以至数百台计算机。实现它们互连的局部网随即兴起,进一步推动了计算机应用系统从集中式系统向分布式系统的发展。

在电子管计算机时期,一些计算机配置了汇编语言和子程序库,科学计算用的高级语言FORTRAN初露头角。在晶体管计算机阶段,事务处理的COBOL语言、科学计算机用的ALGOL语言,和符号处理用的LISP等高级语言开始进入实用阶段。 *** 作系统初步成型,使计算机的使用方式由手工 *** 作改变为自动作业管理。

进入集成电路计算机发展时期以后,在计算机中形成了相当规模的软件子系统,高级语言种类进一步增加, *** 作系统日趋完善,具备批量处理、分时处理、实时处理等多种功能。数据库管理系统、通信处理程序、网络软件等也不断增添到软件子系统中。软件子系统的功能不断增强,明显地改变了计算机的使用属性,使用效率显著提高。

在现代计算机中,外围设备的价值一般已超过计算机硬件子系统的一半以上,其技术水平在很大程度上决定着计算机的技术面貌。外围设备技术的综合性很强,既依赖于电子学、机械学、光学、磁学等多门学科知识的综合,又取决于精密机械工艺、电气和电子加工工艺以及计量的技术和工艺水平等。

外围设备包括辅助存储器和输入输出设备两大类。辅助存储器包括磁盘、磁鼓、磁带、激光存储器、海量存储器和缩微存储器等;输入输出设备又分为输入、输出、转换、、模式信息处理设备和终端设备。在这些品种繁多的设备中,对计算机技术面貌影响最大的是磁盘、终端设备、模式信息处理设备和转换设备等。

新一代计算机是把信息采集存储处理、通信和人工智能结合在一起的智能计算机系统。它不仅能进行一般信息处理,而且能面向知识处理,具有形式化推理、联想、学习和解释的能力,将能帮助人类开拓未知的领域和获得新的知识。

计算技术在中国的发展 在人类文明发展的历史上中国曾经在早期计算工具的发明创造方面写过光辉的一页。远在商代,中国就创造了十进制记数方法,领先于世界千余年。到了周代,发明了当时最先进的计算工具——算筹。这是一种用竹、木或骨制成的颜色不同的小棍。计算每一个数学问题时,通常编出一套歌诀形式的算法,一边计算,一边不断地重新布棍。中国古代数学家祖冲之,就是用算筹计算出圆周率在31415926和31415927之间。这一结果比西方早一千年。

珠算盘是中国的又一独创,也是计算工具发展史上的第一项重大发明。这种轻巧灵活、携带方便、与人民生活关系密切的计算工具,最初大约出现于汉朝,到元朝时渐趋成熟。珠算盘不仅对中国经济的发展起过有益的作用,而且传到日本、朝鲜、东南亚等地区,经受了历史的考验,至今仍在使用。

中国发明创造指南车、水运浑象仪、记里鼓车、提花机等,不仅对自动控制机械的发展有卓越的贡献,而且对计算工具的演进产生了直接或间接的影响。例如,张衡制作的水运浑象仪,可以自动地与地球运转同步,后经唐、宋两代的改进,遂成为世界上最早的天文钟。

记里鼓车则是世界上最早的自动计数装置。提花机原理刘计算机程序控制的发展有过间接的影响。中国古代用阳、阴两爻构成八卦,也对计算技术的发展有过直接的影响。莱布尼兹写过研究八卦的论文,系统地提出了二进制算术运算法则。他认为,世界上最早的二进制表示法就是中国的八卦。

经过漫长的沉寂,新中国成立后,中国计算技术迈入了新的发展时期,先后建立了研究机构,在高等院校建立了计算技术与装置专业和计算数学专业,并且着手创建中国计算机制造业。

1958年和1959年,中国先后制成第一台小型和大型电子管计算机。60年代中期,中国研制成功一批晶体管计算机,并配制了ALGOL等语言的编译程序和其他系统软件。60年代后期,中国开始研究集成电路计算机。70年代,中国已批量生产小型集成电路计算机。80年代以后,中国开始重点研制微型计算机系统并推广应用;在大型计算机、特别是巨型计算机技术方面也取得了重要进展;建立了计算机服务业,逐步健全了计算机产业结构。

在计算机科学与技术的研究方面,中国在有限元计算方法、数学定理的机器证明、汉字信息处理、计算机系统结构和软件等方面都有所建树。在计算机应用方面,中国在科学计算与工程设计领域取得了显著成就。在有关经营管理和过程控制等方面,计算机应用研究和实践也日益活跃。

计算机科学与技术

计算机科学与技术是一门实用性很强、发展极其迅速的面向广大社会的技术学科,它建立在数学、电子学 (特别是微电子学)、磁学、光学、精密机械等多门学科的基础之上。但是,它并不是简单地应用某些学科的知识,而是经过高度综合形成一整套有关信息表示、变换、存储、处理、控制和利用的理论、方法和技术。

计算机科学是研究计算机及其周围各种现象与规模的科学,主要包括理论计算机科学、计算机系统结构、软件和人工智能等。计算机技术则泛指计算机领域中所应用的技术方法和技术手段,包括计算机的系统技术、软件技术、部件技术、器件技术和组装技术等。计算机科学与技术包括五个分支学科,即理论计算机科学、计算机系统结构、计算机组织与实现、计算机软件和计算机应用。

理论计算机学 是研究计算机基本理论的学科。在几千年的数学发展中,人们研究了各式各样的计算,创立了许多算法。但是,以计算或算法本身的性质为研究对象的数学理论,却是在20世纪30年代才发展起来的。

当时,由几位数理逻辑学者建立的算法理论,即可计算性理论或称递归函数论,对20世纪40年代现代计算机设计思想的形成产生过影响。此后,关于现实计算机及其程序的数学模型性质的研究,以及计算复杂性的研究等不断有所发展。

理论计算机科学包括自动机论、形式语言理论、程序理论、算法分析,以及计算复杂性理论等。自动机是现实自动计算机的数学模型,或者说是现实计算机程序的模型,自动机理论的任务就在于研究这种抽象机器的模型;程序设计语言是一种形式语言,形式语言理论根据语言表达能力的强弱分为O~3型语言,与图灵机等四类自动机逐一对应;程序理论是研究程序逻辑、程序复杂性、程序正确性证明、程序验证、程序综合、形式语言学,以及程序设计方法的理论基础;算法分析研究各种特定算法的性质。计算复杂性理论研究算法复杂性的一般性质。

计算机系统结构 程序设计者所见的计算机属性,着重于计算机的概念结构和功能特性,硬件、软件和固件子系统的功能分配及其界面的确定。使用高级语言的程序设计者所见到的计算机属性,主要是软件子系统和固件子系统的属性,包括程序语言以及 *** 作系统、数据库管理系统、网络软件等的用户界面。使用机器语言的程序设计者所见到的计算机属性,则是硬件子系统的概念结构(硬件子系统结构)及其功能特性,包括指令系统(机器语言),以及寄存器定义、中断机构、输入输出方式、机器工作状态等。

硬件子系统的典型结构是冯·诺伊曼结构,它由运算器控制器、存储器和输入、输出设备组成,采用“指令驱动”方式。当初,它是为解非线性、微分方程而设计的,并未预见到高级语言、 *** 作系统等的出现,以及适应其他应用环境的特殊要求。在相当长的一段时间内,软件子系统都是以这种冯·诺伊曼结构为基础而发展的。但是,其间不相适应的情况逐渐暴露出来,从而推动了计算机系统结构的变革。

计算机组织与实现 是研究组成计算机的功能、部件间的相互连接和相互作用,以及有关计算机实现的技术,均属于计算机组织与实现的任务。

在计算机系统结构确定分配给硬子系统的功能及其概念结构之后,计算机组织的任务就是研究各组成部分的内部构造和相互联系,以实现机器指令级的各种功能和特性。这种相互联系包括各功能部件的布置、相互连接和相互作用。

随着计算机功能的扩展和性能的提高,计算机包含的功能部件也日益增多,其间的互连结构日趋复杂。现代已有三类互连方式,分别以中央处理器、存储器或通信子系统为中心,与其他部件互连。以通信子系统为中心的组织方式,使计算机技术与通信技术紧密结合,形成了计算机网络、分布计算机系统等重要的计算机研究与应用领域。

与计算实现有关的技术范围相当广泛,包括计算机的元件、器件技术,数字电路技术,组装技术以及有关的制造技术和工艺等。

软件 软件的研究领域主要包括程序设计、基础软件、软件工程三个方面。程序设计指设计和编制程序的过程,是软件研究和发展的基础环节。程序设计研究的内容,包括有关的基本概念、规范、工具、方法以及方法学等。这个领域发展的特点是:从顺序程序设计过渡到并发程序设计和分币程序设计;从非结构程序设计方法过渡到结构程序设计方法;从低级语言工具过渡到高级语言工具;从具体方法过渡到方法学。

基础软件指计算机系统中起基础作用的软件。计算机的软件子系统可以分为两层:靠近硬件子系统的一层称为系统软件,使用频繁,但与具体应用领域无关;另一层则与具体应用领域直接有关,称为应用软件;此外还有支援其他软件的研究与维护的软件,专门称为支援软件。

软件工程是采用工程方法研究和维护软件的过程,以及有关的技术。软件研究和维护的全过程,包括概念形成、要求定义、设计、实现、调试、交付使用,以及有关校正性、适应性、完善性等三层意义的维护。软件工程的研究内容涉及上述全过程有关的对象、结构、方法、工具和管理等方面。

软件目动研究系统的任务是:在软件工程中采用形式方法:使软件研究与维护过程中的各种工作尽可能多地由计算机自动完成;创造一种适应软件发展的软件、固件与硬件高度综合的高效能计算机。

计算机产业

计算机产业包括两大部门,即计算机制造业和计算机服务业。后者又称为信息处理产业或信息服务业。计算机产业是一种省能源、省资源、附加价值高、知识和技术密集的产业,对于国民经济的发展、国防实力和社会进步均有巨大影响。因此,不少国家采取促进计算机产业兴旺发达的政策。

计算机制造业包括生产各种计算机系统、外围设备终端设备,以及有关装置、元件、器件和材料的制造。计算机作为工业产品,要求产品有继承性,有很高的性能-价格比和综合性能。计算机的继承性特别体现在软件兼容性方面,这能使用户和厂家把过去研制的软件用在新产品上,使价格很高的软件财富继续发挥作用,减少用户再次研制软件的时间和费用。提高性能-价格比是计算机产品更新的目标和动力。

计算机制造业提供的计算机产品,一般仅包括硬件子系统和部分软件子系统。通常,软件子系统中缺少适应各种特定应用环境的应用软件。为了使计算机在特定环境中发挥效能,还需要设计应用系统和研制应用软件此外,计算机的运行和维护,需要有掌握专业知识的技术人员,这常常是一股用户所作不到的。

针对这些社会需要,一些计算机制造厂家十分重视向用户提供各种技术服务和销售服务。一些独立于计算机制造厂家的计算机服务机构,也在50年代开始出现。到60年代末期,计算机服务业在世界范围内已形成为独立的行业。

计算机的发展与应用

计算机科学与技术的各门学科相结合,改进了研究工具和研究方法,促进了各门学科的发展。过去,人们主要通过实验和理论两种途径进行科学技术研究。现在,计算和模拟已成为研究工作的第三条途径。

计算机与有关的实验观测仪器相结合,可对实验数据进行现场记录、整理、加工、分析和绘制图表,显著地提高实验工作的质量和效率。计算机辅助设计已成为工程设计优质化、自动化的重要手段。在理论研究方面,计算机是人类大脑的延伸,可代替人脑的若干功能并加以强化。古老的数学靠纸和笔运算,现在计算机成了新的工具,数学定理证明之类的繁重脑力劳动,已可能由计算机来完成或部分完成。

计算和模拟作为一种新的研究手段,常使一些学科衍生出新的分支学科。例如,空气动力学、气象学、d性结构力学和应用分析等所面临的“计算障碍”,在有了高速计算机和有关的计算方法之后开始有所突破,并衍生出计算空气动力学、气象数值预报等边缘分支学科。利用计算机进行定量研究,不仅在自然科学中发挥了重大的作用,在社会科学和人文学科中也是如此。例如,在人口普查、社会调查和自然语言研究方面,计算机就是一种很得力的工具。

计算机在各行各业中的广泛应用,常常产生显著的经济效益和社会效益,从而引起产业结构、产品结构、经营管理和服务方式等方面的重大变革。在产业结构中已出观了计算机制造业和计算机服务业,以及知识产业等新的行业。

微处理器和微计算机已嵌入机电设备、电子设备、通信设备、仪器仪表和家用电器中,使这些产品向智能化方向发展。计算机被引入各种生产过程系统中,使化工、石油、钢铁、电力、机械、造纸、水泥等生产过程的自动化水平大大提高,劳动生产率上升、质量提高、成本下降。计算机嵌入各种武器装备和武器系统干,可显著提高其作战效果。

经营管理方面,计算机可用于完成统计、计划、查询、库存管理、市场分析、辅助决策等,使经营管理工作科学化和高效化,从而加速资金周转,降低库存水准,改善服务质量,缩短新产品研制周期,提高劳动生产率。在办公室自动化方面,计算机可用于文件的起草、检索和管理等,显著提高办公效率。

计算机还是人们的学习工具和生活工具。借助家用计算机、个人计算机、计算机网、数据库系统和各种终端设备,人们可以学习各种课程,获取各种情报和知识,处理各种生活事务(如订票、购物、存取款等),甚至可以居家办公。越来越多的人的工作、学习和生活中将与计算机发生直接的或间接的联系。普及计算机教育已成为一个重要的问题。

总之,计算机的发展和应用已不仅是一种技术现象而且是一种政治、经济、军事和社会现象。世界各国都力图主动地驾驭这种社会计算机化和信息化的进程,克服计算机化过程中可能出现的消极因素,更顺利地向高

1920~1930

1924年2月:IBM,一个具有划时代意义的公司成立。

1930~1940

1935: IBM推出IBM 601机。这是一台能在一秒钟算出乘法的穿孔卡片计算机。这台机器无论在自然科学还是在商业意义上都具有重要的地位。大约造了1500台。

1937: 英国剑桥大学的Alan M Turing (1912-1954)出版了他的论文,并提出了被后人称之为"图灵机"的数学模型。

1937: BELL试验室的George Stibitz展示了用继电器表示二进制的装置。尽管仅仅是个展示品,但却是第一台二进制电子计算机。

1938: Claude E Shannon 发表了用继电器进行逻辑表示的论文。

1938: 柏林的Konrad Zuse 和他的助手们完成了一个机械可编程二进制形式的计算机,其理论基础是Boolean代数。后来命名为Z1。它的功能比较强大,用类似**胶片的东西作为存储介质。可以运算七位指数和16位小数。可以用一个键盘输入数字,用灯泡显示结果。

1939年1月1日: 加利福尼亚的David Hewlet和William Packard 在他们的车库里造出了Hewlett-Packard计算机。名字是两人用投硬币的方式决定的。包括两人名字的一部分。

1939年11月: 美国John V Atanasoff和他的学生Clifford Berry 完成了一台16位的加法器,这是第一台真空管计算机。

1939: 二次世界大战的开始,军事需要大大促进了计算机技术的发展。

1939: Zuse和Schreyer开始在他们的Z1计算机的基础上发展Z2计算机。并用继电器改进它的存储和计算单元。但这个项目因为Zuse服兵役被中断了一年。

1939/1940: Schreyer利用真空管完成了一个10位的加法器,并使用了氖灯做存储装置。

1940~1950

1940年1月: Bell实验室的Samuel Williams和Stibitz制造成功了一个能进行复杂运算的计算机。大量使用了继电器,并借鉴了一些电话技术,采用了先进的编码技术。

1941夏季: Atanasoff和学生Berry完成了能解线性代数方程的计算机,取名叫"ABC"(Atanasoff-Berry Computer),用电容作存储器,用穿孔卡片作辅助存储器,那些孔实际上是"烧"上的。时钟频率是60HZ,完成一次加法运算用时一秒。

1941年12月: 德国Zuse制作完成了Z3计算机的研制。这是第一台可编程的电子计算机。可处理7位指数、14位小数。使用了大量的真空管。每秒钟能作3到4次加法运算。一次乘法需要3到5秒。

1943: 1943年到1959年时期的计算机通常被称作第一代计算机。使用真空管,所有的程序都是用机器码编写,使用穿孔卡片。典型的机器就是:UNIVAC。

1943年1月: Mark I,自动顺序控制计算机在美国研制成功。整个机器有51英尺长,重5吨,75万个零部件,使用了3304个继电器,60个开关作为机械只读存储器。程序存储在纸带上,数据可以来自纸带或卡片阅读器。被用来为美国海军计算d道火力表。

1943年4月: Max Newman、Wynn-Williams和他们的研究小组研制成功"Heath Robinson",这是一台密码破译机,严格说不是一台计算机。但是其使用了一些逻辑部件和真空管,其光学装置每秒钟能读入2000个字符。同样具有划时代的意义。

1943年9月 : Williams和Stibitz完成了"Relay Interpolator",后来命名为"Model II Relay Calculator"。这是一台可编程计算机。同样使用纸带输入程序和数据。其运行更可靠,每个数用7个继电器表示,可进行浮点运算。

1943年12月: 最早的可编程计算机在英国推出,包括2400个真空管,目的是为了破译德国的密码,每秒能翻译大约5000个字符,但使用完后不久就遭到了毁坏。据说是因为在翻译俄语的时候出现了错误。

1946: ENIAC (Electronic Numerical Integrator 和 Computer): 第一台真正意义上的数字电子计算机。开始研制于1943年,完成于1946年。负责人是John W Mauchly和J Presper Eckert。重30吨,18000个电子管,功率25千瓦。主要用于计算d道和氢d的研制。

三、晶体管计算机的发展

  真空管时代的计算机尽管已经步入了现代计算机的范畴,但其体积之大、能耗之高、故障之多、价格之贵大大制约了它的普及应用。直到晶体管被发明出来,电子计算机才找到了腾飞的起点,一发而不可收……

1947: Bell实验室的William B Shockley、 John Bardeen和Walter H Brattain发明了晶体管,开辟了电子时代新纪元。

1949: EDSAC:剑桥大学的Wilkes和他的小组建成了一台存储程序的计算机。输入输出设备仍是纸带。

1949: EDVAC (electronic discrete variable computer):第一台使用磁带的计算机。这是一个突破,可以多次在其上存储程序。这台机器是John von Neumann提议建造的。

1949: "未来的计算机不会超过15吨。"这是当时科学杂志的大胆预测。

1950~1960

1950: 软磁盘由东京帝国大学的Yoshiro Nakamats发明。其销售权由IBM公司获得。开创存储时代新纪元。

1950: 英国数学家和计算机先驱Alan Turing说:计算机将会具有人的智慧,如果一个人和一台机器对话,对于提出和回答的问题,这个人不能区别到底对话的是机器还是人,那么这台机器就具有了人的智能。

1951: Grace Murray Hopper完成了高级语言编译器。

1951: Whirlwind:美国空军的第一个计算机控制实时防御系统研制完成。

1951: UNIVAC-1:第一台商用计算机系统。设计者:J Presper Eckert 和John Mauchly。被美国人口普查部门用于人口普查,标志着计算机的应用进入了一个新的、商业应用的时代。

1952: EDVAC (Electronic Discrete Variable Computer):由Von Neumann领导设计并完成。取名:电子离散变量计算机。

1953: 此时世界上大约有100台计算机在运转。

1953: 磁芯存储器被开发出来。

1954: IBM的John Backus和他的研究小组开始开发 FORTRAN (FORmula TRANslation),1957年完成。是一种适合科学研究使用的计算机高级语言。

1956: 第一次有关人工智能的会议在Dartmouth 学院召开。

1957: IBM开发成功第一台点阵打印机。

1957: FORTRAN 高级语言开发成功。

以上就是关于编译器的发展史全部的内容,包括:编译器的发展史、 *** 作系统发展史的多道程序系统、有哪位朋友能讲讲C语言是何时应用在单片机程序开发中的,应用的历程发展是什么样的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9531296.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存