0%

编程范式理解

2020年3月17日 下午11:50

基础知识:

函数式编程:本质意义来源于数学函数f(x)

* 在实现方式上,有函数套函数、函数返回函数、函数里定义函数……把人搞得很糊涂
* C++的是通过模板来实现函数式编程,起点比较高
* Python是目前使用函数式变成最简单的方式
* eg:

语言不只是工具。语言和编程范式极大的影响了我们的思维

C++:一个人就能实现三种范式

  • 过程式、函数式、面向对象式
  • 对于C++而言,模板是泛型编程、函数式编程的实现方式
  • 函数式编程是泛型编程的进一步抽象,但他们的实现方式都是模板

面向对象 与 实例编程 区别联系

  • 面向对象就像大公司病一样,干个啥都是重量级的,不鼓励创新
  • 实例编程,理解成函数对象编程,结合了函数式的控制特点,也结合了面向对象的数据、组合关联的能力(把接口这个能力去掉了),就像是大公司下的独立子公司,鼓励创新

从设计、选型的角度:

编程范式是各种解决现实问题进行逻辑设计工具的,最重要的是学会区分、选择

我们需要分离什么:

  • 通俗:
    • 数据:面向对象
    • 控制(控制程序):函数式
    • 业务(逻辑):
    • 关联:面向对象类 函数式中的装饰器
  • 精炼:
    • 有效地分离 Logic、Control 和 Data 是写出好程序的关键所在!

如何实现分离的?

  • 泛型:是控制与数据分离的手段
  • 函数式:是控制与业务分离的手段
    Ps:先控制与数据分离,后控制与业务分离

其实唯一目标很清晰:独立出控制

  • 控制一个程序流转的方式,即程序执行的方式,并行还是串行,同步还是异步,以及调度不同执行路径或模块,数据之间的存储关系,这些和业务逻辑没有关系。
  • 控制,也许换成调度更好理解一些

如何使用独立出来的控制来完成我们需要功能:

  • 后期添加logic + data
    • Logic 部分才是真正有意义的(What),也就是你要实现的功能呢
    • Control 部分只是影响 Logic 部分的效率(How)

一共就四种范式而已: