编程范式

170 阅读2分钟

编程语言

分为机器、汇编、中级、高级语言等级逐层升高

中级语言:C(面向过程代表)

高级语言有:C++(面向对象的代表)、lisp(函数式代表)、js(多范式代表)

编程范式分为:命令式和声明式

声明式分为:函数式和响应式

命令式分为:面向对象和面向过程

1.面向过程

1-1面向过程编程的特点:自顶向下和结构化编程(我们熟知的数据结构+算法=程序)

1-2面向过程编程的缺点:

1.数据与算法关联性弱

2.程序不利于修改和扩充

3.不利于代码的重用

2.面向对象

2-1面向对象的五大原则

1.单一职责原则 SRP

即每个类中最好只有一个功能

2.开放封闭原则

即封闭性

3.里氏替换原则

即替换父类并可以出现在父类出现的任何位置

4.依赖倒置原则

5.接口分离原则(5可以说是4的实例化)

2-2面向对象缺点

不能得到类包含的一个功能(即引用Joe Armstrong一句话:面向对象编程总是附带着所有它需要的隐式环境,你想要一根香蕉,可是用面向对象编程,得到的可能是一个拿着香蕉的猩猩,而且还有整片丛林)

3.函数式编程特性

1.一等函数

2.纯函数:可缓存、可移植、可测试、可推理、可并行

3、库里化

4.组合

5.functor(容器),monad(嵌套容器),applicative(直接对两个容器进行操作)

4.响应式编程

数据流,操作符

1.observable

1-1.观察者模式

1-2.迭代器模式

1-3.promise/eventtarget超集*

2.操作符

2-1.合并

2-2.过滤

2-3.转化

2-4.异常处理

2-5.多播

3.monad

去除嵌套的Observable

领域特定语言(DSL)

1.lexer

parser(语法规则)

2.parser

2-1.parser-ll:从左到右检查,从左到右构建语法树

2-2.parser-lr:从左到右检查,从右到左构建语法树

3.tools

4.visitor