编程范式

编程范型、编程范式或程序设计法(英语:Programming paradigm),(范即模范、典范之意,范式即模式、方法),是一类典型的编程风格,是指从事软件工程的一类典型的风格(可以对照方法学)。

如:函数式编程、过程式编程、面向对象编程、指令式编程等等为不同的编程范型。

编程范型提供了(同时决定了)程序员对程序执行的看法。例如,在面向对象编程中,程序员认为程序是一系列相互作用的对象,而在函数式编程中一个程序会被看作是一个无状态的函数计算的序列。

正如软件工程中不同的群体会提倡不同的“方法学”一样,不同的编程语言也会提倡不同的“编程范型”。一些语言是专门为某个特定的范型设计的(如Smalltalk和Java支持面向对象编程,而Haskell和Scheme则支持函数式编程),同时还有另一些语言支持多种范型(如Ruby、Common Lisp、Python和Oz)。

很多编程范型已经被熟知他们禁止使用哪些技术,同时允许使用哪些。例如,纯粹的函数式编程不允许有副作用;结构化编程不允许使用goto。可能是因为这个原因,新的范型常常被那些习惯于较早的风格的人认为是教条主义或过分严格。然而,这样避免某些技术反而更加证明了关于程序正确性——或仅仅是理解它的行为——的法则,而不用限制程序语言的一般性。

编程范型和编程语言之间的关系可能十分复杂,由于一个编程语言可以支持多种范型。例如,C++设计时,支持过程化编程、面向对象编程以及泛型编程。然而,设计师和程序员们要考虑如何使用这些范型元素来构建一个程序。一个人可以用C++写出一个完全过程化的程序,另一个人也可以用C++写出一个纯粹的面向对象程序,甚至还有人可以写出杂揉了两种范型的程序。

我们熟悉的

很多人都比较熟悉面向过程+面向对象。

本文主要收集一下常见的范式,开拓一下眼界。

便于后期补充学习。

编程范式

指令式(对比:声明式) 过程式 结构化(对比:非结构化) 块结构 模块化 递归 面向对象 基于类 基于原型 多态性 根据关注点分离: 面向方面 面向角色 面向主题 并发面向对象 非结构化(对比:结构化) 阵列 声明式(对比:指令式) 函数式 纯函数式 数据流程 基于流程 响应式 函数式响应 逻辑 溯因逻辑 回答集编程 并发逻辑 归纳逻辑 函数式逻辑 约束 约束逻辑 并发约束逻辑 本体 元编程 宏 模板 反射式 面向属性 泛型 面向语言 领域特定 函数级(对比:值级) 无参数式 串接 并发计算 基于演员 并行计算 面向进程 自动 归纳 面向代理 基于自动机 基于堆栈 数据驱动 事件驱动 动态/脚本 文学 集合论 符号式 行动 自然语言 相对性 非确定性 可微分 概率 量子

参考资料

wiki