字节青训营编程范式笔记

75 阅读2分钟

发展历程:机器语言 汇编语言 中级语言 高级语言

编译器:将高级语言转成汇编再转成机器

c:中级语言过程式语言代表 可以对位,字节,地址进行操作 数据类型和控制逻辑多样 可移植能力强

c++:面向对象语言代表 在c基础上增加了类 继承 权限控制 虚函数 多态

Lisp:函数式语言代表 与机器无关 列表(代码即数据)

java:基于原型和头等函数的多范式语言 融合过程式,面向对象,函数式,响应式

编程范式: 命令式:面向过程,面向对象 声明式:函数式,响应式

过程式编程:自顶向下,结构化编程 用顺序,选择,循环替换了go to

面向过程问题:数据与算法关联弱,不利于修改扩充,不利于代码重用,没有封装的概念

面向对象编程: 封装 继承(无需重写进行扩充) 多态(不同的结构可以进行借口共享,进而达到函数复用) 依赖注入(去除代码耦合)

五大原则:单一职责,开放封闭,里式替换,依赖倒置,接口分离

推荐函数式编程 使用ramdajs库

一等函数

纯函数/无副作用 可缓存,可移植,可测试,可推理,可并行

高阶函数/闭包 可以把之前的参数存在闭包里,并产生新函数,新函数调用时会自动输入存好的参数

函数式编程: 组合 compose

容器 functor 可以当做容器的类型,支持对容器内元素进行操作 把特殊情况处理封装进容器中 容器嵌套容器

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

applicative 直接对两个容器直接操作

响应式编程 操作符 响应式编程的compose 合并,过滤,转化,异常处理,多播

进入管道的数据→操作符构成的数据管道→流出管道的数据

领域特定语言:HTML SQL

语言运行 一个语言字符串→词法解析器→短语→语法解析器→语法树→遍历分析→解释执行/编译/转化语言