编程语言发展历史

一、第一代计算机语言——机器语言
  机器语言,即第一代计算机语言。机器语言是用二进制代码(0和1)表示的计算机能直接识别和执行的一种机器指令的集合,能够直接被机器执行。早期的程序设计均使用机器语言,程序员们将用0, 1数字编成的程序代码打在纸带或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,进行运算。

指令格式
  机器语言指令是一种二进制代码,由操作码和操作数两部分组成。操作码规定了指令的操作,是指令中的关键字,不能缺省。操作数表示该指令的操作对象。

优点:
1.能够被机器直接运行
2.灵活
3.速度非常快

缺点:
1.不便于阅读
2.难以记忆
3.很难确保程序的正确性、高效性
4.争对某一种特定的计算机,移植性差,重用性差

二、第二代计算机语言——汇编语言
  机器语言由纯粹的0和1构成,十分复杂,不方便阅读和修改,也容易产生错误。程序员们很快就发现了使用机器语言带来的麻烦,它们难于辨别和记忆,给整个产业的发展带来了障碍,于是汇编语言产生了。
  汇编语言, 即第二代计算机语言,用一些容易理解和记忆的缩写单词来代替一些特定的指令,例如:用"ADD"代表加法操作指令,"SUB"代表减法操作指令,以及"INC"代表增加1,"DEC"代表减去1,"MOV"代表变量传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便。
  但计算机的硬件不认识字母符号,这时候就需要一个专门的程序把这些字符变成计算机能够识别的二进制数或机器语言。因为汇编语言只是将机器语言做了简单编译,没有根本上解决机器语言的特定性,所以汇编语言和机器自身的编程环境息息相关,推广和移植很难,但是还是保持了机器语言优秀的执行效率,因为他的可阅读性和简便性,汇编语言到现在依然是常用的编程语言之一。
  汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计。在今天的实际应用中,它通常被应用在底层,硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。

优点:
1.可以轻松的读取存储器状态以及硬件I/O接口情况
2.编写的代码因为少了很多编译的环节,可以能够准确的被执行
3.作为一种低级语言,可扩展性很高

缺点:
1.因为代码非常单调,特殊指令字符很少,所以造成了代码的冗长以及编写的困难
2.汇编仍然需要自己去调用存储器存储数据,很容易出现BUG,而且调试起来也不容易
3.就算完成了一个程序,后期维护时候也需要耗费大量的时间。
4.因为机器的特殊性造成了代码兼容性差的缺陷,依赖于特定的计算机硬件。

三、第三代计算机语言——高级语言

在编程语言经历了机器语言,汇编语言等更新之后,人们发现了限制程序推广的关键因素——程序的可移植性。需要设计一个能够不依赖于计算机硬件,能够在不同机器上运行的程序。这样可以免去很多编程的重复过程,提高效率,同时这种语言又要接近于数学语言或人的自然语言。

