BLOG

Record, summarize, and improve.

编程范式

✅ 主流编程范式汇总

范式 核心理念 特点 代表语言
1. 过程式编程Procedural 按步骤执行逻辑流程,状态改变是核心 基于函数和顺序执行,使用变量、循环和条件分支 C、Pascal、Fortran
2. 面向对象编程Object-Oriented (OOP) 封装对象和数据,关注“事物”而非过程 类/对象、封装、继承、多态 C++、Java、Python、C#
3. 函数式编程Functional 不可变状态、函数组合,无副作用 纯函数、递归、高阶函数、组合 Haskell、Scala、Lisp、OCaml
4. 声明式编程Declarative 描述做什么而非怎么做 没有显式流程控制,关注结果 SQL、HTML、Makefile、Prolog、Ansible
5. 逻辑编程Logic 基于规则和推理(约束解) 以“事实+规则”驱动逻辑求解 Prolog、Datalog
6. 元编程Metaprogramming 程序生成/操作程序本身 宏、模板、AST、反射 C++、Rust、Python、Lisp
7. 数据驱动编程Data-driven 逻辑被数据决定,非硬编码 状态机、配置文件驱动执行逻辑 TensorFlow Graph、Unity ECS
8. 事件驱动编程Event-driven 响应外部事件或消息 典型于 GUI、网络、异步场景 JavaScript、Node.js、Qt、Verilog
9. 并发/并行编程Concurrent / Parallel 任务同时运行,状态隔离或同步 多线程、异步、锁/原子操作 Rust、Go、C++、Erlang、Java
10. 反应式编程Reactive 数据变化驱动程序自动响应 数据流、订阅机制、链式反应 RxJava、React.js、Stream API、Vue
11. 面向方面编程Aspect-Oriented (AOP) 关注“横切关注点”如日志/权限 分离系统级通用逻辑(如监控) AspectJ、Spring AOP、PostSharp

🔍 对比示例:以“加法”操作为例

范式 表达方式
过程式 int c = a + b;
面向对象 c = a.add(b);
函数式 c = add(a, b)(无副作用)
声明式 sum(a, b)(不关心如何加)
逻辑式 sum(a, b, C) :- C is a + b.
元编程 generate_code('add', [a, b]) → "a + b"
数据驱动 operations: [{ op: 'add', args: [a, b] }]
事件驱动 on("click", () => sum(a, b))

🧠 总结建议(工程视角)

应用场景 推荐范式
驱动代码生成、模板编译优化 元编程
大型系统架构 面向对象 + AOP
纯业务逻辑处理、可组合性强 函数式编程
异步网络编程 事件驱动 + 并发编程
DSL/规则引擎 逻辑编程 + 元编程
硬件行为建模、EDA仿真 事件驱动(Verilog/SystemC)
配置驱动、无代码平台 数据驱动编程

如你主攻 C++/嵌入式/系统层开发,建议重点掌握:

  • 面向对象编程(OOP)
  • 元编程(模板/宏/反射)
  • 并发编程
  • 补充函数式风格以增强表达力与模块组合性

如关注 AI/ML 或数据密集型系统,推荐关注:

  • 数据驱动编程
  • 声明式/图式计算
  • 反应式流处理

如果需要,我可以进一步细化某一范式的工程应用示例或设计模式。