课程背景
- 前端的主要编程语言为 JavaScript。
- JavaScript 作为一种融合了多种编程范式的语言,灵活性高
- 前端开发人员需要根据场景在不同编程范式间自如切换。
- 进一步需要创造领域特定语言抽象业务问题。
编程语言
机器语言
第一代计算机使用的是机器语言(二进制),难阅读和编写
汇编语言
用字母代替代替二进制代码,容易编写和阅读
高级语言
独立于机器,面向过程或对象
C/C++
C : “中级语言” 过程式语言代表
- 可对位、字节、地址直接操作
- 代码和数据分离倡导结构化编程
- 功能齐全:数据类型和控制逻辑多样化
- 可移植性强
C++ : 面向对象语言代表
- C with Classes
- 继承
- 权限控制
- 虚函数
- 多态
Lisp
Lisp : 函数式语言代表
- 与机器无关
- 列表:代码即数据
- 闭包
JavaScript
基于原型和头等函数的多范式语言
- 过程式
- 面向对象
- 函数式
- 响应式
总结
编程范式
程序语言特点:
- 是否允许副作用
- 操作的执行顺序
- 代码组织
- 状态管理
- 语法和词法
命令式
主要是关注计算机执行的步骤
- 面向过程:以过程为中心
- 面向对象:以对象为中心
声明式
以数据结构的形式表达程序执行的逻辑
- 函数式:以函数为中心
- 响应式:以数据流为中心
过程式编程
- 自顶向下
- 结构化编程
面向过程
面向过程问题
- 数据与算法关联弱
- 不利于修改和扩充
- 不利于代码重用
面向对象
1、封装:将数据和行为封装在一个对象中,通过访问控制来保护对象的数据和行为,防止外部对象直接访问和修改
2、继承:无需重写的情况下进行功能扩充
3、多态:不同的结构可以进行接口共享,进而达到函数复用
4、 依赖注入:为了解耦合,使得代码更加灵活、可扩展和可维护
面向对象编程-五大原则
- 单一职责原则
- 开放封闭原则
- 里氏替换原则
- 依赖倒置原则
- 接口分离原则
面向对象问题
函数式编程
- 函数是“第一等公民”
- 纯函数/无副作用
- 高阶函数跟闭包
未完结总结:好费精力的一节课,感觉听不清楚,吐字不清晰,感觉好煎熬,下次再补后面的内容