青训营笔记

82 阅读2分钟

编程范式

l  机器语言

l  汇编语言,字母代替数字

l  高级语言

²  C语言

面向过程代表,中级语言

Ø  可对位,字节,地址直接操作

Ø  代码和数据分离倡导结构化编程

Ø  功能齐全:数据类型和控制逻辑多样化

Ø  可移植能力强

²  C++面向对象代表

Ø  C with classes

Ø  继承

Ø  权限控制

Ø  虚函数

Ø  多态

²  Lisp函数式语言代表

Ø  与机器无关

Ø  列表:代码即数据

Ø  闭包

²  Javascript

Ø  基于原型和头等函数的多范式语言

Ø  过程式

Ø  面向对象

Ø  函数式

Ø  响应式

程序语言特性

²  是否允许副作用

²  操作的执行顺序

²  代码组织

²  状态管理

²  语法和词法

编程范式

²  命令式

Ø  面向过程

Ø  面向对象

                          i.            问题

1.        封装

关联数据与算法

2.        继承

无需重写的情况下进行功能扩充

3.        多态

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

4.        依赖注入

去除代码耦合

                         ii.            原则

1.      单一职责原则srp

2.      开放封闭原则ocp

3.      里式替换原则lsp

4.      依赖倒置原则dip

5.      接口分离原则isp

²  声明式

Ø  函数式

    1.优势

     可缓存

     可移植

     可测试

     可推理

     可并行

    2.composition

      手动组合

    3.functor

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

4.monad

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

5.        Applicative

直接对两个容器直接操作

Ø  响应式

异步/离散的函数式编程

1.数据流

  2.操作符

     异常处理

     过滤

     合并

     转化

     多播

     高阶

Observable

n   观察者模式

n   迭代器模式

n   Promise/eventtarget超集

     Monad

       去除嵌套的observable

过程式编程

Ø  自顶向下

程序

 模块

   变量-数据结构

   函数-函数

       -语句

Ø  结构化编程

顺序结构,选择结构,循环结构

面向过程问题

Ø  数据于算法关联弱

Ø  不利于修改和扩充

Ø  不利于代码重用

领域特定语言

l   语言运行

l   Lexer

Sql token 分类

注释

关键字

操作符

空格

字符串

变量

l   Parser语法规则

上下文无关语法规则

推导式:表示非终结符到非终结符或终结符的关系

终结符:构成句子的实际内容,可以简单理解为词法分析中的token

非终结符:符号或变量的有限集合,他们表示在句子中不同类型的短语或子句

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

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