前端第四天 | 青训营笔记

73 阅读2分钟

目的:

  • 了解不同编程范式的起源和适用场景
  • 掌握javaScript在不同的编程范式的使用
  • 掌握创建领域特定语言的相关工具和模式

编程语言

就是将人的语言转化成计算机能解析的语言

机器语言

直接使用数字

image.png

汇编语言

加入了字母,方便输入,不同字母在不同机器架构下面可以转化为不同的数字,具备一定可移植性

image.png

高级语言

更贴近人的思维,编译器把高级语言转化为汇编语言,再转化为机器语言,这样被计算机识别

  1. 面向对象代表:C/C++
  2. 函数式代表:Lisp
  3. 多范式代表:javaScript

编程范式

image.png

过程式编程

  • 自顶向下
  • 结构化编程:顺序结构、选择结构、循环结构

缺点

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

面向对象编程

  • 封装:数据和算法都放到一个类里面,调用的是类的一个实例化对象
  • 继承:子承父业,子有子业
  • 多态:不同的结构可以进行接口共享,进而达到函数复用
  • 依赖注入:降低耦合性

五大原则

  • 单一职责原则:一个类的功能要单一,类似于马赛克战这种思想
  • 开放封闭原则:在可扩展性方面是开放的(感觉是对内),在可更改性方面是封闭的(感觉是对外)
  • 里式替换原则:子类可以替换父类起作用(子比父强大)
  • 依赖倒置原则:B依赖于A,B不应该直接调用A,而应该有一个接口,让A来实现
  • 接口分离原则:依赖通过接口去分,而不是通过类的实例化来实现

缺点

image.png 你可能只需要类的一部分功能,但不可避免的把整个类引用过来

函数式编程

  • 函数是“第一等公民”
  • 纯函数/无副作用
  • 高阶函数/闭包

优势

  • 可缓存
  • 可移植
  • 可测试
  • 可推理
  • 可并行

响应式编程

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

领域特定语言DSL

  • HTML
  • SQL

语言运行

词法解析器——语法解析器——遍历分析——编译

词法解析器

主要是把语言转化成有意义的Token

  • 注释
  • 关键字
  • 操作符
  • 空格
  • 字符串
  • 变量

语法分析

指定一些上下文无关的语法规则

  • 推导式:表示非终结符(符号或变量的有限集合)到非终结符/终结符(Token)的关系

遍历

先左后右