编程范式 | 青训营笔记

128 阅读3分钟

这是我参与「字节前端初阶青训营」伴学笔记创作活动的第4天。

课堂笔记

一、课程介绍

1、课程背景

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

2、课程收益

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

二、编程语言

1、机器语言

image.png

2、汇编语言

image.png

3、高级语言

image.png

4、C/C++

c:“中级语言”过程式语言代表

  • 可对位,字节,地址直接操作
  • 代码和数据分离倡导结构化编程
  • 功能齐全∶数据类型和控制逻辑多样化
  • 可移植能力强

image.png

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

  • C with Classes
  • 继承
  • 权限控制
  • 虚函数
  • 多态

image.png

5、Lisp

Lisp:函数式语言代表

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

image.png

6、JavaScript

  • 基于原型和头等函数的多范式语言
  • 过程式
  • 面向对象
  • 函数式
  • 响应式*

三、编程范式

1、常见编程范式

image.png

2、过程式编程

  • 自顶向下
  • 结构化编程

3、自顶向下

image.png

4、结构化编程

image-20230512173457866

5、JS中的面向过程

image.png

6、面向过程问题

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

7、面向对象编程

  • 封装
  • 继承
  • 多态
  • 依赖注入*

8、面向对象编程_封装

  • 关联数据与算法

image.png

9、面向对象编程_继承

无需重写的情况下进行功能扩充

image.png

10、面向对象编程_多态

不同的结构可以进行接口共享,进而达到函数复用

image.png

11、面向对象编程_依赖注入

去除代码耦合

image.png

12、面向对象编程_五大原则

  • 单一职责原则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 lSP)

13、函数式编程

  • First Class Function

image.png

  • Pure Function

image.png

  • Currying

image.png

image.png

  • Composition

image.png

  • Functor
  • Monad

image.png

  • Applicative

image.png

14、响应式编程

异步/离散的函数式编程

  • 数据流
  • 操作符
    • 过滤
    • 合并
    • 转化
    • 高阶
  • Observable

image.png

  • 操作符

image.png

  • Monad

    去除嵌套的Observable

image.png

四、领域特定语言

1、语言运行

2、lexer

SQL Token分类·注释

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

image.png

image.png

3、Parser_语法规则

推导式:表示非终结符到(非终结符或终结符)的关系。

终结符:构成句子的实际内容。可以简单理解为词法分析中的token。

非终结符:符号或变量的有限集合。它们表示在句子中不同类型的短语或子句。.

image.png

4、Parser_LL

image.png

5、Parser_LR

image.png

6、tools

image.png

7、visitor

image.png