javascrip 基于原型和头等函数的多范式语音
过程式
面向对象
函数式
响应式
编程语言1.机器语言
2.汇编语言
3.中级语言 面向过程代表-c语言
4.高级语言 面向对象代表-c++
函数式代表-lisp
多范式代表-JavaScript
编程范式1.命令式 面向过程(自顶向下(程序->模块->变量,函数),结构编程(顺序结构,选择结构)取代传统的go to)
缺点:1.数据与算法关联弱
2.不利于修改和扩充
3.不利于代码重用
面向对象(封装,继承,多态)
缺点 他总附带所有隐含环境(你想要一根海草,却得到一整片海和叼着海草的鱼)
通过命令改变某个值的或态
2.声明式 函数式(写函数)
响应式(等待响应)
面向对象五大原则
1.单一职责原则
2.开放封闭原则
3.里式替换原则
4.依赖倒置原则
5.接口分离原则
函数式编程(尽量减少变化过程,让代码更清晰)
优势:可缓存,移植,测试,推理,并行
Functor(array,map)可以当作容器类型,类型支持对容器内元素操作
Monad(可以去除嵌套的容器类型)(Array.flatMwp Proimise.then)
Applicative 直接对两个容器进行操作
响应式编程(observable,操作符,monard)
观察者模式(通过订阅和取消订阅来观察)
迭代模式 (通过数据的不断传入传出进行迭代)
响应式编程的compose(合并,过滤,转化,异常处理,多播)就是将数据变成下一个能使用的(把圆的变成方的)
领域特定语言(HTML SQL(SELECT FROM))
领域特定语言——>创造dsl(lexer,parser,tools,visitor)
LL:从左到右检查,从左到右构建语法树
LR:从左到右检查,从右到左构建语法树
LL(K)>LR(1)>LL(1) K从上往下看token数量