一 课程介绍(简单了解)
1.前端的主要编程为JavaScript
2.JavaScript做为一种融合了多种编程范式的语言,灵活性非常高,有自由度
3.前端开发人员需要根据场景在不同编程范式间自如切换
4.进一步需要创造领域特定语言抽象业务问题
课程收益
1.了解不同编程范式的起源和适用场景
2.掌握JavaScript在不同的编程范式特别是函数式编程范式的使用
3.掌握创建领域特定语言的相关工具和模式
二 编程语言
(为什么需要编程语言)
instructions
-
机器语言和汇编语言
高级语言(顾名思义)
高级语言
C=A+B
汇编语言
LOAD A
ADD B
STORE C
机器语言
12234234532450
34523452345234
67896789456768
12234345435645
C/C++
C:
-
“中级语言”过程式语言代表
-
可对位,字节,地址直接操作
-
代码和数据分离倡导结构化编程
-
功能齐全;数据类型和控制逻辑多样化
-
可移植能力强
C++:
-
面向对象语言代表
-
C with Classes
-
继承
-
权限控制
-
虚函数
-
多态
Lisp
Lisp:函数式语言代表 与机器无关 列表:代码即数据 闭包
JavaScript 基于原型和头等函数的多范式语言 过程式 面向对象 函数式 响应式
小总结
编程范式 什么是编程范式
程序语言特性(是否允许副作用,操作的执行顺序,代码组织,状态管理,语法和词法)
常见编程范式
编程范式分为命令式与声明式
1.命令式是面向过程,面向对象
2.声明式是函数式,响应式
过程式编程
-
自顶向下
-
结构化编程
自顶向下
结构化编程
面向过程式编程有什么缺点? 为什么后面会出现面向对象
面向过程问题
数据与算法关联弱 不利于修改和扩充 不利于代码重用
面向对象编程
-
封装
-
继承
-
多态
-
依赖注入
封装(关联数据与算法)
继承(无需重写的情况下进行功能扩充)
多态(不同的结构可以进行接口共享,进而达到函数复用)
依赖注入(去除代码耦合)
面向对象编程_五大原则
单一职责原则SRP(Single Responsibility Principle)
开放封闭原则oCP(Open - Close Principle)
里式替换原则LSP(the Liskov Substitution Principle LSP)
依赖倒置原则DIP(the Dependency lnversion Principle DIP)
接口分离原则ISP(the Interface Segregation Principle ISP)
面向对象编程还有什么缺点 为什么我们推荐函数式编程
面向对象问题
明显对象编程语言的问题在于,它总是附带着所有它需要的隐含环境。你想要一根香蕉,但是得到的却是一个大猩猩拿着香蕉,而且还有整个丛林。