Programming paradigm
01内容介绍
背景
1.前端的主要编程语言为JavaScript。 2.JavaScript 做为一种融合了多种编程范式的语言,灵活性非常高 3.前端开发人员需要根据场景在不同编程范式间自如切换。 4.进一步需要创造领域特定语言抽象业务问题
课程目标
1.了解不同编程范式的起源和适用场景 2.掌握JavaScript 在不同的编程范式特别是函数式编程范式的使用 3.掌握创建领域特定语言的相关工具和模式
收获
对课程目标的内容有了大概的了解,浏览过示范点,很大可能没有实际掌握
02编程语言
在于让人能够更好的操作机器,让计算机理解我们需要做什么 机器语言→汇编语言→高级语言
C:“中级语言”过程式语言代表 | C++:面向对象语言代表 | Lisp:函数式语言代表 | JS:基于原型和头等函数的多范式语言 |
---|---|---|---|
代码和数据分离倡导结构化编程 | C with Classes | 与机器无关 | 过程式 |
功能齐全:数据类型和控制逻辑多样化 | 继承 | 列表:代码即数据 | 面向对象 |
可移植能力强 | 权限控制 | 闭包 | 函数式 |
可对位 字节 地址直接操作 | 虚函数 | 响应式 | |
多态 |
03编程范式
过程式
自顶向下 结构化编程
问题
数据与算法关联弱 不利于修改和扩充 不利于代码重用
面向对象
封装:关联数据与算法 继承:无需重写的情况下进行功能扩充 多态:不同的结构可以进行接口共享,进而达到函数复用 依赖注入*:去除代码耦合
面向对象编程_五大原则
- 单一职责原则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)
问题
面向对象编程语言的问题在于,它总是附带着所有它需要的隐含环境。你想要一个香蕉,但得到的却是一个大猩猩拿着香蕉,而且还有整个从林。 Joe Armstrong(Erlang创始人)
函数式编程
函数是“第一等公民”
纯函数/无副作用
高阶函数 / 包
响应式编程
Observable 操作符 Monad
04领域特定语言
- 词法解析
- 语法分析
- 工具生成
- 解释与编译