编程范式
01课程介绍
课程背景:
1. 前端的主要编程语言为JavaScript。
2. JavaScript做为一种融合了多种编程范式的语言,灵活性非常高。
3. 前端开发人员需要根据场景在不同编程范式间自如切换。
4. 进一步需要创造领域特定语言抽象业务问题。
课程收益:
1.了解不同编程范式的起源和适用场景。
2. 掌握JavaScript在不同的编程范式特别是函数式编程范式的使用。
3. 掌握创建领域特定语言的相关工具和模式。
02编程语言
C/C++C
C: “中级语言”过程式语言代表
•可对位,字节,地址直接操作
•代码和数据分离倡导结构化编程
•功能齐全:数据类型和控制逻辑多样化
•可移植能力强
C++:面向对象语言代表
•C with Classes
•继承
•权限控制
•虚函数
•多态
Lisp:函数式语言代表
•与机器无关
•列表:代码即数据
•闭包
•基于原型和头等函数的多范式语言
•过程式
•面向对象
•函数式
•响应式
03编程范式
过程式编程
•自顶向下
•结构化编程
面向过程问题
•数据与算法关联弱
•不利于修改和扩充
•不利于代码重用
面向对象编程
•封装
•继承
•多态
•依赖注入
面向对象编程_五大原则
•单一职责原则SRP(Single Responsibility Principle)
•开放封闭原则OCP(Open-Close Principle)
•里式替换原则LSP(theLiskovSubstitution Principle LSP)
•依赖倒置原则DIP(the Dependency Inversion Principle DIP)
•接口分离原则ISP(the Interface Segregation Principle ISP)
函数式编程
•函数是“第一等公民”
•纯函数/无副作用
•高阶函数/闭包
函数式编程_Pure Function
•优势
•可缓存
•可移植
•可测试
•可推理
•可并行
响应式编程
•异步/离散的函数式编程
•数据流
•操作符
•过滤
•合并
•转化
•高阶
04领域特定语言
什么是领域特定语言
•Domain-specific language (DSL):应用于特定领域的语言
•HTML
•SQL
Parser_语法规则
上下文无关语法规则
推导式:表示非终结符到(非终结符或终结符)的关系。
终结符:构成句子的实际内容。可以简单理解为词法分析中的token。
非终结符:符号或变量的有限集合。它们表示在句子中不同类型的短语或子句。