编程语言的发展历史

计算机语言的发展历程可以简单划分为以下几个阶段 :

机器语言——>汇编语言——>高级计算机语言

1、机器语言:最初的计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机的语言的基础。计算机发明之初,计算机只能被少部分人使用,人  们需要用0、1组成的指令序列交由计算机执行,对于机器语言的使用与普及都是很令人头疼的问题。对于程序的移植能力几乎没有,从而时间成本,人力成本十分昂贵。但机器语言也不是没有优势,由于这种语言是直接对计算机硬件进行操作,所以在特定型号的计算机上面,运算效率也是很高的,机器语言的出 现对于未来的计算机语言发展起到了很好的推动作用,所以机器语言也是第一代计算机语言。
2、汇编语言:汇编语言是在机器语言的基础上诞生的一门语言,用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,这也提高了语言的记忆性和识别性。对于程序的开发与维护起到了积极作用。汇编语言同样也是直接对硬件进行操作,这样依然局限了它的移植性。但是使用汇编语言针对计算机特定硬件而编制的汇编语言程序,对于计算机硬件的功能和特长的发挥已有了很大进步,它精炼而质量高,所以至今仍是一种常用的程序开发语言。
3、高级计算机语言:在与计算机的不断交流中,人们对计算机程序的移植性需求不断提高,此时急需要一种不依赖于特定型号的计算机的语言,用这种语言编写的程序能在在各种平台都正常运行。从最初的语言诞生至今,已经相继出现了几百种语言。高级语言的发展也从最初的结构化语言发展成为面向过程语言设计和面向对象语言设计。面向过程语言设计的代表有:C语言,Fortran,cobol,pascal,ada等等一系列语言,而面向对象语言设计的代表则为:java, c++,c#等。

1、第一个计算机语言:Fortran

Fortran I诞生于1957年,由IBM设计,是世界上第一个真正的计算机语言。

Fortran I运行于IBM 704计算机上。

Fortran I支持:变量(变量名最多6个字符)、If和do语句、格式化IO。

不支持:数据类型声明、单独编译子程序

Fortran II 发布于1958年,主要对Fortran I的编译器做了优化,并支持了单独编译的子程序。

Fortran IV发布于1962年,并在1966年被标准化为Fortran 66,这也是第一个Fortran的标准化版本。

1978年的Fortran 77是非重要的标准化版本,这时的Fortran语言已经大量的引进了其他计算机语言的特点,例如字符串处理、逻辑判断、带else子句的if语句等。

Fortran的最新标准化版本是Fortran 2008。

Fortran的设计思想基于冯诺依曼体系结构是命令式语言的鼻祖。

2、源于数学的计算机语言:Lisp

人工智能语言IPL(Information Processing Language)诞生于1956年。IPL相当于一种假想的计算机的机器语言,这种计算机是以列表处理为基础,这有别于冯诺依曼体系结构。IPL的关键是证明了:基于列表处理的计算机的可行性。

1958年夏,约翰.麦卡锡在IBM研究代数表达式的微分运算时,产生了一系列对语言需求,包括:用数学函数控制流程的方法(即,递归和条件表达式);列表的自动分配;废弃列表的隐士回收。这些语言需求,显然IPL不能满足,所以需要设计新的语言。

1958年秋,麦卡锡在MIT成立了人工智能小组,开始着手设计这种新的列表处理语言。这最终导致1960年,Lisp的诞生。

1960年的Lisp并没有来得及设计自己的语法,就被麦卡锡的学生实现了,因为没有语法,麦卡锡的学生就以列表格式的语法分析树(即,S(Symbolic)表达式)作为临时语法。 但没有想到的是随着Lisp语言广泛流传,这种语法被程序员迅速介绍,并发现了其独特的魅力。

麦卡锡希望Lisp的语法是数学表达式的元语言,命名为M(Mate)表达式,类似于后面的ML语言的语法。但是这种想法遭到了当时Lisp程序员的反对,最后麦卡锡开了MIT,从此Lisp的语法凝固在S表达式上。

