发展历程:机器语言 汇编语言 中级语言 高级语言
编译器:将高级语言转成汇编再转成机器
c:中级语言过程式语言代表 可以对位,字节,地址进行操作 数据类型和控制逻辑多样 可移植能力强
c++:面向对象语言代表 在c基础上增加了类 继承 权限控制 虚函数 多态
Lisp:函数式语言代表 与机器无关 列表(代码即数据)
java:基于原型和头等函数的多范式语言 融合过程式,面向对象,函数式,响应式
编程范式: 命令式:面向过程,面向对象 声明式:函数式,响应式
过程式编程:自顶向下,结构化编程 用顺序,选择,循环替换了go to
面向过程问题:数据与算法关联弱,不利于修改扩充,不利于代码重用,没有封装的概念
面向对象编程: 封装 继承(无需重写进行扩充) 多态(不同的结构可以进行借口共享,进而达到函数复用) 依赖注入(去除代码耦合)
五大原则:单一职责,开放封闭,里式替换,依赖倒置,接口分离
推荐函数式编程 使用ramdajs库
一等函数
纯函数/无副作用 可缓存,可移植,可测试,可推理,可并行
高阶函数/闭包 可以把之前的参数存在闭包里,并产生新函数,新函数调用时会自动输入存好的参数
函数式编程: 组合 compose
容器 functor 可以当做容器的类型,支持对容器内元素进行操作 把特殊情况处理封装进容器中 容器嵌套容器
monad 可以去除嵌套容器的容器类型
applicative 直接对两个容器直接操作
响应式编程 操作符 响应式编程的compose 合并,过滤,转化,异常处理,多播
进入管道的数据→操作符构成的数据管道→流出管道的数据
领域特定语言:HTML SQL
语言运行 一个语言字符串→词法解析器→短语→语法解析器→语法树→遍历分析→解释执行/编译/转化语言