一、程序设计语言分类

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 绑定

  • 静态绑定:编译时确定调用的方法
  • 动态绑定:运行时确定调用的方法

五、关键考点速记

  1. 程序设计语言分类:命令式、面向对象、函数式、逻辑式、脚本语言、标记语言
  2. C语言:过程式,高效,接近底层,支持指针
  3. C++:多范式,支持面向对象和泛型
  4. Java:纯面向对象,跨平台,自动垃圾回收
  5. Python:多范式,语法简洁,动态类型
  6. Fortran:科学计算专用
  7. Lisp:函数式,列表处理,AI领域
  8. Prolog:逻辑式,事实和规则推理
  9. 编译型 vs 解释型:编译型执行效率高,解释型开发效率高
  10. 静态类型 vs 动态类型:静态类型编译时检查,动态类型运行时检查
  11. 面向对象四要素:对象、分类、继承、消息通信
  12. 面向对象三大特性:封装、继承、多态