Lisp建立在列表和lambda演算和基础上,是函数式编程的鼻祖。

3、通用科学计算语言:Algol

Algol 58年诞生于1958年,由苏黎世会议制定。是第一个设具体机器无关的计算机语言。

随着Fortran的诞生,其他一些语言也在开发中,这些语言的语法格式各不相同,而且和Fortran一样,都与运行它们的具体计算机关联(比如标示符长度、代码行数的限制等)。用这些语言写的代码很难交流。于是Algol 58在Fortran I的基础做了扩展,并兼容了当时其他语言的一些特性,成为了程序设计思想的集成。

Algol 60,发表于1960年,在Algol 58的基础上做了重大改进:移入块结构、 支持两种子程序参数传递(按值传递和按名传递)、允许递归、支持本地数组(在栈上分配数组)。Algol 60是命令式语言的一个里程碑。

Algol 在设计之初,就定下:语法应当尽可能接近数学记法,的目标。这就使得Algol 60语法格式几乎影响到后来所有的计算机语言,并且Algol 60是很多文献表达算法的唯一正式方式。

Algol 60是后来所有计算机语言语法的鼻祖,但Cobol除外。

4、通用商务语言:COBOL

COBOL语言于1960年发布。注意真对商务应用。语言的设计理念是:“数学程序应该用数学记法来写,数据处理程序应该用英语语句来写”。商务应用显然属于后者,所以COBOL语言看起了就像是全大写的英语。

COBOL创造了一些新概念:宏(DEFINE)和数据结构(记录)。

COBOL在商务领域被广泛的使用。

COBOL对后来的语言几乎没有影响,但PL/I除外。

5、跨领域语言:PL/I

之前的所有语言都是领域特定语言,例如:人工智能领域的Lisp、科学计算领域的Algol 60,商务应用领域的COMBOL等。

PL/I诞生于1964年,是跨科学计算和商务应用领域的计算机语言。

PL/I是Algol 60、Fortran IV、COBOL的结合体。

6、面向对象的起源:SIMULA 67

1964年,在挪威计算机中心诞生了SIMULA I,然后不断的做改进最终于1967年,产生了SIMULA 67。

SIMULA 67是对Algol 60的扩展,是第一个定义类结构的语言,这也被认为是面向对象的起源。

将命令式编程中的数据和数据的有关函数集成在一起,就形成了面向对象编程中的对象,而对象的类型就是类。将命令式编程中主程序调用子程序的从属关系,变为面向对象编程中对象之间互相发送消息的平等关系。

7、正交设计:Algol 68

Algol 68,发表于1968年,第一个引入正交化设计的概念,以及用户自定义数据类型。

8、初学者的语言:BASIC

BASIC语言诞生于1971年,设计的主要目的是:使得计算机语言可以被非理工科生使用(当时理工科学生使用的Fortran和Algol 60很难被文科生掌握)。

这样的设计目的使得BASIC非常适合于初学者。

BASIC来自于Fortran IV,语法受到Algol 60影响。是BASIC是第一个被广泛使用的分时处理语言。

9、学院派语言:Pascal

Pascal语言诞生于1971年,来自于Algol 68。

Pascal重大影响来自于程序设计教学。它的出现取代了Fortran作为程序设计入门语言的地位。

Pascal在工业界也有广泛的使用。

10、系统语言:C

贝尔实验室的UNIX操作系统,最初版本使用汇编语言写成,并1970年,在UNIX上实现的第一个高级语言叫做B语言,B的目的是:用于开发UNIX系统程序,以及新版本的UNIX操作系统。B以BCPL语言为基础。

BCPL,诞生于1967剑桥大写,它的祖先是1962年诞生诞生于同一所大学的CPL语言。

