一、程序设计语言分类
1.1 按程序设计范式分类
| 类别 |
代表语言 |
特点 |
| 命令式(过程式)语言 |
C、Fortran、Pascal |
通过一系列语句改变程序状态,关注"怎么做" |
| 面向对象语言 |
Java、C++、C#、Python |
以对象为基本单位,封装、继承、多态 |
| 函数式语言 |
Lisp、Haskell、ML |
以函数为基本单位,强调表达式的计算 |
| 逻辑式语言 |
Prolog |
以事实和规则为基础,通过逻辑推理求解 |
| 脚本语言 |
Python、JavaScript、PHP、Shell |
解释执行,语法简洁,适合快速开发 |
| 标记语言 |
HTML、XML、Markdown |
用于描述数据和文档结构,非编程语言 |
1.2 命令式语言 vs 面向对象语言
| 特性 |
面向过程 |
面向对象 |
| 关注点 |
关心的是"我该怎么做?" |
关心的是"我该让谁去做?" |
| 实现方式 |
一步步实现这个功能 |
去调用对象的操作来实现这个功能 |
| 基本单位 |
函数/过程 |
对象 |
| 数据与操作 |
分离 |
封装在一起 |
二、常见程序设计语言特点
2.1 C语言
- 类型:命令式(过程式)语言
- 特点:
- 高效、灵活,接近底层硬件
- 支持指针操作,可直接访问内存
- 广泛应用于系统编程、嵌入式开发
- 不支持面向对象特性(C++支持)
- 适用场景:操作系统、嵌入式系统、驱动程序开发
2.2 C++
- 类型:多范式语言(支持过程式、面向对象、泛型)
- 特点:
- 在C语言基础上增加了面向对象特性
- 支持类、继承、多态、封装
- 支持模板(泛型编程)
- 性能高,适合大型系统开发
- 适用场景:游戏开发、大型软件系统、高性能计算
2.3 Java
- 类型:面向对象语言
- 特点:
- “一次编写,到处运行”(跨平台)
- 自动内存管理(垃圾回收)
- 纯面向对象,所有代码必须在类中
- 强类型语言,编译时类型检查严格
- 适用场景:企业级应用、Android开发、Web后端
2.4 Python
- 类型:多范式语言(支持面向对象、函数式、过程式)
- 特点:
- 语法简洁,可读性强
- 解释型语言,开发效率高
- 丰富的标准库和第三方库
- 动态类型,运行时类型检查
- 适用场景:数据分析、人工智能、Web开发、自动化脚本
2.5 Fortran
- 类型:命令式语言
- 特点:
- 最早的程序设计语言之一
- 特别适合科学计算和数值分析
- 数组操作强大
- 适用场景:科学计算、工程计算、数值模拟
2.6 Lisp
- 类型:函数式语言
- 特点:
- 以列表为基本数据结构
- 支持递归和函数作为一等公民
- 代码即数据(宏系统)
- 适用场景:人工智能、符号计算、学术研究
2.7 Prolog
- 类型:逻辑式语言
- 特点:
- 以事实和规则为基础
- 通过逻辑推理和模式匹配求解问题
- 声明式编程,描述"是什么"而非"怎么做"
- 适用场景:人工智能、自然语言处理、专家系统
三、程序设计语言特性对比
3.1 编译型 vs 解释型
| 特性 |
编译型语言 |
解释型语言 |
| 代表语言 |
C、C++、Java |
Python、JavaScript、PHP |
| 执行方式 |
先编译后执行 |
边解释边执行 |
| 执行效率 |
高 |
相对较低 |
| 开发效率 |
相对较低 |
高 |
| 跨平台性 |
需重新编译 |
通常较好 |
| 调试难度 |
较难 |
较易 |
3.2 静态类型 vs 动态类型
| 特性 |
静态类型语言 |
动态类型语言 |
| 代表语言 |
C、C++、Java |
Python、JavaScript、PHP |
| 类型检查时机 |
编译时 |
运行时 |
| 类型声明 |
需要显式声明 |
通常不需要 |
| 错误发现 |
编译时发现 |
运行时发现 |
| 灵活性 |
较低 |
较高 |
3.3 强类型 vs 弱类型
| 特性 |
强类型语言 |
弱类型语言 |
| 代表语言 |
Java、Python、C# |
C、C++、JavaScript、PHP |
| 类型转换 |
不允许隐式类型转换 |
允许隐式类型转换 |
| 类型安全 |
高 |
相对较低 |
四、面向对象基本概念
4.1 面向对象的四个基本特征
面向对象(OO)= 对象(Object)+ 分类(Classification)+ 继承(Inheritance)+ 通过消息的通信(Communication with Messages)
4.2 核心概念
| 概念 |
说明 |
| 类(Class) |
对象的模板,定义了对象的属性和方法 |
| 对象(Object) |
类的实例,具有状态和行为 |
| 封装(Encapsulation) |
将数据和操作数据的方法绑定在一起,隐藏内部实现细节 |
| 继承(Inheritance) |
子类继承父类的属性和方法,实现代码复用 |
| 多态(Polymorphism) |
同一操作作用于不同对象产生不同的行为 |
| 消息(Message) |
对象之间通信的方式,请求对象执行某个操作 |
4.3 方法重载
- 方法同名但是方法参数个数不同,或方法参数类型不同,或方法参数类型顺序不同,都是方法重载
4.4 绑定
- 静态绑定:编译时确定调用的方法
- 动态绑定:运行时确定调用的方法
五、关键考点速记
- 程序设计语言分类:命令式、面向对象、函数式、逻辑式、脚本语言、标记语言
- C语言:过程式,高效,接近底层,支持指针
- C++:多范式,支持面向对象和泛型
- Java:纯面向对象,跨平台,自动垃圾回收
- Python:多范式,语法简洁,动态类型
- Fortran:科学计算专用
- Lisp:函数式,列表处理,AI领域
- Prolog:逻辑式,事实和规则推理
- 编译型 vs 解释型:编译型执行效率高,解释型开发效率高
- 静态类型 vs 动态类型:静态类型编译时检查,动态类型运行时检查
- 面向对象四要素:对象、分类、继承、消息通信
- 面向对象三大特性:封装、继承、多态
评论