【Day4】编程范式 | 青训营笔记

27 阅读2分钟

1、编程语言

image.png

  • 编程语言

    • 机器语言

    • 汇编语言

    • 中级语言

      • 面向过程代表---> C
        • 可对位,字节,地址直接操作
        • 代码和数据分离提倡结构化编程
        • 功能齐全:数据类型和控制逻辑多样化
        • 可移植能力强
    • 高级语言

      • 面向对象代表---> C++
        • C with Class
        • 继承
        • 权限控制
        • 虚函数
        • 多态
      • 函数式代表---> lisp
        • 与机器无关
        • 列表:代码即数据
        • 闭包
      • 多范式代表---> JavaScript
        • 基于原型和头等函数的多范式语言
          • 过程式
          • 面向对象
          • 函数式
          • 响应式

2、编程范式

  • 什么是编程范式?

    • 程序语言特性

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

    • 编程范式

      • 命令式
        • 面向过程
          • 自顶向下
            image.png
          • 结构化编程 image.png
          • JS中的面向过程
            image.png
          • 面向过程问题
            • 数据与算法关联弱
            • 不利于修改和扩充
            • 不利于代码重用
        • 面向对象
          • 封装
            • 关联数据与算法
              image.png
          • 继承
            • 无需重写的情况下进行功能扩充 image.png
          • 多态
            • 不同的结构进行接口共享,进而达到函数复用
              image.png
          • 依赖注入
            • 去除代码耦合
              image.png
              image.png
          • 五大原则
            • 单一职责原则(SRP)
            • 开放封闭原子(OCP)
            • 里式替换原则(LSP)
            • 依赖倒置原则(DIP)
            • 接口分离原则(ISP)
          • 缺点
            • 总是附带着所有它需要的隐含环境。
      • 声明式
        • 函数式
          • First Class Function
            image.png
          • Pure Function
            • 优势
              • 可缓存
              • 可移植
              • 可测试
              • 可推理
              • 可并行
                image.png
          • Currying
            image.png
          • Composition
            image.png
          • Functor
            image.png
          • Monad
            image.png
          • Applicative
            image.png
        • 响应式
          • 异步/离散的函数式编程
            • 数据流
            • 操作符
              • 过滤
              • 合并
              • 转化
              • 高阶
          • Observable
            image.png
          • 操作符
            image.png
          • Monad
            image.png

3、邻域特定语言

  • 什么是领域特定语言?

    • 应用于特定领域的语言。
  • 语言运行

image.png

  • lexer

    • SQL Token分类

      • 注释
      • 关键字
      • 操作符
      • 空格
      • 字符串
      • 变量
        image.png
        image.png
    • Parser语法规则

      image.png
      • Parser_LL
        image.png
      • Parser_LR
        image.png
  • tools

image.png

  • visitor

image.png