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
FORTRAN(FORmula TRANslator的缩写)意为“公式翻译器”,是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。FORTRAN语言以其 特有的功能在数值、科学和工程计算领域发挥着重要作用。
LISP语言(全名LISt Processor,即链表处理语言)由约翰·麦卡锡在1960年左右创造的一种基于λ演算的函数式编程语言。
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语言已先后被移植到大、中、小及微型机上。
SQL(Structured Query Language,结构化查询语言)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
· 1983 C++
C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设 计风格。
· 1987 Perl
Perl象C一样强大,象awk、sed等脚本描述语言一样方便。
Perl借取了C、sed、awk、shell scripting以及很多其他程序语言的特性。其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库 CPAN。
· 1991 Python
Python是一种面向对象、直译式计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python是一种代表简单主义思 想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。
· 1995 Java
是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。在Java 出现以前。Internet上的信息内 容都是一些乏味死板的HTML文档。
这对于那些迷恋于WEB浏览的人们来说简直不可容忍。他们迫切希望能在WEB中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平 台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编程语言显得无能为力,而SUN的工程师敏锐地察觉到了这一点,从1994 年起,他们开始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本。
· 1995 JavaScript
JavaScript是一种能让你的网页更加生动活泼的程式语言,也是目前网页中设计中最容易学又最方便的语言。
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 编程语言的发展趋势
几十年来,硬件性能按成千上万倍的规模增长,软件工具与框架也有数倍乃至十数的增长,强调这一点,我们不难识别网上的编程语言之争,有些确属“愚忠”之举,如果我们把编程语言自身与它所依赖(或由它拓展的)运行环境区分开来,什么都是浮云,剩下的其实主要是平台路线之争,都与具体应用相关,大家不甚着调的闹个热火朝天。当然,语言之间区别还是存在的,像C语言面向过程,C++面向对象,面向对象自然比面向过程更加人性,但这是显而易见的,无关语言优劣。
原本的编程语言分类方式也要有所改变了。以前我们经常说面向对象语言,动态语言或是函数式语言。但是我们现在发现,这些边界变得越来越模糊,经常会互相学习各自的范式。静态语言中出现了动态类型,动态语言里也出现了静态能力,而如今所有主要的编程语言都受到函数式语言的影响。因此,一个越来越明显的趋势是多范式程序设计语言。
C#、java、Go等语言的发展轨迹,我们明显看到这种趋势。CSE也是这种趋势的典型代表,它分明是一种解释性动态语言,但模拟C/C++命令式风格,把动态与静态的特质融为一体。
编程语言能做的事情有限,请勿期望过高。
语言对并发支持没大家想象得重要,并发编程更多是编程方式、思维模式变化,你要关注任务隔离性,更加精心的构造(或分离出)可并行的任务,提供普适的“纯洁”函数(无副作用函数)。并发对编程语言的要求是:能标识这种纯洁函数,提供foreach 多核分发机制,相比较而言,并行编程的思维方式变化才是根本性的。
了解编程语言的文化,利用好编程语言,在信息化的今天,我们会走的更远。
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://www.cnblogs.com/DJOSIMON/p/9910361.html
History of program (language).相关推荐
- History of program(1950-2020)
1957年 约翰·巴科斯(John Backus)创建了是全世界第一套高阶语言:FORTRAN. John Backus 1959年 葛丽丝·霍普(Grace Hopper)创造了现代第一个编译器A- ...
- history of program atan2(y,x)和pow(x,y)
编年史 1951 – Regional Assembly Language 1952 – Autocode 1954 – IPL (LISP语言的祖先) 1955 – FLOW-MATIC (C ...
- history of program
从1951年2014年,人类一共发明了256种编程语言,每一种语言的出现都带有某些新特征.编程语言不断的在革新,很快就会有超出这个清单的新编程语言出现 1801 - Joseph Marie Jacq ...
- 函数式编程语言(Fuction Program Language)
一.什么是函数式编程语言 函数式编程语言(functional progarm language)一类程序设计语言,是一种非冯·诺伊曼式的程序设计语言.函数式语言主要成分是原始函数.定义函数和函数型. ...
- The c program language 1
学习c语言 Day one; ·基本框架: #include <stdio.h> int main(){printf("hehe\n") ;return 0; } ·做 ...
- 基督教会史Church History in Plain Language 读书笔记
读书感受: 近乎一口气(两天大概十几个小时)读完这本500页左右的大部头, 真的很爽. 发现历史时间长的话真的让人通透, 很感谢雪莱把宏达的历史用这样平易的语言写出来. 我个人厚古薄今, 但是此书我非 ...
- History of program(程序简史)
1957年 约翰·巴克斯(John Backus)创建全世界第一套高阶语言FORTRAN,这是程序员真正意义上使用的第一种语言. 1959年 葛丽丝·穆雷·霍普(Grace Hopper)发明了第一个 ...
- 当前的程序自动修复(automated program repair)工具介绍
文章目录 前言 基本概念 参考文献 2008 co-evolutionary approach 2009 Genprog 2010 MutRepair(基于变异操作的修复) 2011 JAFF 201 ...
- .NET Framework、C#语言、IDE、CLR 版本历史及其差异(最新)
1.版本整合: 2..NET Framework 版本差异 版本 发行的功能及其特点 1.0 First Version of CLR and Base Class Library(CLR的第一个版本 ...
最新文章
- OpenKruise v0.8.0 版本发布:K8s 社区首个规模化镜像预热能力
- Spring Bean init-method 和 destroy-method实例
- Redis Hash 类型操作及常用命令
- 安装mysql-connector-python-8.0.11-py3.6遇到问题
- 反射 数据类型_这是一份超全面详细的Java反射机制学习指南
- linux之Fedora 20 开启telnet服务
- 文件系统 83 linux,Linux文件系统
- 发票勾选平台:验证口令失败--加密模块未打开(0x23) (错误代码:35)
- MyBatis 是一款优秀的持久层框架
- 人工智能产生式系统实验—动物识别系统(txt文件导入数据库)python代码实现以及关系图
- 树莓派摄像头——图像 视频采集
- roadrunner中文文档(四)app服务器
- npm install报错10054,Error while executing
- 数据仓库指标体系搭建实战
- 推荐几款电脑测试软件
- BZOJ1665 Usaco2006 Open The Climbing Wall
- 吉林大学珠海学院计算机录取分数线,吉林大学珠海学院录取分数线2021是多少分(附历年录取分数线)...
- layui图标大全,精心整理
- CSS第三级选择器 Selectors Level 3 文档翻译
- 【java】猜字游戏
热门文章
- iphone11返回上一级手势怎么设置_苹果iphone12怎么关闭程序appp 怎么返回上一步
- iphone同步助手_iPhone怎么批量删除联系人?
- 不会还有人不会配置LLDP链路层发现协议吧?
- Serverless Kubernetes 落地实践
- OpenKruise v0.8.0 版本发布:K8s 社区首个规模化镜像预热能力
- Serverless 风起云涌,为什么阿里,微软,AWS 却开始折腾 OAM?
- 用python录入成绩储存程序_用Python创建成绩计算器的程序
- c语言线性表顺序存储实验小结,数据结构学习笔记-线性表顺序存储(C语言实现)...
- php实现工厂模式,PHP基于工厂模式实现的计算器实例
- 如何让两个输入框保持长度一直_投篮如何保持直线,为什么有些职业球员手臂弯曲投篮一直直...