1956年,美国计算机科学家约翰·巴克斯带领团队开发出了世界上第一个高级编程语言FORTRAN
1958年,麻省理工学院的人工智能研究先驱约翰·麦卡锡(John McCarthy)基于λ演算创造了LISP语言,LISP为函数式程序设计语言,所有运算都能以函数作用于参数的方式来实现,采用抽象数据列表与递归作符号演算来衍生人工智能。LISP名称源自列表处理(List Processing)的英语缩写,LISP是一种通用高级计算机程序语言,长期以来垄断人工智能领域的应用。LISP作为应用人工智能而设计的语言,是第一个声明式系内函数式程序设计语言,有别于命令式系内过程式的C、Fortran和面向对象的Java、C#等结构化程序设计语言。
1958年,ALGOL(ALGOrithmic Language)算法语言委员会小组成立,后续发表了ALGOL系列算法语言,对后来的高级语言产生了深远的影响
1964年,BASIC语言正式发布。达特茅斯学院院长、匈牙利人约翰·凯梅尼(J. Kemeny)和数学系教师托马斯·卡茨(Thomas E. Kurtz)认为,像FORTRAN那样的语言都是为专业人员设计,没有办法普及。于是,他们在简化FORTRAN的基础上,在1964年研制出一种“初学者通用符号指令代码”(Beginner’s All-purpose Symbolic Instruction Code),简称BASIC。1975年,比尔·盖茨把它成功移植到了PC上。
1967年,在挪威奥斯陆郊外的小镇莉沙布举行的IFIP TC-2 工作会议上,挪威科学家Ole-Johan Dahl和Kristen Nygaard正式发布了Simula 67语言。Simula 67被认为是最早的面向对象程序设计语言,它引入了所有后来面向对象程序设计语言所遵循的基础概念:对象、类、继承。Simula是由Ole-Johan Dahl和Kristen Nygaard在20世纪60年代在奥斯陆挪威计算中心开发的两种模拟编程语言Simula I和Simula 67的名称。在句法上,它是ALGOL 60的一个相当忠实的超集。Simula被认为是第一个面向对象的编程语言。顾名思义,Simula就是为模拟而设计的,并且该领域的需求为当今面向对象语言的许多功能提供了框架。
1970年,瑞士计算机科学家Niklaus Wirth基于ALGOL研制出了第一个结构化编程语言Pascal,Pascal语言是一种算法语言,它是瑞士苏黎世联邦工业大学的沃思教授于1968年设计完成的,1971年正式发表。Pascal语言是在ALGOL60的基础上发展而成的。它是一种结构化的程序设计语言。它的功能强、编译程序简单,是70年代影响最大一种算法语言。
1972年, C语言(The C Programming Language)诞生
1970年代~1980年代(20世纪70年代到80年代),Smalltalk出现,它被公认为历史上第二个面向对象的程序设计语言,和第一个真正的集成开发环境(IDE)。Smalltalk由艾伦·凯,Dan Ingalls,Ted Kaehler,Adele Goldberg等于70年代初在Xerox PARC开发。Smalltalk对其它众多的程序设计语言的产生起到了极大的推动作用,主要有:C++,C#,Objective-C,Actor,Java和Ruby等。90年代的许多软件开发思想得利于Smalltalk,例如设计模式、敏捷编程和代码重构等。
1979年,Jean Ichbiah率领的绿组建议方案被釆纳并被命名为Ada,它是一种程序设计语言。源于美国军方的一个计划,旨在整合美军事系统中运行着上百种不同的程序设计语言。其命名是为了纪念世界上第一位程序员阿达·洛芙莱斯。
==1980年代,荷兰国家数学与计算机科学研究中心的Leo Grurts,Lambert Meertens,Steven Pemberton主导研发了一种交互式,结构化高级语言ABC语言,旨在替代BASIC,Pascal等语言,用于教学及原型软件设计。
1980年左右,R语言在新西兰奥克兰大学诞生,R语言是统计领域广泛使用的诞生于1980年左右的S语言的一个分支。可以认为R是S语言的一种实现。而S语言是由AT&T贝尔实验室开发的一种用来进行数据探索、统计分析和作图的解释型语言。
1980年代初,布莱德·考克斯(Brad Cox)在其公司Stepstone发明了Objective-C,是扩充C的面向对象编程语言。Objective-C的流行归功于iPhone的成功。编写iPhone应用程序的主要编程语言是Objective-C。
1983年,C++(The C++ Programming Language/c plus plus )诞生
1984年,MATLAB诞生。MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。
1986年,美国ANSI采用SQL作为关系数据库管理系统的标准语言(ANSI X3. 135-1986),后为国际标准化组织(ISO)采纳为国际标准。结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
1987年,美国程序员拉里·沃尔(Larry Wal)研发出了perl语言,perl从最初是为文本处理而开发的,现在用于各种任务,包括系统管理,Web开发,网络编程,GUI开发等。
1990年,荷兰数学和计算机科学研究学会的吉多·范罗苏姆基于ABC语言,研发出了Python语言。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,它已被逐渐广泛应用于系统管理任务的处理、Web编程、数据科学研究、网络爬虫、游戏开发、人工智能、大数据等。
1991年,微软公司推出了Visual Basic(简称VB)语言,源自于BASIC。Visual Basic(简称VB)是Microsoft公司开发的一种通用的基于对象的程序设计语言,为结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言。是一种可用于微软自家产品开发的语言。
1993年,Lua诞生,它是一个小巧的脚本语言。Lua是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua的目标是成为一个很容易嵌入其它语言中使用的语言。很多应用程序、游戏使用LUA作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。这其中包括魔兽世界、博德之门、愤怒的小鸟、QQ三国、VOCALOID3、Garry’s Mod、太阳神三国杀、游戏王ygocore和饥荒等。
1994年,丹麦程序员Rasmus Lerdorf根据C语言、Java和Perl多个语言的特色语法研发出了PHP语言。PHP是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中,PHP同时支持面向对象和面向过程的开发,使用上非常灵活。
1995年,Sun公司的詹姆斯·高斯林带领他的团队对C++进行改写,诞生了Java语言
1995年,Netscape公司的Brendan Eich,在网景导航者浏览器上研发出了JavaScript。最开始取名LiveScript,因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。
1995年,日本的松本行弘(Yukihiro Matsumoto)推出了Ruby的第一个版本Ruby 0.95。不久Ruby便凭借其独特的魅力横扫日本,它是一种简单快捷的面向对象(面向对象程序设计)脚本语言。
2000年,微软公司的安德斯·海尔斯伯格(Anders Hejlsberg)带领他的团队基于C和C++研发出C#,C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。
2000年,易语言最早的版本发布。易语言(EPL)是一门以中文作为程序代码编程语言,其以“易”著称,创始人为吴涛。易语言早期版本的名字为E语言。创造易语言的初衷是进行用中文来编写程序的实践,方便中国人以中国人的思维编写程序,并不用再去学习西方思维。易语言的诞生极大的降低了编程的门槛和学习的难度。从2000年以来,易语言已经发展到一定的规模,功能上、用户数量上都十分可观。目前易语言已取得国家级鉴定,鉴定会专家一致认为:易语言在技术上居于国内领先地位,达到了当前同类产品的国际先进水平。易语言是一个自主开发,适合国情,不同层次不同专业的人员易学易用的汉语编程语言。易语言降低了广大电脑用户编程的门槛,尤其是根本不懂英文或者英文了解很少的用户,可以通过使用本语言极其快速地进入Windows程序编写的大门。
2002年,微软公司推出了Visual Basic.NET,基于微软.NET Framework之上的面向对象的编程语言。
2009年, Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 研发出Go语言,它是一种静态强类型、编译型语言,语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
2014年,苹果于2014年WWDC苹果开发者大会发布的新开发语言Swift,可与Objective-C共同运行于macOS和iOS平台,用于搭建基于苹果平台的应用程序。Swift是一款易学易用的编程语言,而且它还是第一套具有与脚本语言同样的表现力和趣味性的系统编程语言。Swift的设计以安全为出发点,以避免各种常见的编程错误类别。2015年12月4日,苹果公司宣布其Swift编程语言开放源代码。长600多页的The Swift Programming Language 可以在线免费下载。
2015年,Rust 1.0 第一个稳定版本发布。Rust语言最早在2006年是作为 Mozilla 员工 Graydon Hoare 的私人项目出现。Rust是一门系统编程语言,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言,Rust在语法上和C++类似。Rust致力于成为优雅解决高并发和高安全性系统问题的编程语言,适用于大型场景,即创造维护能够保持大型系统完整的边界。这就导致了它强调安全,内存布局控制和并发的特点。标准Rust性能与标准C++性能不相上下。

四、高级语言的分类:
1.解释型和编译型
解释型语言:
  是在运行的时候将程序翻译成机器语言,速度较慢。解释型语言的程序不需要在运行前编译,在运行程序的时候才翻译,专门的解释器负责在每个语句执行的时候解释程序代码。这样解释型语言每执行一次就要翻译一次,因此效率比较低。
  一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言。

解释型语言通常有:JavaScript、VBScript、Perl、Python、Ruby、Basic、MATLAB 等等

编译型语言:
  运行编译型语言是相对于解释型语言存在的,编译型语言的首先将源代码编译生成机器语言,再由机器运行机器码(二进制)。由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用编译型语言。
  编译型语言在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。

编译语言通常有:C、C++、Pascal/Object Pascal(Delphi)、Go等等

介于两者直接的语言有:Java

2.面向过程和面向对象
面向过程结构化程序设计语言:
  “面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。简写为POP。

面向过程语言有:C、Fortran、 Pascal等等

面向对象程序设计语言:
  面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。

面向对象语言有:c++、c#、java、delphi、Python、Simula等等

介于两者之间有:c++、perl等等

你可能感兴趣的:(开发语言)