编程范式 命令式/过程式(Imperative/Procedural)
代表语言 Fortran/Pascal/C
核心概念 命令/过程(Command/Procedure)
运行机制 命令执行
关键突破 突破单一主程序和非结构话程序的限制
实现原理 引入逻辑控制与子程序
主要目的 模拟机器思维,实现自顶向下的模块设计
常见应用 交互式、事件驱动型系统、数值计算等
编程范式 函数式/应用式(Functional/Applicative)
代表语言 Scheme/Haskell
核心概念 函数(Funcation)
运行机制 表达式计算
关键突破 突破机器思维的限制
实现原理 引入高阶函数,将函数作为数据处理
主要目的 模拟数学思维,简化代码,减少副作用
常见应用 微积分计算,数学逻辑,博弈等
编程范式 逻辑式(Logic)
代表语言 Prolog/Mercury
核心概念 断言(Predicate)
运行机制 逻辑推算
关键突破 突破逻辑与控制台粘合的限制
实现原理 利用推理引擎在已知的事实和规则的基础上进行逻辑推断
主要目的 专注逻辑分析,减少控制代码
常见应用 机器证明、专家系统、自然语言处理、语义网(semantic web)、决策分析、业务规则管理等
编程范式 对象式(Object-Oriented)
代表语言 Smalltalk/Java
核心概念 对象(Object)
运行机制 对象间信息交换
关键突破 突破数据与代码分离的限制
实现原理 引入封装、继承和多态机制
主要目的 迎合人类认知模式,提高软件的易用性和重用性
常见应用 大型复杂交互式系统等
编程范式 并发式/并行式(Concurrent/Parallel)
代表语言 Erlang/Oz
核心概念 进程/线程(Process/Thread)
运行机制 进程/线程间通信与同步
关键突破 突破串行的限制
实现原理 引入并发的线程模块及模块间的通信与同步机制
主要目的 充分利用资源、提高运行效率、提高软件的响应能力
常见应用 图形用户界面,I/O处理,多任务系统如操作系统、网络服务等,实时系统,嵌入式系统,计算密集型系统如科学计算、人工智能等
编程范式 泛型式(Generic)
代表语言 Ada/Eiffel/C++
核心概念 算法(Algorithm)
运行机制 算法实例化(多发生于编译器)
关键突破 突破静态类型语言的限制
实现原理 利用模板延迟类型指定
主要目的 提高算法的普遍性
常见应用 普适性算法如排序,搜索等,集合类容器等
编程范式 元编程(Meta-programming)
代表语言 Lisp/Ruby/JavaScript
核心概念 元程序(Metaprogram)
运行机制 动态生成代码或自动修改执行指令
关键突破 突破语言的常规语法限制
实现原理 利用代码生成或语言内建的反射(reflection)、动态等机制,将程序语言作为数据来处理
主要目的 减少手工编码,提高语言级别
常见应用 自动代码生成、定义结构化配置文件、IDE、编译器、解释器、人工智能、模型驱动架构(MDA)、领域特定语言(DSL)等
编程范式 切面式(Aspect-Oriented)
代表语言 AspectJ/AspectC++
核心概念 切面(Aspect)
运行机制 在接入点处执行建议
关键突破 突破横切关注点无法模块化的限制
实现原理 通过编织(weaving)将附加行为嵌入主体程序
主要目的 实现横切关注点分离
常见应用 日志输出、代码跟踪、性能监控、异常处理、安全检查、事务管理等
编程范式 事件驱动(Event-Driven)
代表语言 C#/VB.NET
核心概念 事件(Event)
运行机制 监听器收到事件通知后做出响应
关键突破 突破顺序、同步的流程限制
实现原理 引入控制反转和异步机制
主要目的 调用者与被调用者在代码和时间上双重解耦
常见应用 图形化用户界面、网络应用、服务器、操作系统、IoC框架、异步输入、DOM等