编程范式 | 青训营笔记

88 阅读2分钟

编程范式

课程收益

  1. 了解不同编程范式的起源和适用场景
  2. 掌握 JavaScript 在不同的编程范式特别是函数式编程范式的使用
  3. 掌握创建领域特定语言的相关工具和模式

编程语言

  1. 机器语言
  2. 汇编语言
  3. 中级语言(面向过程C语言)

C: "中级语言"面向过程式语言代表

  • 可对位,字节地址,直接操作
  • 代码和数据分离倡导结构化编程
  • 功能齐全:数据类型和控制逻辑多样化
  • 可移植能力强
  1. 高级语言(面向对象C++,函数式代表lisp,多范式代表javascript)

C++ : 面向对象语言代表

  • C with Classes
  • 继承
  • 权限控制
  • 虚函数
  • 多态

Lisp: 函数式语言代表

  • 与机器无关
  • 列表: 代码即数据
  • 闭包

Javascript:基于原型和头灯函数的多范式语言

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

image.png


编程范式

  1. 什么是编程范式?

    程序语言特性

    • 是否允许副作用
    • 操作的执行顺序
    • 代码组织
    • 状态管理
    • 语法和词法
  2. 常见的编程范式

    • 命令式

      • 面向过程
      • 面向对象
    • 声明式

      • 函数式
      • 响应式

过程式编程

  • 自定向下
  • 结构化编程

image.png

image.png

面向过程编程

1.  问题

    -   数据与算法关联弱
    -   不利于修改和扩充
    -   不利于代码重用

2.  封装

    -   将初始变量及函数放入类中
    -   使用式只需实例化对象,然后调用其中的方法

3.  继承

    -   无需重写的情况下进行功能扩充
    -   示例 `oldClass extends newClass`

4.  多态

    -   不同的结构可以进行接口共享,进而达到函数复用

5.  依赖注入

    -   去除代码耦合

面向对象五大原则

  1. 单一职责原则
  2. 开放封闭原则
  3. 里式替换原则
  4. 依赖倒置原则
  5. 接口分离原则

函数式编程

  • 函数是"第一等公民"
  • 纯函数/无副作用
  • 高阶函数/闭包
  • 可缓存
  • 可移植
  • 可测试
  • 可推理
  • 可并行

响应式编程

观察者模式 迭代器模式 Promise/EventTarget超集* cpmpose:合并 过滤 转化 异常处理 多播 去除嵌套的Observabie

特定领域语言

lexer Parse tools visitor

image.png

image.png