2020年3月17日 下午11:50
基础知识:
函数式编程:本质意义来源于数学函数f(x)
* 在实现方式上,有函数套函数、函数返回函数、函数里定义函数……把人搞得很糊涂
* C++的是通过模板来实现函数式编程,起点比较高
* Python是目前使用函数式变成最简单的方式
* eg:语言不只是工具。语言和编程范式极大的影响了我们的思维
C++:一个人就能实现三种范式
- 过程式、函数式、面向对象式
- 对于C++而言,模板是泛型编程、函数式编程的实现方式
- 函数式编程是泛型编程的进一步抽象,但他们的实现方式都是模板
面向对象 与 实例编程 区别联系
- 面向对象就像大公司病一样,干个啥都是重量级的,不鼓励创新
- 实例编程,理解成函数对象编程,结合了函数式的控制特点,也结合了面向对象的数据、组合关联的能力(把接口这个能力去掉了),就像是大公司下的独立子公司,鼓励创新

从设计、选型的角度:
编程范式是各种解决现实问题进行逻辑设计工具的,最重要的是学会区分、选择
我们需要分离什么:
- 通俗:
- 数据:面向对象
- 控制(控制程序):函数式
- 业务(逻辑):
- 关联:面向对象类 函数式中的装饰器
- 精炼:
- 有效地分离 Logic、Control 和 Data 是写出好程序的关键所在!
如何实现分离的?
- 泛型:是控制与数据分离的手段
- 函数式:是控制与业务分离的手段
Ps:先控制与数据分离,后控制与业务分离
其实唯一目标很清晰:独立出控制
- 控制一个程序流转的方式,即程序执行的方式,并行还是串行,同步还是异步,以及调度不同执行路径或模块,数据之间的存储关系,这些和业务逻辑没有关系。
- 控制,也许换成调度更好理解一些
如何使用独立出来的控制来完成我们需要功能:
- 后期添加logic + data
- Logic 部分才是真正有意义的(What),也就是你要实现的功能呢
- Control 部分只是影响 Logic 部分的效率(How)