编程范式要点总结l青训营笔记

51 阅读1分钟

编程范式 机器语言 汇编语言 高级语言

C(“中级语言”过程式语言代表)/C++(面向对象语言代表)

_Lisp(函数式语言)

JS(多范式语言)

分类 命令式(过程(结构化,自上往下)/对象),声明式(函数/响应)

JS中的面向过程 存在缺点 数据与算法关联性弱,不好理解关系; 不利于修改扩充(没有封装); 不利于代码重用(功能重复但是关系复杂不好调整)

面向对象 封装(关联数据与算法) 继承(无需重写,功能扩充) 多态(不同结构可以接口共享,达到函数复用) 依赖注入(去除代码耦合)

五大原则(单一职责,开放封闭,里式替换,依赖倒置, 接口分离) 缺点: 附带着所有隐含问题

面向函数 高阶函数/闭包 纯函数/无副作用 First class function 聚合转发 Pure function 优势(可缓存/移植/测试/推理/并行) 函数式编程 Currying(避免参数重复麻烦,通用参数存入闭包) Composition(手动组合,灵活性差;associativity, map’s composition law)

Functor 当做容器类型,类型支持对容器内元素操作 Functor: array(iterable).map, Promise.then 对容器内元素操作 函数式编程 monad 去除嵌套容器的容器类型(flat)

Applicative 直接对容器操作

响应式编程 异步/离散的函数式编程 观察者模式/迭代器模式 操作符(合并,过滤,转化,异常处理)

DSL:html,SQL

语言运行 Lexer SQL Token分类

Parser语法规则(推导式,终结符,非终结符)

Parser LL(左至右检查,左至右构建语法树)

Parser LR(左至右检查,右至左构建语法树)

Tools

Visitor

课程总结