编程范式
编程范型提供了(同时决定了)程序员对程序执行的看法。例如,在面向对象编程中,程序员认为程序是一系列相互作用的对象,而在函数式编程中一个程序会被看作是一个无状态的函数计算的序列。
一、课程介绍
课程背景:
1、前端的主要编程语言为Javascript
2、Javascript做为一种融合了多种编程范式的语言,灵活性非常高
3、前端来发人员需要根据场景在不同编程范式间自如切换
4、进一步需要创造领域特定语言抽象业务问题
二、编程语言
1、机器语言
2、汇编语言
3、高级语言
C:“中级语言”过程式语言代表
·可对位、字节、地址直接操作
·代码和数据分离倡导结构化编程
·功能齐全:数据类型和控制逻辑多样化
·可移植能力强
C++:面向对象语言代表(高级语言)
·C with Classes
·继承
·权限控制
·虚函数
·多态
Lisp:函数式语言代表(高级语言)
·与机器无关
·列表:代码即数据
·闭包
Javascript:基于原型和头等函数的多范式语言(高级语言)
·过程式
·面向对象
·函数式
·响应式
三、编程范式
程序语言特性:
·是否允许副作用
·操作的执行顺序
·代码组织
·状态管理
·语法和词法
编程范式:
1、命令式:
·面向过程
·面向对象
2、声明式:
·函数式
·响应式
面向过程问题:
·数据与算法关联弱
·不利于修改和扩充
·不利于代码重用
面向对象编程的五大原则:
·单一职责原则SRP
·开放封闭原则OCP
·里式替换原则LSP
·依赖倒置原则DIP
·接口分离原则ISP
函数式编程优势:
·可缓存
·可移植
·可测试
·可推理
·可并行
响应式编程:异步/离散的函数式编程
四、领域特定语言
创造DSL:
·lexer
·parser
·tools
·visitor