编程范型:修订间差异
外观
删除的内容 添加的内容
小 bot: 清理跨語言連結管道编程成為內部連結:編輯摘要的red link經繁簡轉換後存在 |
小 →例子 |
||
第29行: | 第29行: | ||
* [[纯量编程]]对比[[阵列编程]] |
* [[纯量编程]]对比[[阵列编程]] |
||
*: 後者的例子包括 [[R语言]] 、 [[MATLAB]] 及 [[Perl]] Data Language 等 |
*: 後者的例子包括 [[R语言]] 、 [[MATLAB]] 及 [[Perl]] Data Language 等 |
||
* [[基于类编程]]对比[[原型程 |
* [[基于类编程]]对比[[基于原型编程]]([[面向对象编程]]的流派) |
||
* {{link-en|規則式編程|Rule-based programming}}及以其為基礎的{{link-en|約束邏輯編程|Constraint programming}}([[逻辑编程]]的流派) |
* {{link-en|規則式編程|Rule-based programming}}及以其為基礎的{{link-en|約束邏輯編程|Constraint programming}}([[逻辑编程]]的流派) |
||
*: 例子: [[Prolog]] |
*: 例子: [[Prolog]] |
2020年10月8日 (四) 13:50的版本
此條目需要精通或熟悉相关主题的编者参与及协助编辑。 |
此條目需要补充更多来源。 (2017年12月31日) |
|
编程范型、编程范式或程式設計法(英語:Programming paradigm),(範即模範、典範之意,範式即模式、方法),是一类典型的编程风格,是指从事软件工程的一类典型的风格(可以对照方法学)。如:函數式編程、程序式編程、面向对象编程、指令式编程等等為不同的编程范型。
编程范型提供了(同时决定了)程序员对程序执行的看法。例如,在面向对象编程中,程序员认为程序是一系列相互作用的对象,而在函数式编程中一个程序会被看作是一个无状态的函数计算的序列。
正如软件工程中不同的群体会提倡不同的「方法学」一样,不同的编程语言也会提倡不同的「编程范型」。一些语言是专门为某个特定的范型设计的(如Smalltalk和Java支持面向对象编程,而Haskell和Scheme则支持函数式编程),同时还有另一些语言支持多种范型(如Ruby、Common Lisp、Python、Rust和Oz)。
很多编程范型已经被熟知他们禁止使用哪些技术,同时允许使用哪些。例如,纯粹的函数式编程不允许有副作用[1];结构化编程不允许使用goto。可能是因为这个原因,新的范型常常被那些习惯于较早的风格的人认为是教条主义或过分严格。然而,这样避免某些技术反而更加证明了关于程序正确性——或仅仅是理解它的行为——的法则,而不用限制程序语言的一般性。
编程范型和编程语言之间的关系可能十分复杂,由于一个编程语言可以支持多种范型。例如,C++设计时,支持过程化编程、面向对象编程以及泛型编程。然而,设计师和程序员们要考虑如何使用这些范型元素来构建一个程序。一个人可以用C++写出一个完全过程化的程序,另一个人也可以用C++写出一个纯粹的面向对象程序,甚至还有人可以写出杂揉了两种范型的程序。
例子
- 结构化编程對比非结构化编程
- 大部分高階程序語言都期望使用者進行結構化編程
- 命令式编程對比宣告式编程
- 消息传递编程對比命令式编程
- 步骤式编程對比函数式编程
- 後者的著名例子是Haskell
- Value-level programming對比Function-level programming
- 流程驱动编程對比事件驱动编程
- 纯量编程对比阵列编程
- 基于类编程对比基于原型编程(面向对象编程的流派)
- 規則式編程及以其為基礎的約束邏輯編程(逻辑编程的流派)
- 例子: Prolog
- 基于组件编程
- 例子:OLE
- 面向方面编程
- 例子:AspectJ
- 符号式编程
- 面向表格编程
- 管道编程
- 例子:Unix命令中的管道
- Post-object programming
- 面向主题编程
- 自省编程(或称反射编程)
參考文献
- ^ F# 程式設計入門 (1):在表示式(expression)內不可以造成值的改變。
参见
|
|
|
|