编程范式 | 青训营笔记

93 阅读2分钟

编程语言

Lisp

John McCarthy

Lisp:函数式语言代表

  • 与机器无关
  • 列表:代码即数据
  • 闭包
(setq nums `(1 2 3 4))  ;数据列表
(setq add `+)   ;加操作
(defun ren(op exp) (eval (cons op exp)) )   ;将数据构建为代码列表 //连接列表
(ren add nums)  ;运行

JavaScript

Brendan Eich

  • 基于原型和头等函数的多范式语言
  • 过程式
  • 面向对象
  • 函数式
  • 响应式

编程范式

什么是编程范式

程序语言特性:

  1. 是否允许副作用
  2. 操作的执行顺序
  3. 代码组织
  4. 状态管理
  5. 语法和词法

常见编程范式

编程范式:

  1. 命令式:如何操作机器改变状态

    面向过程:把操作用过程进行分组

    面向对象:根据操作和对应的状态进行分组

  2. 声明式:声明想要的结果而不指定具体的操作

    函数式:通过一系列的函数来生成逻辑

    响应式:通过数据流和隐式函数来表示结果

过程式编程

算法+数据结构=程序

自顶向下

image-20230605133926268.png

结构化编程

结构化编程是过程式编程的最佳实践。它采用子程序、块结构、for循环以及while循环等结构,替代了传统的goto表达形式,用来改善电脑程序的明晰性,质量与开发时间,避免写出面条式代码。

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

JS中的面向过程

通过export导出模块中的一些变量以及函数

export var car={
    meter:100,  //数据
    speed:10,
};
export function advanceCar(meter){
    while (car < meter){
        car.meter+=car.speed;   //算法
    }
}

在其他模块中可以导入这个模块中的数据和算法来进行一些操作

import {car,advanceCar} from './car';
function main(){
    console.log('before',car);
    advanceCar(1000);
    console.log('after',car);
}

面向过程问题

  • 数据与算法关联弱
  • 不利于修改和扩充
  • 不利于代码重用