编程范式
基本分类
分为 Imperative Programming 命令式编程 和 Declarative Programming 声明式编程
- 命令式编程:关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么。
- 过程式编程(Procedural programming )以 C 为代表
- 面向对象编程(OOP)以 Java 为代表。
- 声明式编程:告诉计算机应该做什么,但不指定具体要怎么做。以数据结构的形式来表达程序执行的逻辑。
- 函数式编程(FP)
- 和逻辑编程
函数式编程之前比较小众,近些年来在前端圈开始流行,实际上它的历史比面向对象还要早。逻辑编程代表是 Prolog,使用逻辑学逻辑运算来做,写法有点像自然语言。诞生与 1972 年,历史悠久,在人工智能和数据库上有一些应用,目前已经不再流行。
OOP 和 FP 区别
OOP 使用 mutable 可变的数据结构,操作简单,缺点是不擅长处理并发。由于并发场景代码在任意时间执行任意指令,导致程序的顺序性无法保证,造成 bug,需要用到同步机制和加锁。
FP 追求纯函数无副作用,share nothing 无共享的设计,所以不依赖函数的执行顺序,擅长并发调用,完全没并发异常的问题
驱动类型
事件驱动:
关注操作和响应,基于流程实现编码
- 开发静态界面
- 绑定事件
- 实现绑定的事件
- 触发事件、逻辑操作
数据驱动:
关注数据和数据的变化,基于状态实现编码
- 抽象设计 将界面中变的和不变的分开,对变化的进行抽象,抽象结果设计数据结构
- 修改状态的方式
- 实现静态界面绑定事件
语言类型
编译性语言(C++\java)
在代码运行前编译器将代码转化为机器码,运行时候直接使用,不需要再次编译
解释性语言(JS)
在运行的时候将代码转化为机器码使用,弱类型语言=>在运行的时候才能确定其类型
目前的TS只是增加了编译时候的类型检测