编程范式
当前前端背景
1.前端的主要编程语言为JavaScript。 2.JavaScript做为一种融合了多种编程范式的语言,灵活性非常高。 3.前端开发人员需要根据场景在不同编程范式间自如切换。 4.进一步需要创造领域特定语言抽象业务问题。
编程语言的发展
由机器语言到汇编语言再到高级语言
C语言
C: “中级语言” 过程式语言代表• 可对位,字节,地址直接操作• 代码和数据分离倡导结构化编程• 功能齐全:数据类型和控制逻辑多样化• 可移植能力强
C++语言
C++: 面向对象语言代表 C with Classes 继承 权限控制 虚函数 多态
Lisp语言
Lisp: 函数式语言代表 与机器无关 列表:代码即数据 闭包
JavaScript语言
基于原型和头等函数的多范式语言 过程式 面向对象 函数式 响应式
编程范式
- 编程范式
- 命令式
- 面向过程
- 面向对象
- 声明式
- 函数式
- 响应式
- 命令式
面向过程中的问题
数据与算法关联弱 不利于修改和扩充 不利于代码重用
面向对象编程
封装 继承 多态 依赖注入
面向对象编程五大原则
• 单一职责原则 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创始人) ###函数式编程和响应式编程 领域特定语言 Domain
specific language (DSL): 应用于特定领域的语言 • HTML • SQL
lexer SQL Token 分类 • 注释 • 关键字 • 操作符 • 空 格 • 字符 串 • 变量
Parser_ 语法规则 上下文无关语法规则 推导式: 表示 非终 结符 到( 非终 结符 或终 结符)的关 系。 终结符: 构 成句子 的 实际 内容 。 可以 简 单理 解为词 法分 析中 的 token 。 非终结符: 符 号或变量 的 有限集 合 。它们表示在句子中 不同类型的 短 语 或子句。