编程语言的分类
编程语言的分类
标记语言
标记语言,是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码。不用于向计算机发出指令,常用于格式化和链接。
标记语言不算是编程语言!
语言处理器
-
编译器
- 编译器将源语言编写的程序,翻译成一个等价的、用另一种目标语言编写的程序。
- 编译器生成的目标程序用来处理输入并产生输出。
- 优点:将输入映射成为输出的过程更快。
-
解释器
- 解释器直接利用用户提供的输入执行源程序中指定的操作。
- 逐个语句地执行源程序。
- 优点:错误诊断效果好
-
特别的:Java
- Java语言处理器结合了编译和解释过程。
- Java源程序首先被编译成字节码的中间表现形式,然后由一个虚拟机对字节码和输入加以解释执行。
- 优点:在一台机器上编译得到的字节码可以在另一台机器上解释执行。即:一次编译,到处执行。
编程语言的分类
相关图书
- Programming Languages: Application and Interpretation
- Essentials of Programming Languages(EOPL)
- Structure and Interpretation of Computer Programs(SICP)
通过语言的代类分类
- 第一代语言:机器语言
- 第二代语言:汇编语言
- 第三代语言:高级程序设计语言(Fortran、Cobol、Lisp、C、C++、C#、Java等)
- 第四代语言:为特定应用设计的语言(NOMAD、SQL、Postscript等)
- 第五代语言:基于逻辑和约束的语言(Prolog、OPS5等)
另一种分类
- 强制式语言:程序中指明如何完成一个计算任务的语言。(C、C++、C#、Java等)
所有强制式语言中都有用于表示程序状态和语句的表示方法,这些语句都可以改变程序状态。 - 声明式语言:程序中知名要进行哪些计算的语言。(ML、Haskell这样的函数式语言和Prolog这样的约束逻辑语言)
通过对数据类型的要求分类
参考链接:弱类型、强类型、动态类型、静态类型语言的区别是什么?
- 强类型语言:偏向于不容忍隐式类型转换。
- 弱类型语言:偏向于容忍隐式类型转换。
静态和动态策略分类
- 静态策略(static policy):支持编译器静态决定某个问题,或者说这个问题可以在编译时刻(compile time)决定。
- 动态策略(dynamic policy):只允许在运行程序的时候做出决定的策略,或者说这个问题需要在运行时刻(run time)决定。
另一种分类
- 低级语言:机器语言、汇编语言和符号语言。
- 高级语言:高级语言源程序可以用解释、编译两种方式执行。
- 专用语言
- 脚本语言
其它
- 冯诺依曼语言:以冯诺依曼计算机体系结构为计算模型的程序设计语言。(Fortran、C)
- 面向对象语言:支持面向对象编程的语言。(早期的有Simula67和Smalltalk,现在常用的有C++、C#、Java、Ruby等)
- 脚本语言:具有高层次运算符的解释性语言。(Awk、Javascript、Perl、PHP、Python、Ruby、Tcl等)
它通常用于将多个计算过程粘合在一起,这些计算过程被称为脚本。
优点:通常比用其他语言写的等价程序短很多。