History of program (language).

1 编程语言的发展历程及未来趋势

1.1 编程语言的发展

· 1946 Plankalkul 
    Konrad Zuse,一位德国工程师,他躲藏在巴伐利亚附近的阿尔卑斯山上时,独立开发了Plankalkul。他把该项成果应用在其它的事物中,比如国际象棋。

 

· 1949 Short Code

    第一种真正在电子设备上使用的计算机语言,尽管它是一个纯手工编译的语言。

 

· 1951 Grace Hopper 

    Grace Hopper为Remington Rand工作,是在第一个著名的编译器——A-o上开始设计工作。当Rand在1957年发布这个词语时,它被称为MATH-MATIC

 

· 1952 AUTOCODE

    Alick E. Glennie ,他利用自己在曼彻斯特大学的课余时间,发明了一个名为AUTOCODE的编程系统,一个未能成型的编译器。 
 
· 1954 Fortran

    FORTRAN(FORmula TRANslator的缩写)意为“公式翻译器”,是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。FORTRAN语言以其   特有的功能在数值、科学和工程计算领域发挥着重要作用。

 

· 1958 LISP
    LISP语言(全名LISt Processor,即链表处理语言)由约翰·麦卡锡在1960年左右创造的一种基于λ演算的函数式编程语言。
 
· 1959 Cobol
    COBOL(Common Business Oriented Language)是数据处理领域最为广泛的程序设计语言,是第一个广泛使用的高级编程语言。主要应用于数值计算并不复   杂,但数据处理信息量却很大的商业领域。

· 1962 Simula
    Simula 67被认为是最早的面向对象程序设计语言,它引入了所有后来面向对象程序设计语言所遵循的基础概念:对象、类、继承。

· 1964 Basic
    BASIC(Beginners’ All-purpose Symbolic Instruction Code)的意思就是“初学者的全方位符号指令代码”,是一种设计给初学者使用的程序设计语     言。BASIC是一种解释语言,在完成编写后不须经过编译及连结即可执行,但如果要单独执行仍然需要编译成可执行文件。

· 1968 Pascal
    Pascal语言语法严谨,层次分明,程序易写,具有很强的
  可读性,是第一个结构化的编程语言。Pascal的取名是为了纪念十七世纪法国著名哲学家和数学家Blaise Pascal,它由瑞士Niklaus Wirth教授于六十年代末设计   并创立。

· 1969 C
    C语言既具有高级语言的特点,又具有汇编语言的特点,由美国贝尔研究所的D.M.Ritchie于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。
 
· 1975 SQL
    SQL(Structured Query Language,结构化查询语言)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

· 1983 C++
    C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设   计风格。

· 1987 Perl
    Perl象C一样强大,象awk、sed等脚本描述语言一样方便。
    Perl借取了C、sed、awk、shell scripting以及很多其他程序语言的特性。其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库     CPAN。
    Perl最初的设计者是拉里·沃尔(Larry Wall),发表于1987年12月18日。

· 1991  Python
    Python是一种面向对象、直译式计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python是一种代表简单主义思   想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。

· 1995  Java
    Java是一种简单的,面向对象的,分布式的,解释的,健壮的,安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。
  是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。在Java 出现以前。Internet上的信息内   容都是一些乏味死板的HTML文档。
    这对于那些迷恋于WEB浏览的人们来说简直不可容忍。他们迫切希望能在WEB中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平   台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编程语言显得无能为力,而SUN的工程师敏锐地察觉到了这一点,从1994   年起,他们开始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本。

· 1995 JavaScript
    JavaScript是一种能让你的网页更加生动活泼的程式语言,也是目前网页中设计中最容易学又最方便的语言。
 
· 2001 C#
    C#(C Sharp)是微软为.NET框架量身订做的程序语言,C#拥有C/C++的强大功能以及Visual Basic简易使用的特性,是第一个组件导向的程序语言,与C++和Java   同样是面向对象程序设计语言。

· 2002 .Net
    .NET 是 Microsoft XML Web服务平台。XML Web服务允许应用程序通过Internet进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语   言。

· 2005 Ruby On Rails
    Ruby on Rails是一个可以使你开发、部署、维护web应用程序变得简单的框架,Ruby以7月的诞生石ruby(红宝石)命名。

· 2009 Node.JS
    Node是一个服务器端 JavaScript 解释器,它改变了服务器应该如何工作的概念。它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同   时连接到一台物理机的连接代码。当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。
 

1.2 编程语言的发展趋势

 

      “首先,编程语言的发展非常缓慢。期间当然出现了一些东西,例如面向对象等等,但是远没有好上1000倍。另一方面,你可能会想,那么这些努力都到哪里去了呢?事实上这些努力没有体现在编程语言上,而是出现在框架及工具等方面了。如果你关注如今我们使用的框架,它们的体积的确有1000倍的增长。与此类似,如果你观察现在的IDE,我们现在已经有了无数强大的功能,例如语法提示,重构,调试器,探测器等等,这方面的新东西有很多。与此相比,编程语言的改进的确很不明显。”
   几十年来,硬件性能按成千上万倍的规模增长,软件工具与框架也有数倍乃至十数的增长,强调这一点,我们不难识别网上的编程语言之争,有些确属“愚忠”之举,如果我们把编程语言自身与它所依赖(或由它拓展的)运行环境区分开来,什么都是浮云,剩下的其实主要是平台路线之争,都与具体应用相关,大家不甚着调的闹个热火朝天。当然,语言之间区别还是存在的,像C语言面向过程,C++面向对象,面向对象自然比面向过程更加人性,但这是显而易见的,无关语言优劣。
   原本的编程语言分类方式也要有所改变了。以前我们经常说面向对象语言,动态语言或是函数式语言。但是我们现在发现,这些边界变得越来越模糊,经常会互相学习各自的范式。静态语言中出现了动态类型,动态语言里也出现了静态能力,而如今所有主要的编程语言都受到函数式语言的影响。因此,一个越来越明显的趋势是多范式程序设计语言。
   C#、java、Go等语言的发展轨迹,我们明显看到这种趋势。CSE也是这种趋势的典型代表,它分明是一种解释性动态语言,但模拟C/C++命令式风格,把动态与静态的特质融为一体。
   编程语言能做的事情有限,请勿期望过高。
   语言对并发支持没大家想象得重要,并发编程更多是编程方式、思维模式变化,你要关注任务隔离性,更加精心的构造(或分离出)可并行的任务,提供普适的“纯洁”函数(无副作用函数)。并发对编程语言的要求是:能标识这种纯洁函数,提供foreach 多核分发机制,相比较而言,并行编程的思维方式变化才是根本性的。
