这是我参与【第六届青训营】笔记创作活动的第4天~学习的内容是【编程范式】。
本节内容为编程范式Programming paradigm,范即模范、典范之意,范式即模式、方法。是一类典型的编程风格,是指从事软件工程的一类典型的风格。
本次课程分为课程介绍、编程语言、编程范式和领域特定语言4个部分展开。
1 课程介绍
前端的主要编程语言为Java Script,JS融合了多种编程范式,前端开发人员需要根据场景在不同范式之间自如切换,所以掌握好不同范式(特别是函数式编程范式)的使用是很有必要的。
2 编程语言
编程语言包括机器语言、汇编语言、中级语言和高级语言4种,其中中级语言是面向过程的代表,如C语言,高级语言中,面向对象的代表如C++、Python,函数式代表lisp和多范式代表Java Scirpt。
3 编程范式
3.1 什么是编程范式
程序语言特性包括:是否允许副作用、操作的执行顺序、代码组织、状态管理、语法和词法5个部分。
3.2 常见编程范式
3.2.1 过程式编程
1.自顶向下
2.结构化编程
3.面向过程的问题 (1)数据与算法关联弱; (2)不利于修改和扩充; (3)不利于代码重用。
3.2.2 面向对象编程
分为封装、继承、多态和依赖注入4个部分。
1.封装:关联数据与算法
class Car{
meter = 100
speed = 100
advance(meter){
while (this.meter < meter){
this.meter += this.speed;
}
}
getSpec(){
return `meter: ${this.meter}; speed: ${this.speed};`
}
}
2.继承:无需重写的情况下进行功能扩充
class FlyCar extends Car {
height = 100
fly(height){
while (this.height < height){
this.height += this.speed
}
}
}
3.多态:不同的结构可以进行接口共享,进而达到函数复用
class FlyCar extends Car {
height = 100
fly(height) {
while (this.height < height){
this.height += this.speed;
}
}
getSpec(){
return super.getSpec() + `height:${this.height};`;
}
}
4.依赖注入
5.面向对象编程的五大原则
(1)单一职责原则SRP
(2)开放封闭原则OCP
(3)里式替换原则LSP
(4)依赖倒置原则DIP
(5)接口分离原则ISP
6.面向对象的问题:
面向对象编程语言的问题在于,它总是附带着所有它需要的隐含环境。你想要一个香蕉,但得到的却是一个大猩猩拿着香蕉,而且还有整个丛林。
(1)运行效率低; (2)类库庞大; (3)类库可靠性。
3.2.3 函数式编程
函数类编程主要包括First Class Function、Pure F unction、Currying、Composition、Functor、Monad和Applicative。
3.2.4 响应式编程
4 领域特定语言
领域特定语言,即应用于特定领域的语言,如HTML、SQL等。
5 个人总结
通过今天的学习,我了解了不同编程范式的起源和使用场景,对不同编程范式的使用有了简要的了解。因为自己之前学Python,所以一直只觉得面向对象是好的,真的是有点井底之蛙的感觉了,当然今天学后面几种编程范式的时候因为之前没有接触过,所以主要还是第一遍了解为主,希望可以尽快掌握相关工具和模式~