编程范式 | 青训营笔记

45 阅读4分钟

课程介绍

课程前景

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

课程收益

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

编程语言

机器语言

屏幕截图 2023-04-21 154035.png 汇编语言

屏幕截图 2023-04-21 154103.png

高级语言

屏幕截图 2023-04-21 154507.png
C/C++

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

  • 可对位、字节、地址直接操作
    代码中的*(&x) = 20;语句可以直接修改变量x的值,说明C语言可以对位、字节、地址进行直接操作
  • 代码和数据分离倡导结构化编程
    代码中的#include <stdio.h>语句引入了标准输入输出库,说明C语言倡导代码和数据分离,支持结构化编程
  • 功能齐全:数据类型和控制逻辑多样化
    代码中声明了整型变量x和字符指针变量str,使用了printf函数进行输出,说明C语言的数据类型和控制逻辑非常多样化,功能齐全
  • 可移植能力强
    代码中使用了标准输入输出库,这使得代码可以在不同的平台上运行,说明C语言具有很强的可移植能力

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

  • C with Classes
    C++最初是作为C语言的一种扩展,其基本语法与C语言相同,但增加了类、继承、多态等面向对象的特性,因此C++也被称为C with Classes
  • 继承
    代码中的class Student : public Person语句定义了一个Student类,它继承自Person类,这说明C++支持继承的特性
  • 权限控制
    代码中的publicprotectedprivate关键字用来控制成员变量和成员函数的访问权限,这说明C++支持权限控制的特性
  • 虚函数
    代码中的virtual void sayHello()语句定义了一个虚函数,这说明C++支持虚函数的特性。虚函数可以实现多态,即在运行时根据对象的实际类型来调用相应的函数
  • 多态
    代码中的void sayHello() override语句实现了函数的重写,这说明C++支持多态的特性。在运行时,如果调用的函数是虚函数,那么实际调用的函数将根据对象的实际类型来确定

Lisp:函数式语言代表

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

JavaScript:基于原型和头等函数的多范式语言

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

总结

屏幕截图 2023-04-21 155853.png

编程范式

什么是编程范式

屏幕截图 2023-04-21 160122.png 常见的编程范式

屏幕截图 2023-04-21 160156.png 过程式编程

  • 自顶向下

屏幕截图 2023-04-21 160327.png

  • 结构化编程

屏幕截图 2023-04-21 160346.png JS中的面向过程

屏幕截图 2023-04-21 160544.png 面向对象编程

  • 封装
    关联数据与算法

屏幕截图 2023-04-21 161030.png

  • 继承
    无需重写的情况下进行功能补充

屏幕截图 2023-04-21 161200.png

  • 多态
    不同的结构可以进行功能共享,进而达到函数复用

屏幕截图 2023-04-21 161409.png

  • 依赖注入*
    去除代码耦合

屏幕截图 2023-04-21 161504.png

屏幕截图 2023-04-21 161537.png
面向对象编程_五大原则

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

函数特点

  • 函数是"一等公民"
  • 纯函数/无副作用
  • 高阶函数跟闭包

优势

  1. 可缓存
  2. 可移植
  3. 可测试
  4. 可推理
  5. 可并行

响应式编程

  • 异步/离散的函数式编程

    • 数据流

    • 操作符

      • 过滤
      • 合并
      • 转化
      • 高阶

总结

屏幕截图 2023-04-21 162435.png

领域特定语言

SQL Token分类

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

Parser_语法规则

上下文无关语法规则

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

课程总结

屏幕截图 2023-04-21 162745.png