了解编程语言的文化,利用好编程语言,在信息化的今天,我们会走的更远。
来源:https://wenku.baidu.com/view/fb0754e904a1b0717ed5dd07.html?from=search
 

2 程序设计语言的发展

(一)“史前”时期
世界上最早的"计算机"是我国的算盘,它被人们沿用至今。在17世纪, Pascal等人发明了一种以传动齿轮为基础的“计算机”,它是以齿轮的转动来控制计算的累加与进位。上个世纪初,英国剑桥大学著名数学家Charles Babbage 于1822年与1848年分别设计出了两种差分机,并于1833年制造出了有名的分析机。分析机在原理上与当今社会的计算机非常类似,它靠输入读进穿孔卡片来对输入的数进行算术运算并给出结果。而且分析机可以随意重复运算序列。这些是由Ada Lovelace设计的运算序列可以解决许多问题。实际上,这种运算序列就是程序的雏形,而这种设计思想一直沿用至今。因而Ada Lovelace被称为是世界上第一个程序员(ADA语言就是为纪念她而命名)。1890年Hollerith研制出了一种同样使用穿孔卡片的统计机被用作各种统计工作。此后,Hollerith成立了一个公司,这个公司便是如今的IBM。
纪30年代,英国数学家Turing提出了图灵机的概念,它是由一个控制块、一条存储带及一个读写头构成的能执行左移、右移、在存储带中清除或写入符号以及条件转移等操作的机器。这种图灵机的结构虽然较为简单,但一切运算。随后Church发明了一种以逻辑公式中约束变量的代入为主要运算的λ-演算,这种运算已经相当于一种语法与语义都非常简单的程序设计语言,已被广泛应用于程序理论以及程序设计语言理论与实践的研究中。

(二)低级语言时期
1.第一代程序设计语言——机器语言
机器语言是二进制机器代码编成的代码序列,用来控制计算机执行规定的操作。其特点是能直接反映计算机的硬件结构,并且用机器语言编写的程序不须作任何处理即可直接输入计算机执行。由于机器语言与机器是一对一的,不同的机器有不同的指令系统,一种机器编写的程序也无法直接搬到另一种机器上运行。一个问题如果需要在多种机器上求解,那么就必须对同一问题重复编写多个应用程序。
2.第二代程序设计语言——汇编语言
由于机器语言程序的直观性差,且与人们习惯使用的数学表达式及自然语言差距太大,导致机器语言难学、难记,编写出来的程序难以调试、修改、移植和维护,极大限制了计算机的推广作用。在这种情况下,用助记符号来表示机器指令的操作符与操作数(亦称运算符与运算对象),用地址符号或标号代替指令或操作数的地址的汇编语言出现了。机器不能直接识别使用汇编语言编写的程序,还要由汇编语言编译器转换成机器指令才能运行。
由于汇编语言与机器指令之间是一对一的关系,导致即使是编写一个很简单的程序也需要数百条指令。所以在汇编语言的基础上,人们又研制出了只需一条
指令便可编译成多条机器指令的宏汇编语言。而后又研制出了用于把多个独立编写的程序块连接组装成一个完整程序的连接程序。但汇编语言大多是针对特定的计算机或计算机系统设计的,所以它对机器的依赖性很强,同时还有很多的机器语言中存在的问题,汇编语言也没有解决。

(三)高级语言阶段
1954年,第一个完全脱离机器硬件的高级语言——FORTRAN语言问世了。高级语言在不同的平台上会被编译成不同的机器语言,使得程序设计语言不再过度的依赖某种特定的机器或者语言环境。1970年,一个标志着结构化程序设计时期开始的语言问世了,它就是Pascal语言。这个标致性的语言拥有严格的结构化形式、丰富且完备的数据类型,运行效率高、查错能力强。同时Pascal语言还是一种自编译语言。这个以法国数学家pascal命名的语言现已成为使用最广泛的基于DOS的语言之一。
80年代初,在程序设计的思想上又发生了一次大的革命。这个时期研制出的语言多为面对对象的程序设计。之后,高级语言的目标则是面对应用的程序设计。它侧重于描述程序“做什么”而不是“如何做”。
程序设计语言的发展是一个不断演变的过程。从最开始的机器语言,到汇编语言,再到各种各样的高级语言,最后到支持面对对象技术的面对对象的语言,甚至未来的面对应用的语言,它的演化过程的根本推动力就是抽象机制的更高要求,以及对程序设计思想的更好的支持。也就是说把机器能够理解的语言提升到能够很好的模拟人类思考问题的形式的过程。
来源:https://wenku.baidu.com/view/eb72ca12c5da50e2524d7f34.html?from=search
posted @ 2018-11-05 17:30  温柔の风  阅读(47)  评论(0编辑  收藏