编程范式是程序员看待程序应该具有的观点,代表了程序设计者认为程序应该如何被构建和执行的看法。
编程范式一般包括三个方面:以OOP为例:
-
学科的逻辑体系---规则范式。
类/对象、继承、动态绑定、方法改写、对象替换等等机制
-
心理认知因素---心理范式。
"计算就是模拟",通过拟人化,按照自然的方式模拟自然
-
自然观/世界观---观念范式。
强调程序的组织技术,视程序为松散耦合的对象/类的组合,以继承机制将类组织成一个层次结构,把程序视为相互服务的对象之间的对话
1、常见的编程范式
1.1、Imperative—命令式||过程式
主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么。
- 脚本式:把其他语言开发的独立程序作为作为部件"粘到一起",如PHP。
- 面向对象:将计算建立在独立的对象的相互作用之上,每个对象有其自身的内部状态,以及管理自身状态的可执行子程序。如Java。
1.2、Declarative—说明式||声明式
主要思想是告诉计算机应该做什么,但不指定具体要怎么做。
- 函数式:程序被看作是一种从输入到输出的函数。在函数式语言的程序设计中可以没有命令式语言所必需的那种变量,可以没有赋值语句,也可以没有循环。
- 数据流:将计算看成在一些基本的功能节点之间流动的信息流。结点由输入单词的到达触发,能够并发操作。
- 逻辑式:设法根据一集逻辑规则找出满足特定关系的值。
编程范式是编程语言的一种分类方式,它并不针对某种编程语言。就编程语言而言,一种语言可以适用多种编程范式。
例如从一个集合中找出奇数。
List<int> collection = new List<int> { 1, 2, 3, 4, 5 };
-
命令式编程
List<int> results = new List<int>(); foreach(var num in collection) { if (num % 2 != 0) results.Add(num); }
-
声明式编程
var results = collection.Where( num => num % 2 != 0);
原文链接:
2、命令式编程
编程思想方式源于计算机指令的顺序排列。
- 命令式编程适合解决线性的算法问题,强调自顶向下,精益求精的设计方式。类似我们的工作和生活方式,我们日常活动都是按部就班的顺序进行的。
- 命令式编程趋向于开发运行较快且对资源利用率较高的程序。
程序流程图是命令式编程进行程序编写的有效辅助手段。
命令式编程对实际事物处理可以拆分为以下两种模式:
- 流程驱动:一般就是主动轮询,在干活中还要分心,主动去找活干,这样有空余的时间也完全浪费掉了
- 事件驱动:比如公司有一个oa系统 你干完活的时候只需要看下oa系统有没分配给你活,没有可以干自己的事,不用担心还有其他事没干完
3、声明式编程
只关注做什么而不是怎么做
3.1、函数式编程
函数式编程关心类型(代数结构)之间的关系,命令式编程关心解决问题的步骤,函数式编程更加强调程序执行的结果而非执行过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程。
函数式编程中的lambda可以看成是两个类型之间的关系,一个输入类型和一个输出类型。
为啥Java的函数式编程(包括即将要卷的响应式编程)可读性差捏,因为我们平时写的都是命令式编程,函数式编程属于声明式编程,已经是属于编程思维的转变了。
相关学习来源(包括但不限于):
评论区