B和汇编一样数据类型就是机器字,这极大的限制了B程序在不同位数的机器之间的迁移。B的这种不可一致性导致了C的产生。

C语言就是B的改进版本,同样以BCPL基础,诞生引入了Algol 68的特点,使得C语言称为了一个可移植系统程序语言。

C语言语法中对操作符的大量灵活的使用,极大的印象了后来的一批程序语言。

11、逻辑语言:Prolog

Prolog诞生于1972年,是逻辑式编程的鼻祖。所谓逻辑式编程,就是以形式逻辑的方式将计算过程传递给计算机。

12、极简主义:Scheme

Scheme作为一种Lisp方言,同样诞生在MIT,时间是1975年。Scheme第一个引入词法作用域,延续体,闭包等概念。并将数据和函数等同对待。

Scheme的简约优美使它博得了计算机语言皇后的桂冠,并与另一个以优雅著称的Pascal一起成为教学语言。

Scheme是函数式语言主要用于数学算法教学,Pascal是命令式语言主要用于程序设计教学。

13、Algol式语法的函数式语言:ML

ML诞生于1979年,ML开创了以Algol作语法的函数式语言的先河。

14、强类型惰性纯函数式语言:Haskell

Haskell是1990年标准化Miranda语言的结果。

Miranda诞生于1986年,部分基于ML语言。

Haskell最大的特点是惰性求值。

15、支持面向对象的函数式语言:OCaml

Caml诞生于1996年,基于ML和Haskell。

OCaml是Caml的面向对象版本,发布于2006年。

F#是基于OCaml的.NET平台版本,发布于2010年。

16、嵌入式语言:Ada

Ada语言诞生于1980年,是嵌入式系统应用语言。

Ada 83是1983年的标准化版本。

1995年的,Ada 95标准语言在ARM中定义。

Ada的最新版本是Ada 2005。

Ada广泛的用于商务、国防航空和交通运输等领域。

17、纯面向对象语言:Smalltalk

Smalltalk语言诞生于1980年,是第一个完全支持面向对象编程的语言。

Smalltalk源于SIMUAL 67,完善并定义了消息发送,和对象的继承关系。

在Smalltalk中,所有数据都是对象:消息的发送者,消息的接受者,消息,消息的结果…。对象的类型是类。类中可以定义方法,属性等。

18、命令式面向对象语言:C++

C++诞生于1983年,是在C的基础上,以SIMUAL 67的方式对命令式编程的面向对象扩展。C++的成功在于完全兼容C的情况下支持了面向对象,从而使面向对象编程成为了命令式编程的一个子类,传统的命令式编程被叫做面向过程编程。

因为对C的完全兼容,ASNI在1989年的标准化版本C 89,合并的两种语言,叫做C/C++。

C/C++的最重要版本是1999年的C 99。几乎吸收了当时被认为比较有效的计算机语言特性:面向过程编程、面向对象编程、泛型编程、自定义操作符重载等。

C/C++的最新是2011年发布的C 11。引入的lambda表达式,垃圾回收等机制。

由于C/C++吸收了太多的语言特性,使得C/C++成为世界上最难精通的语言,没有之一。

C/C++是目前使用人数最多的语言,和它一直竞争的是Java(具体可查看马海祥博客《关于C语言、C++、Java和Python这4种程序开发语言的评价》的相关介绍)。

19、原型面向对象语言:Self

Self诞生于1986年。Self源自于Smalltalk。

Self对面向对象做了深入与研究,提出了“万物皆对象”的思想。它删除了面向对象概念中的类的概念认为类也是一种对象;消息仍然作为最基本操作;把对象的属性理解为获取或更改属性这两种方法,从而把属性的概念简化为方法;取消了变量和赋值,替代它们的是通过消息来读槽和写槽。

在Self中对象创建对象的方式是自我拷贝,所以叫做原型。

Self是原型面向对象语言的鼻祖,就像SIMUAL 67是类面向对象语的鼻祖。

