编程范式 | 青训营笔记

16 阅读2分钟

编程语言

高级语言、汇编语言和机器语言

“中级语言”

C(“中级语言”,过程式语言代表)

可对位、字节,地址直接操作;代码和数据分离倡导结构化编程;功能齐全:数据类型和控制逻辑多样化;可移植能力强。

面向对面语言代表

C with Classes;继承;权限控制;虚函数;多态

函数式语言代表

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)

函数式编程

函数是“第一等公民”;纯函数(无副作用);高阶函数/闭包

函数式编程Functor

可以当作容器的类型,类型支持对容器内元素进行操作

函数式编程Monad

可以去除嵌套容器的容器类型

函数式编程Applicative

直接对两个容器直接操作

函数式编程优势

可缓存;可移植;可测试;可推理;可并行

响应式编程

异步/离散的函数式编程

数据流;

操作符:过滤;合并;转化;高阶

响应式编程Observable

观察者模式;迭代器模式;Promise/EventTarget 超集

领域特定语言

Domain-specific language(DSL):应用于特定领域的语言