编程语言——多角度分类
编程语言的分类可以从多个角度进行,以下是根据常见的分类方式进行的归纳:
1. 按抽象等级分类
- 机器语言:纯粹的机器代码,由0和1组成的二进制代码,可以直接被计算机执行,运行效率最高但通用性不强。
- 汇编语言:使用简单的助记符代替二进制代码,运行效率低于机器语言,但通用性同样不强。
- 高级语言:使用人类可识别的自然语言(主要是英语)进行编程,运行效率较低但编程难度和程序可读性大幅提高。
2. 按程序设计方法分类
- 面向过程语言:以过程为中心,关注程序执行的步骤,如C语言。
- 面向对象语言:以对象作为基本程序结构单位,如Java、C++、Python等。面向对象语言有四个主要特点:识认性、类别性、多态性和继承性。
3. 按程序执行方式分类
- 编译型语言:需要将源代码转化为机器语言后才能运行,如C、C++、Pascal等。这类语言的特点是效率高,但需要使用编译器进行编译和链接。
- 解释型语言:在运行时由解释器将源代码转化为机器语言进行执行,如Python、Ruby、JavaScript等。这类语言的特点是解释器可以动态地识别代码结构和类型,但执行速度相对较慢。
- 混合型语言:先编译为中间代码,再解释执行,如Java(虽然Java通常被认为是编译型语言,但其字节码是由Java虚拟机解释执行的)。
4. 按程序运行时结构改变能力分类
- 动态语言:运行时可以改变结构,即代码可被动态改变,如Python、JavaScript等。
- 静态语言:运行时结构不可改变,如C、C++等。
5. 按变量类型明确性分类
- 强类型语言:要求变量的使用要严格符合定义的类型,如C、C++、Java等。
- 弱类型语言:变量无需事先定义,数据类型可以被忽略,如JavaScript(尽管它现在引入了更多的类型检查机制)。
6. 其他分类方式
- 函数式语言:如Scala、Haskell等,以函数为第一等公民,强调函数作为主要的程序构建块。
- 逻辑式语言:如Prolog,强调逻辑规则和推理。
- 脚本语言:通常用于自动化任务或快速开发原型,如Bash、PowerShell等。
这些分类方式并不是完全独立的,一种编程语言可能同时属于多个类别。例如,Python既是解释型语言又是面向对象语言,同时也有动态类型的特性。
过程式范式编程语言、面向对象范式编程语言、函数式范式编程语言、泛型范式编程语言、多范式编程语言等
https://blog.csdn.net/gao_zhennan/article/details/124616576
“范式”=“一种理论体系”
编程范式是程序语言背后的思想。代表了程序语言的设计者认为程序应该如何被构建和执行。常见的编程范式有:过程式、面向对象、函数式、泛型编程等。
一些编程语言是专门为某种特定范式设计的,例如,
C 语言是过程式编程语言;
Smalltalk 和 Java 是较纯粹的面向对象编程语言;
Haskell、Scheme、Clojure 是函数式编程语言。
另外一些编程语言和编程范式的关系并不一一对应,即支持多种编程范式的编程语言——“多范式编程语言”,例如,
Python、Scala、Groovy 同时支持面向对象和一定程度上的函数式编程。
Swift 即支持面向对象编程范式,也支持函数式编程范式,同时还支持泛型编程。Swift 支持多种编程范式是由它的目标决定的。Swift 创造的初衷就是提供一门实用的工业语言。不同于 Haskell 这类出自大学和研究机构的具有学术性质的编程语言。苹果推出 Swift 时就带着着明确的商业目的:Mac OS 和 iOS 系统的主要编程语言 Objective-C 已显老态,Swift 将使得苹果系统的开发者拥有一门更现代的编程语言,从而促进苹果整个生态圈的良性发展。
由于代表了语言背后的思想,编程范式很大程度上决定了语言会呈现为何种面貌。用不着深入学习,仅仅浏览代码,就能发现 Scala 和 Swift 很类似,这是因为它们支持的编程范式是类似的;Scheme 和 Swift 看起来就相差很远,这是因为它们支持的编程范式很不一样。对于理解一门编程语言而言,相对于语言的语法和编写经验,理解语言的编程范式更重要。因为,就像看一本书,琢磨作者如何用词,如何构建章节是很重要,但更重要的是理解书所要表达的思想。