编程范式|青训营笔记

81 阅读2分钟

编程语言

机器语言

汇编语言

高级语言

C: "中级语言"面向过程式语言代表

可对位,字节地址,直接操作

代码和数据分离倡导结构化编程

 功能齐全:数据类型和控制逻辑多样化

 可移植能力强

C++ : 面向对象语言代表

C with Classes

继承

 权限控制

 虚函数

 多态

Lisp: 函数式语言代表

 与机器无关

 列表: 代码即数据

 闭包

JavaScript:基于原型和头等函数的多范式语言

 过程式

面向对象

函数式

响应式

image.png

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 优点是性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源。

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。 优点是易维护,易复用,易扩展。

编程范式

 程序语言特性

1.是否允许副作用

2.操作的执行顺序

3.代码组织

4.状态管理

5.语法和词法

编程范式

命令式

1.面向过程

2.面向对象

声明式

1.函数式

2.响应式

过程式编程

1.自顶向下

2.结构化编程

面向过程问题

数据与算法关联弱

不利于修改和扩充

不利于代码重用  

面向对象编程

 封装

将初始变量及函数放入类中

使用式只需实例化对象,然后调用其中的方法

 继承

无需重写的情况下进行功能扩充

示例 oldClass extends newClass

 多态

不同的结构可以进行接口共享,进而达到函数复用

 依赖注入

去除代码耦合

面向对象五大原则

1.单一职责原则

2.开放封闭原则

3.里氏替换原则

4.依赖倒置原则

5.接口分离原则

函数式编程

1.函数是"第一等公民"

2.纯函数/无副作用

3.高阶函数/闭包

优势

1. 可缓存

2. 可移植

3. 可测试

4. 可推理

5. 可并行

响应式编程

异步/离散的函数式编程

数据流

操作符

过滤

合并

转化

高阶

总结

不同的范式就各有侧重点和倾向,了解不同的编程范式,应用解决不同的编程问题。