编程语言
分为机器、汇编、中级、高级语言等级逐层升高
中级语言:C(面向过程代表)
高级语言有:C++(面向对象的代表)、lisp(函数式代表)、js(多范式代表)
-
C++
- 多态
- 继承
- 权限控制
- 虚函数
-
lisp
- 与机器无关
- 代码即是数据
- 闭包
-
JavaScript
- 过程式
- 面向对象
- 函数式
- 响应式
编程范式分为:命令式和声明式
声明式分为:函数式和响应式
命令式分为:面向对象和面向过程
面向过程
面向过程编程的特点
自顶向下和结构化编程 数据结构+算法=程序
- 是否允许副作用
- 操作的执行顺序
- 代码管理
- 状态管理
- 语法和词法
面向过程编程的缺点:
- 数据与算法关联性弱
- 程序不利于修改和扩充
- 不利于代码的重用
数据修改完全被隐藏,补充代码繁琐
面向对象
面向对象的五大原则
- 单一职责
类的功能单一
- 开放封闭
扩展方面是开放的,更改方面是封闭的
- 里式替换
子类可以替换父类,出现在父类的任何地方
- 依赖倒置
具体依赖抽象,上层依赖下层。要使用其他的类,就给这个类定义一个接口
- 接口分离
依赖要通过接口进行处理,不能依赖于具体类的实现
面向对象
-
继承
对无需重写的情况下进行功能扩充
-
多态
一个类的函数在不同的情况下有不同的表现形式,可以进行接口共享,达到函数复用
-
依赖注入
去除代码的耦合性
函数式编程特性
- 一等函数
即每个类中最好只有一个功能
- 纯函数:可缓存、可移植、可测试、可推理、可并行
封闭性
- 库里化
即替换父类并可以出现在父类出现的任何位置
- 组合
- functor(容器),monad(嵌套容器),applicative(直接对两个容器进行操作)