本节课总的来说就是介绍了不同编程范式的起源和适用场景、需要让我们掌握JavaScript在不同的编程范式特别是函数式编程范式的使用、掌握创建领域特定语言的相关工具和模式。
简单的js
JavaScript 是 单线程 语言,意味着只有单独的一个调用栈,同一时间只能处理一个任务或一段代码。队列、堆、栈、事件循环构成了 js 的并发模型,事件循环 是 JavaScript 的执行机制。
为什么js是一门单线程语言呢?最初设计JS是用来在浏览器验证表单以及操控DOM元素,为了避免同一时间对同一个DOM元素进行操作从而导致不可预知的问题,JavaScript从一诞生就是单线程。
既然是单线程也就意味着不存在异步,只能自上而下执行,如果代码阻塞只能一直等下去,这样导致很差的用户体验,所以事件循环的出现让 js 拥有异步的能力。
编程语言
机器语言--->汇编语言--->高级语言 如下图:
总的来说编程语言可分为机器语言、汇编语言、中级语言、高级语言
编程范式
啥是编程范式总的来说就是程序语言特性:
- 是否允许副作用
- 操作的执行顺序
- 代码组织
- 状态管理
- 语法和词法
常见的编程范式
命令式
- 面向过程
- 面向对象
声明式
- 函数式
- 响应式
过程式编程
- 自顶向下
- 结构化编程
JS中的面向对象
面向过程的问题
- 数据与算法关联弱
- 不利于修改和扩充
- 不利于代码重用
面向对象编程
- 封装
- 继承
- 多态
- 依赖注入 面向对象:无需重写的情况下进行功能扩充、不同的结构可以进行接口共享,进而达到函数复用、去除代码耦合
面向对象编程_五大原则
- 单一职责原则
- 开放封闭原则
- 里式替换原则
- 依赖倒置原则
- 接口分离原则
面向对象编程缺点?为啥推荐使用函数式编程
简单的来说就是依赖性强,依赖于某个框架,确实拿到我们想要的东西,但是多了很多东西。
函数式编程的优势
- 可缓存
- 可移植
- 可测试
- 可推理
- 可并行
响应式编程
-
异步/离散的函数式编程
- 数据流
- 操作符
- 过滤
- 合并
- 转化
- 高阶
-
观察者模式
-
迭代器模式
-
Promise/EventTarget 超集
响应式编程_操作符
响应式编程的 “compose”
- 合并
- 过滤
- 转化
- 异常处理
- 多播
- 去除嵌套的Observable
总结:
本节课接学到了某些领域的特定语言 比如HTML、SQL等
lexer
SQL Token分类
- 注解
- 关键字
- 操作符
- 空格
- 字符串
- 变量
课程总结
编程范式:
- 编程语言
- 机器语言
- 汇编语言
- 中级语言 如C
- 高级语言 C++、Lisp、Java Script
- 编程范式
- 什么是编程范式
- 过程式编程
- 面向对象编程
- 函数式编程
- 响应式编程
- 领域特定语言
- 创建SQL
- lexer
- parser
- tools
- visitor
- 创建SQL