编程范式|青训营笔记

61 阅读2分钟

image.png 过程化编程:有自顶向下和结构化编程的思想。

结构化编程有顺序结构、选择结构和循环结构。

面向对象编程:封装、继承、多态、依赖注入。

封装:关联数据和算法,将数据和算法封装在一个类中。

继承:无需重写的情况下进行功能扩充。

多态:不同的结构可以进行接口共享,进而达到函数复用。

依赖注入:去除代码耦合。

因为面向对象编程比较笼统,需要函数式编程细分,所以更推荐函数式编程。

函数式编程的手动组合不可以实现复杂功能,但是灵活性较差。

函数式编程

可以当做容器的类型,类型支持对容器内元素进行操作

常见的 functor:Array (lterable).map, Promise.then

可以去除嵌套容器的容器类型。

Applicative

直接对两个容器直接操作

响应式编程:在异步/离散的函数式编程,包括数据流和操作符。

Observable

分为观察者模式和迭代器模式

响应式编程的响应:合并、过滤、转化、异常处理和多播。Monda可以去除嵌套的observable。

领域特定语言

lexer词法分析器,输入的字符经过经过lexer处理输出一系列token

SQL Token分类:注释、关键字、操作符、空格、字符串和变量。

Parser_LL

LL:从左到右检查,从左到右构建语法树

select name from user

先转化为语法树

LR:从左到右检查,从右到左构建语法树

select name from user

自底向下构建语法树,LL(K)>LR(1)>LL(1)

71a2e93d59c8d9a5a05d43a9fb63229.png

34aa82ed5c25a7d32ae2d9508f544c3.png lexer:制定词法规则和表达式

parser:制定语法规则

tools:通过一些工具生成语法分析器,生成语法树

visitors:通过遍历对语法树进行解析执行。