编程语言
分为机器、汇编、中级、高级语言等级逐层升高
中级语言: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