编程范式

基本分类

分为 Imperative Programming 命令式编程 和 Declarative Programming 声明式编程

  • 命令式编程:关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么。
    • 过程式编程(Procedural programming )以 C 为代表
    • 面向对象编程(OOP)以 Java 为代表。
  • 声明式编程:告诉计算机应该做什么,但不指定具体要怎么做。以数据结构的形式来表达程序执行的逻辑。
    • 函数式编程(FP)
    • 和逻辑编程 函数式编程之前比较小众,近些年来在前端圈开始流行,实际上它的历史比面向对象还要早。逻辑编程代表是 Prolog,使用逻辑学逻辑运算来做,写法有点像自然语言。诞生与 1972 年,历史悠久,在人工智能和数据库上有一些应用,目前已经不再流行。

OOP 和 FP 区别

OOP 使用 mutable 可变的数据结构,操作简单,缺点是不擅长处理并发。由于并发场景代码在任意时间执行任意指令,导致程序的顺序性无法保证,造成 bug,需要用到同步机制和加锁。 FP 追求纯函数无副作用,share nothing 无共享的设计,所以不依赖函数的执行顺序,擅长并发调用,完全没并发异常的问题

驱动类型

事件驱动:

关注操作和响应,基于流程实现编码

  1. 开发静态界面
  2. 绑定事件
  3. 实现绑定的事件
  4. 触发事件、逻辑操作

数据驱动:

关注数据和数据的变化,基于状态实现编码

  1. 抽象设计 将界面中变的和不变的分开,对变化的进行抽象,抽象结果设计数据结构
  2. 修改状态的方式
  3. 实现静态界面绑定事件

语言类型

编译性语言(C++\java)

在代码运行前编译器将代码转化为机器码,运行时候直接使用,不需要再次编译

解释性语言(JS)

在运行的时候将代码转化为机器码使用,弱类型语言=>在运行的时候才能确定其类型 目前的TS只是增加了编译时候的类型检测