编程范式 | 青训营笔记

83 阅读2分钟

课程背景

  1. 前端的主要编程语言为JavaScript
  2. Javascript作为一种融合了多种编程范式的语言,灵活性非常高
  3. 前端开发人员需要根据场景在不同编程范式间自如切换
  4. 进一步需要创造领域特定语言抽象业务问题

编程语言

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

1.png

  • C:“中级语言”过程式语言代表
  • C++:面向对象语言代表
  • Lisp:函数式语言代表
  • Javascript:基于原型和头等函数的多范式语言

2.png

编程范式

命令式

  • 面向过程
  • 面向对象

声明式

  • 函数式
  • 响应式

过程式编程 过程式编程(Procedural programming)的核心在于模块化,在实现过程中使用了状态,依赖了外部变量,导致很容易影响附近的代码,可读性较低,后期的维护成本也较高。

  • 自顶向下

3.png

  • 结构化编程
    • 顺序结构
    • 选择结构
    • 循环结构

面向对象编程 面向对象编程(Object-oriented programming)的核心在于抽象,提供清晰的对象边界。结合封装、集成、多态特性,降低了代码的耦合度,提升了系统的可维护性。C++ 和 之后的 Java 成为主流。

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

五大原则

  • 单一职责原则
  • 开放封闭原则
  • 里氏替换原则
  • 依赖倒置原则
  • 接口分离原则

函数式编程 函数式编程(Functional Programming)的核心在于“避免副作用”,不改变也不依赖当前函数外的数据。结合不可变数据、函数是第一等公民等特性,使函数带有自描述性,可读性较高。 4.png

领域特定语言

5.png lexer

SQL Token分类

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

Parser语法规则

上下文无关语法规则

  • 推导式:表示非终结符到(非终结符或终结符)的关系
  • 终结符:构成句子的实际内容
  • 非终结符:符号或变量的有限集合
  • LL:从左到右检查,从左到右构建排列树
  • LR:从左到右检查,从右到左构建排列树