20、另一个对C进行面向对象扩展的语言:Objective-C

Objective-C诞生于1983年,后来被苹果公司选中,和C++相似,也是对C的面向对象扩展。所不同的是C++以SIMUAL 67的面向对象为基础,Objective-C以Smalltalk的面向对象基础。

Object-C一直伴随着苹果公司的操作系统一起发展,这两年随着iOS的开发被广泛使用。

21、对Pascal进行面向对象扩展的语言:Delphi

Delphi诞生于1995年,是对Pascal的面向对象扩展,借鉴了C/C++的经验,但没有像C/C++后来那样的疯狂变化。

22、脚本语言:Perl

Perl发布于1987年。Perl起源于操作系统的控制台(shell)的命令。用户将完成某个工作的所有命令保存在一个sh文件里,这样只要执行这个文件就可完成对应功能,省去每次都要输入所有命令的麻烦。sh文件就叫做脚本。

脚本只是一些命令行,可是发展到Perl时已经是一个相当成熟的语言了。

23、关联列表函数式面向对象脚本语言:Lua

Lua诞生于1993年,设计目的是嵌入引用程序,成为其脚本。Lua以其小巧性著称。

Lua基于Self和Scheme,它是第一个以关联列表最为主要数据的函数式语言。

24、虚拟机面向对象语言:Java

诞生于1995年的Java 1.0,来自于Sun公司,是第一个在虚拟机上运行的语言。

再这之前计算机语言要么:由解释器解释执行源代码(大多数命令式语言),叫做动态语言;要么:将源代码编译连接成实际的计算机指令后再由计算机执行(大多数命令式语言),叫做静态语言。

Java运行于JM(Java虚拟机)上,JM和解释器的区别是:JM会将Java源代码编译成字节码,然后然后再由JM解释执行。由于编译和执行过程是交错的,所以从外部来看就像是JM直接执行Java源代码一样。当然也可以,事先将Java源文件编译好,这样JM就可以直接执行了。

Java 1.0是C++的简化版本,保留了具有数据类型和类等一小半功能,删除了结构体,泛型编程等一多半的功能(具体可查看马海祥博客《你知道Java内部的这些事儿吗》的相关介绍)。

Java 5.5 支持了泛型编程编程。

最新版本是2014发布的Java 8.0,支持了lambda表达式。

Java是面向对象编程使用人数最多的语言。(C/C++的大部分人之使用C部分,即面向过程变成)。

Java的强有力竞争对手是C#。

25、面向对象解释式脚本语言:Python

Python诞生于1989年,作者为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为 ABC语言的一种继承。ABC是作者开发的教学语言。

Python和Perl用于相同领域,是面向过程+面向对象语言(具体可查看马海祥博客《Python语言代码的性能优化方法大全》的相关介绍)。

26、纯面向对象解释式脚本语言:Ruby

Ruby诞生于1996年,作者基于对Perl和Python的不满而设计,的纯面向对象脚本语言。

Ruby基本等于Smalltalk + Lisp。

27、Web服务器脚本语言:PHP

PHP诞生于1994年,是Web服务器脚本语言。

PHP和JavaScript的语发相似,都是嵌入在HTML中,只不过一个在服务器端,一个在浏览器端。

28、浏览器脚本语言:JavaScript

1995年,网景公司发行的 Netscape Navigator 2.0,它的脚步语言就是JavaScript。

JavaScript和Java没有任何关系,它的前身是ScriptEase。

ScriptEase的诞生于1992年原名C-minus-minus,是一个足够强大可以替代宏操作(macro)的脚本语言,同时保持与 C足够的相似性,以便开发人员能很快学会。

ScriptEase基于C和Self语言,支持面向过程和原型面向对象编程。

JavaScript后来由引入了Lua语言,支持以关联列表作为数据格式的函数式编程,这种关联列表这就是著名的JSON。

