编程范式 | 青训营笔记

93 阅读2分钟

一、编程语言

  • 机器语言
  • 汇编语言
  • 高级语言
    • C/C++
      • C:“中级语言” 过程式语言代表
        • 可对位,字节,地址直接操作
        • 代码和数据分离倡导结构化编程
        • 功能齐全:数据类型和控制逻辑多样化
        • 可移植能力强
      • C++:面向对象语言
        • C with Classes
        • 继承
        • 权限控制
        • 虚函数
        • 多态
      • Lisp:函数式代表
        • 与机器无关
        • 列表:代码即数据
        • 闭包
      • JavaScript:多范式代表
        • 过程式
        • 面向对象
        • 函数式
        • 响应式

二、编程范式

1.什么是编程范式

  • 程序语言特性
    • 是否允许副作用
    • 操作的执行顺序
    • 代码组织
    • 状态管理
    • 语法和词法

2.常见编程范式

  • 命令式子
    • 面向过程
    • 面向对象
  • 声明式
    • 函数式
    • 响应式

3.过程式编程

  • 自顶向下
  • 结构化编程

4.面向过程的问题

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

5.面向过程的特点

  • 封装
  • 集成
  • 多态
  • 依赖注入

6.面向对象编程五大原则

  • 单一职责原则SRP(Single Responsibility Principle)
  • 开放封闭原则0CP(Open - Close Principle)
  • 里式替换原则LSP(the Liskov Substitution Principle LSP)
  • 依赖倒置原则DIP(the Dependency Inversion Principle DIP)
  • 接口分离原则ISP(the Interface Segregation Principle ISP)

7.面向对象的问题

  • 面向对象编程语言的问题在于,它总是附带着所有它需要的隐含环境。你想要一个香蕉,但得到的却是一个大猩猩拿着香蕉,而且还有整个丛林。

8.函数式编程

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

9.函数式编程优势

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

10.响应式编程

  • 异步/离散的函数式编程
    • 数据流
    • 操作符
      • 过滤
      • 合并
      • 转化
      • 异常处理
      • 多播

三、领域特定语言

1.什么是领域特定语言

Domain-specific language(DSL):应用于特定领域的语言,如HTML、SQL...

2.lexer

SQL Token分类

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

3.Parser语法规则

-上下文无关语法规则

image.png

  • 推导式:表示非终结符到(非终结符或终结符)的关系。
  • 终结符:构成句子的实际内容。可以简单理解为词法分析中的token。
  • 非终结符:符号或变量的有限集合。它们表示在句子中不同类型的短语或子句。
  • Parser LL:从左到右检查,从左到右构建语法树
  • Parser LR:从左到右检查,从右到左构建语法树

四、总结

编程语言包括机器语言、汇编语言、中级语言和高级语言,作为一名前端开发人员,需要根据场景在不同编程范式间自如切换,进一步需要创造领域特定语言抽象业务问题。