编程范式 | 青训营笔记

47 阅读2分钟

编程范式

前端的主要编程语言是JavaScript

编程语言

程序员 —— 指令 —— 机器;指令即是编程语言

高级语言 —— 汇编语言 —— 机器语言

高级语言: C: 中极语言 过程式语言代表(地址、函数调用)

C++ 面向对象语言代表 (Cwith Classes, 继承,

Lisp: 函数式语言代表 与机器无关;列表:代码即数据

JavaScript: 基于原型和头等函数的多范式语言(过程式、面向对象、函数式)

编程范式、

命令式(如何操作机器改变状态):面向过程、面向对象

声明式:函数式、响应式

过程式:自顶向下、结构式编程(顺序结构、选择结构、循环结构 代替go to)

image.png

面向过程的问题

  • 数据与算法关联弱
  • 不利于修改(改一个就要改一堆)和扩充
  • 不利于代码重用(难以抽取函数)

面向对象:封装、继承、多态、依赖注入

  • 关联数据与算法(封装)
  • 无需重写的情况下进行功能扩充(继承)
  • 不同的结构可以进行接口共享,进而达到函数复用(多态) -去除处代码耦合(依赖注入)

面向对象的五大原则

  • 单一职责原则
  • 开放封闭原则
  • 里式替换原则
  • 依赖倒置原则
  • 接口分离原则(依赖需要用接口来实现)

面向对象的问题

  • 总是附带着所有它需要的隐含环境,给了一个一直写烂代码的方式

面向函数:ramdajs

  • 函数是第一等公民
  • 纯函数:可缓存、可移植、可测试、可推理、可并行
  • Currying
  • Composition image.png
  • factor(容器类型:Array(Iterable).map, Promise.then)
  • Monad(可以去除嵌套容器的容器类型)
  • Applicative

响应式编程

  • 异步/离散的函数式编程
    • 数据流
    • 操作符

Observable:

  • 观察者模式
  • 迭代器模式
  • Promise/EventTarget 超集*

领域特定语言由通用语言来实现

语言运行:

image.png

词法规则、语法规则、语法树、遍历操作进行

image.png