最后JavaScript是一个:表面叫Java脚本,但是和Java没有任何关系;表面上是一个像C语言一样的面向过程语言,但实际上是一个原型面向对象语言;表面上你创建了一个对象,但其实只是一个关联列表;表面上你在定义变量和赋值,其实只是<键,值>对;表面上你声明函数,其实只是<键,lambda表达式>对。表面上是一个命令式编程语言,但本质上是一个以关联列表为数据格式的函数式编程语言。

29、.NET平台主语言:C#

C#于2000年和.NET开发平台一起由微软发布。

C#是.NET开发平台的主语言。.NET开发平台包括,运行IL语言的虚拟机CLR,基于IL语言的公共类库,用于编译产生IL语言程序的高级语言,以及支持这些高级语言开发的编译的基础开发环境。

由于CLR和IL公共类库作为Window操作系统的一部分捆绑发布,所以IL语言程序可以再Window操作系统上直接执行,就行机器指令一样。

CLR运行IL和JM运行Java一样,只不过CLR将IL编译成机器指令,然后在由计算机直接执行,而JM是将Java编译成字节码,然后由解释器解释执行。

.NET开发平台支持多种语言,其中C#是主语言。

C# 1.0 基于Java和C++,以Java为基础将更多的C++加入进来,并且吸收了一些Delphi和Visual Basic的特性。

C# 2.0 引入泛型编程。

C# 4.0支持了lambda表达式,Linq等。

最新版本是2014发布的C#5.0。

.NET 4.0引入了动态类型,使得.NET平台可以嵌入动态语言,比如:Lisp、Python、 Ruby等。

30、不再基础的BASIC:Visual Basic .NET

Quick BASIC由美国微软公司开发,1987年推出,它是BASIC的继承者。

Quick BASIC是DOS下的开发语言,后来随着Window系统的推出加入了图像化设计所以新的版本改名为:Visual Basic。Visual Basic是第一个支持可视化界面设计的语言。

1998年发布的Visual Basic 6.0 是一个应用非常广泛的版本。

2001年,Visual Basic迁移到了.NET平台上,改名Visual Basic .NET。Visual Basic .NET对BASIC语言特性进行了重大改进。从此Visual Basic .NET伴随.NET开发平台一起发展。

补充,R语言现在是最流行的统计计算语言,是S4语言的免费版本,S语言由贝尔实验室创造。R语言、3M数学计算语言(Matlab、Mathematica、Maple)、汇编语言都未列入名录。

原文地址:https://www.cnblogs.com/QQBOSS/p/9906436.html

时间: 2024-10-11 15:46:41

编程语言的发展历史的相关文章

python 学习之电脑的发展历史

电脑的发展历史 电脑的学名叫计算机,电脑是用来做计算的.在古时候,人们最早使用的计算工具可能是手指,英文单词“digit”既有“数字”的意思,又有“手指“的意思.古人用石头打猎,所以还有可能是石头来辅助计算.  缺点:手指和石头太低效了 后来出现了”结绳 “记事.   缺点:结绳慢,绳子还有长度限制. 又不知过了多久,许多国家的人开始使用”筹码“来计数,最有名的就要数咱们中国商周时期出现的算筹了.古代的算筹实际上是一根根同样长短和粗细的小棍子,大约二百七十几枚为一束; 多用竹子制成,也有用木头.

让你提前认识软件开发(24):C语言的发展历史和主要特点

第1部分 重新认识C语言 C语言的发展历史和主要特点 作为一门众所周知的计算机编程语言,C语言是谁发明的呢?它是如何演进的?它有何特点?到底有多少人在使用它? 1. C语言之父 C语言是1972年由美国贝尔实验室的计算机科学家Dennis Ritchie(丹尼斯·里奇)设计发明的.因此,Dennis Ritchie被誉为"C语言之父"(他已于2011年10月9日去世,享年70岁).图1中的人物就是Dennis Ritchie. 图1 "C语言之父" Dennis R

