编程范式
- 命令:如何操作"函数"
- 声明式 声明结果"数据流"
- lisp:函数式语言代表:
1. 与机器无关 闭包
2. 列表:代码即数据
- JavaScript:基于原型和头等函数的多范式语言"多项式代表"
- 过程式编程:自下而上;结构化编程(顺序,选择,循环)
- 面向对象:封装(客观事物,集体的类);继承(某对象获得另一个方法);多态(相同的在不同条件下表现方式不同);依赖注入(程序运行过程中,若对另一个对象使用无需代码创建而依赖外部注入)
- 面向过程缺点:
- 数据与算法关联弱,函数与操作数间未有体现
- 不利于修改补充,未有封装概念
- 不利于代码重用
- 单一职责原则(功能单一)
- 开放封闭原则(扩展开放,更改封闭)
- 里式替换原则(子类替换父类,可出现父类出现的任何地方)
- 依赖倒置原则(上依赖下)抽象接口
- 接口分离原则(接口区分)
- 数据流,操作符(借助RxJs工具库)
- 观察者模式(订阅模式做数据改变)
- 迭代器模式(数据支持不断推送过来)
- Promise(数据不会一次,持续的)/EvenTarget(向上传导)
- 操作符;
- "compose"响应式编程
- 多播,合并,过滤,转化,异常处理
- 响应式Monad
- 去除嵌套的observable
- 领域特定语言(DSL)HTML.SQL
- SQL Tokem分类:注释,关键字,操作符,空格,字符串,变量
- Parser(语法原则)
- 推导式:非终结符->(非终结符/终结符)的关系
- 终结符:构成句子的实际内容,可简单理解为词汇分析中的token
- 非终结符:符号或变量的存根集合,它们表在句子中不同类型的短语或子句
- _Parser_LL:从左到右检查,从左到右构建语法数
- _Parser_LR:从左到右检查,从右到左构建语法数(底向上,右到左)