编程语言与编程范式
大约 2 分钟
编程语言与编程范式
以下都是收集的概念,用来防止自己遗忘概念
声明式 vs 命令式
声明式编程 (Declarative)
特点:
- 关注"做什么"(What to do)
- 描述目标而非实现过程
- 通常更简洁、抽象
- 隐藏了实现细节
具体的例子:SQL,描述了想要什么数据,但是没有提供怎么获得这些数据的方法。
命令式编程 (Imperative)
特点:
- 关注"如何做"(How to do)
- 详细描述实现目标的步骤
- 使用语句改变程序状态
- 包含明确的控制流(循环、条件等)
具体的例子:C,一步一步说明如何获得数据存储到哪里
面向对象 vs 面向过程
面向过程编程 (Procedural Programming)
核心思想:
- 以"过程"(函数/子程序)为中心组织代码
- 关注解决问题的步骤和算法
- 数据与操作数据的函数分离
特点:
- 自顶向下逐步分解问题
- 程序由一系列函数调用组成
- 数据通常作为参数传递给函数
- 强调算法和逻辑流程
面向对象编程 (Object-Oriented Programming, OOP)
核心思想:
- 以"对象"为中心组织代码
- 对象包含数据(属性)和操作数据的方法
- 关注对象之间的交互
实现 OOP 的流派:
- Java: 类继承为核心点来复用 1. 封装:隐藏内部实现,暴露接口 2. 继承:子类继承父类特性 3. 多态:同一接口不同实现 4. 抽象:提取共性形成抽象类/接口
- JavaScript:基于原型的面向对象
- 通过原型链来复用操作
- Rust:基于trait的对象系统,通过 impl trait for struct组合来复用接口
- Erlang:通过进程和消息传递实现对象,基于行为模式
函数式
function first class “函数”作为一等公民
特点:
- 强调函数的使用,函数也是元素,可以进行传递、返回或赋值给变量。
- 函数类型,高阶函数
- 避免状态变化和副作用,通常使用不可变数据结构。
函数式一般也是声明式
响应式
响应式编程是一种面向数据流和变化传播的编程范式,关注数据变化和事件流,自动传播变化。
核心概念:
- 数据流:将一切视为随时间变化的数据流
- 观察者模式:数据变化时自动通知依赖项
- 函数式组合:使用高阶函数组合和转换流
特点:
- 声明式处理异步数据流
- 自动依赖跟踪
- 高效的变化检测和传播
- 常用于处理用户交互、事件、异步操作等