编程语言
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
- 基于原型和头等函数的多范式语言
- 过程式
- 面向对象
- 函数式
- 响应式
编程范式
什么是编程范式
程序语言特性:
- 是否允许副作用
- 操作的执行顺序
- 代码组织
- 状态管理
- 语法和词法
常见编程范式
编程范式:
-
命令式:如何操作机器改变状态
面向过程:把操作用过程进行分组
面向对象:根据操作和对应的状态进行分组
-
声明式:声明想要的结果而不指定具体的操作
函数式:通过一系列的函数来生成逻辑
响应式:通过数据流和隐式函数来表示结果
过程式编程
算法+数据结构=程序
自顶向下
结构化编程
结构化编程是过程式编程的最佳实践。它采用子程序、块结构、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);
}
面向过程问题
- 数据与算法关联弱
- 不利于修改和扩充
- 不利于代码重用