[ 编程范式 | 青训营笔记 ]

55 阅读2分钟

编程语言

分为机器、汇编、中级、高级语言等级逐层升高

中级语言:C(面向过程代表)

高级语言有:C++(面向对象的代表)、lisp(函数式代表)、js(多范式代表)

  • C++

    • 多态
    • 继承
    • 权限控制
    • 虚函数
  • lisp

    • 与机器无关
    • 代码即是数据
    • 闭包
  • JavaScript

    • 过程式
    • 面向对象
    • 函数式
    • 响应式

编程范式分为:命令式和声明式

声明式分为:函数式和响应式

命令式分为:面向对象和面向过程

面向过程

面向过程编程的特点

自顶向下和结构化编程 数据结构+算法=程序

  • 是否允许副作用
  • 操作的执行顺序
  • 代码管理
  • 状态管理
  • 语法和词法

面向过程编程的缺点:

  • 数据与算法关联性弱
  • 程序不利于修改和扩充
  • 不利于代码的重用

数据修改完全被隐藏,补充代码繁琐

面向对象

面向对象的五大原则

  • 单一职责

类的功能单一

  • 开放封闭

扩展方面是开放的,更改方面是封闭的

  • 里式替换

子类可以替换父类,出现在父类的任何地方

  • 依赖倒置

具体依赖抽象,上层依赖下层。要使用其他的类,就给这个类定义一个接口

  • 接口分离

依赖要通过接口进行处理,不能依赖于具体类的实现

面向对象

  • 继承

    对无需重写的情况下进行功能扩充

  • 多态

    一个类的函数在不同的情况下有不同的表现形式,可以进行接口共享,达到函数复用

  • 依赖注入

    去除代码的耦合性

函数式编程特性

  • 一等函数

即每个类中最好只有一个功能

  • 纯函数:可缓存、可移植、可测试、可推理、可并行

封闭性

  • 库里化

即替换父类并可以出现在父类出现的任何位置

  • 组合
  • functor(容器),monad(嵌套容器),applicative(直接对两个容器进行操作)