- 1、本文档共41页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机程序设计语言发展与比较
郭东伟
吉林大学
2010年3月18日
1
目录
程序设计语言的发展史
不同类型的程序设计语言
当前流行语言分析
国际上
国内
语言间的对比
C++ vs Java
计算机语言
用于人与计算机之间交互的语言。是人与计算机之间传递信息的媒介。
程序设计语言
低级语言
高级语言
专用语言
命令语言
作业控制语言
SQL
描述语言
HTML、XML
2
3
编程语言分类
低级语言-汇编语言
函数式程序设计语言
逻辑程序设计语言
通用程序设计语言
面向过程的程序设计语言
面向对象的程序设计语言
4
计算机编程语言谱系图
5
古典时代
FORTRAN
第一个高级语言,主要用于科学计算
ALGOL58/ALGOL60
严谨的现代语言的鼻祖之一
在20年间,成为出版刊物中的唯一语言
主要贡献:BNF
没有得到广泛实际应用
COBOL
商务记录处理
6
中世纪-1:过程化语言逐渐成熟
BASIC(1963)
第一个结合分时操作,简单易学的语言
PL/1
IBM为主设计的一个通用语言
结合ALGOL,FORTRAN,COBOL既一些其他新特性的通用语言
第一次提出:并发机制、异常处理、过程化递归、指针
过于复杂,部分成功
Ada
历史上最大规模的语言设计(美国军方)
7
中世纪-2: ALGOL的后继
Pascal
成功的教学语言
Delphi
C语言
与unix共同成长
简单、高效、相信程序员
目前系统级程序设计首选语言
8
工业时代的开始
SIMULA67
数据抽象的开始,第一次提出class
Smalltalk
真正的面向对象程序设计语言(数据抽象、基础和动态绑定)
图形化的交互语言(系统)
特点
万物皆对象,包括控制流
使用消息在对象间通信
9
工业时代
C++
继承了C语言的灵活特征
仍然强调效率
从Eiffel到D语言
Java
从嵌入式编程过渡到web应用
更加严谨的面向对象机制
C#
与微软的dot net紧密结合
10
后工业时代
脚本语言
unix系统脚本语言
Perl、Python、Ruby、Lua
动态类型语言
WEB服务器开发语言
JSP
PHP
ASP
WEB页面端开发语言
Javascript
几种现代流行语言谱系
11
C语言
C++
Java
C#
VB
Asp
JSP
PHP
Python
Perl
Ruby
Pascal
Delphi
Objective-C
JavaScript
Asp.NET
Basic
12
函数式程序设计语言
Lisp
Logo、Scheme、Common Lisp
Lisp特点
万物皆函数
基本数据结构:表
基本控制流程:递归
解释语言
主要用于人工智能,也可用于各种其他用途
13
逻辑程序设计语言
Prolog
1970’s
在1980’s日本人工智能计划时得到关注
特点
基于谓词演算,给出事实和规则
实现定理证明
只需要说明问题,无需指定流程
SQL在一定程度也有这种特点
过程式语言的基本特征
变量、作用域和生存期
数据类型(记录和指针)
表达式与赋值语句
控制流(Goto is harmful)
子程序与递归
异常处理
14
15
解释性语言 vs. 编译性语言
执行流程
性能
目前计算机硬件的发展使得解释程序的性能代价在很多场合可以忽略
跨平台性:解释程序与虚拟机
灵活性
自解释
运行时修改、创建程序
自执行
目前解释性语言的应用比例逐渐提高
静态类型语言 vs. 动态类型语言
变量的数据类型是在运行前静态确定的,还是运行时动态确定的,称之为静态类型语言(Statically Typed Languages)和动态类型语言(Dynamically Typed Languages)
动态类型语言具有更大的灵活性,很适于写出通用程序。而静态类型语言很难做到这一点(如C语言中void *和C++中的模板)。
动态类型的缺点在于发现错误的能力较差、运行代价高
包括面向对象中的多态类的判定。
16
动态语言
一类在运行时可以改变其结构的语言:例如可以动态执行生成的代码,产生新的函数、对象定义、已有的函数可以被删除或是其他结构上的变化等。
ECMAScript(JavaScript)是一个动态语言的代表,除此之外如PHP、Ruby、Python等也都属于动态语言。
动态语言是一种可“自创造”的语言,典型的都有eval这样的语法要素。
17
关于类型的几个概念
动态语言大部分是动态类型语言
动态语言和大部分动态类型语言都是解释执行的,但解释语言不一定是动态语言(Basic),也不一定是动态类型语言(Java)。
静态类型语言可以是“强类型的”或是“弱类型的”
可以在兼容类型(包括类)之间进行隐含的或显式的类型转换,部分语言可以进行强制类型转换。
18
1
文档评论(0)