Web开发技术发展历史

Web开发技术发展历史 来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互联网".Web是World Wide Web的简称,中文译为万维网."万维网"和我们经常说的"互联网"是两个联系极其紧密但却不尽相同的概念.今天"互联网"三个字已经承载了太多的内涵,提到互联网,我们通常想到的一种战略思维,或者是一种颠覆传统的商

web前端入坑第五篇:秒懂Vuejs、Angular、React原理和前端发展历史

秒懂Vuejs.Angular.React原理和前端发展历史 2017-04-07 小北哥哥 前端你别闹 今天来说说 "前端发展历史和框架" 「前端程序发展的历史」 「 不学自知,不问自晓,古今行事,未之有也 」 我们都知道如今流行的框架:Vue.Js.AngularJs.ReactJs.已经逐渐应用到各个项目和实际应用中,它们都是MVVM数据驱动框架系列的一种. 在了解MVVM之前,我们先回想一下前端发展的历史阶段,做到心中有数,才会更好理解. 这段回想历史.由于网上就可查不少资料,

Java版本发展历史(转载自CSDN)

几年前,Java将死的话题被传得沸沸扬扬,特别是在甲骨文公司收购SUN公司后,几乎全世界的Java程序员都皱起了眉头.但随着Google Android平台的崛起以及大数据时代的来临,Java似乎又重新焕发了光芒. 2014年1月份,CSDN携手<程序员>杂志发起了"2013年中国软件开发者薪资大调查"在线调查活动,通过调查发现,使用Java的开发者高达45.39%,位居第一.而使用C#和C++的开发者仅为17.63%和13.37%. Java语言的开发性.兼容性和扩展性使

sql语言的发展历史

sql语言的发展历史 SQL是结构化查询语言(Structure Query Language)的缩写,它是使用关系模型的数据库应用语言,由IBM在70年代开发出来,作为IBM关系数据库原型System R的原型关系语言,实现了关系数据库中的信息检索. 80年代初,美国国家标准局(ANSI)开始着手制定SQL标准,最早的ANSI标准于1986年完成,它也被叫做SQL-86.标准的出台使SQl作为标准的关系数据库语言的地位得到加强.SQL标准几经修改和完善,目前新的SQL标准是1992年制定的SQ

选一种你比较熟悉的软件,并点评它的优缺点,并描述此类软件的发展历史

windows操作系统, 优点:图形化界面能够更加便捷的对文件进行处理 缺点:容易被黑客破解从而导致信息的丢失 发展历史: 1.Windows是由微软在1983年11月宣布,并在两年后(1985年11月)发行的. 2.Windows版本2.0是在1987.11正式在市场上推出的.该版本对使用者界面做了一些改进.2.0版本还增强了键盘和鼠标界面,特别是加入了功能表和对话框. 3.Windows3.0是在1990年5月22日发布的,它将Win/286和Win/386结合到同一种产品中.Windows

计算机芯片的发展历史——软件工程第一章第11题 范世良

软件的发展历史有有关的纪录片汇总: 纪录片名称 链接 Tetris: From Russia With Love Tetris: From Russia with Love ProJect Code Rush Project Code Rush The Pixar Story The Pixar Story id Software – All Your History id Software – All Your History Startup.com Startup.com The Histo

编程语言的发展脉络图

做了两件事情:第一件是从Wikipedia网站上搜集各种编程语言的资料,第二件是把编程语言之间相互影响的关系用图的形式画出来,从而得到了一张编程语言的发展脉络图. 这两件事情主要是编写Ruby程序来做的,在Wikipedia页面的右上角有一个表格,从中提取Appeared in,Influenced by,Influenced等字段,根据这种关联关系遍历,采集到292种语言,用JSON格式保存到文件中,然后把几个出现年份描述不精确的语言用人工查证的方式进行补充. [["Swift",&