不同抽象级别上使用的编程范式, declaretive 比 imperative 更高等一些, 只描述有哪些
对象, 并且这些对象做什么. 背后会有一个解析器, 解析描述语句, 所以性能不太好.imperative 更贴近底层, 关注一个算法或者一个问题, 一步步的解的步骤.
过程式编程, 注重解题的步骤, 使用各种控制语句
面向对象编程, 解题不是一个步骤, 而是交给一个符合这个问题解的对象, 对过发送消息,
让这个对象来处理问题.
使用多线程, 多进程编程的并行处理方式
计算的抽象模型, 一般在人工智能中使用, 需要一个知识库和一个问题, 计算机根据模型
和知识库来解问题.
函数式编程关心数据的映射,命令式编程关心解决问题的步骤. 这种映射就是数学中的函数,
将计算描述为一种表达式求值.
特性:
No Side Effect: 不改变运行状态, 函数不管运行多少遍, 输入值一样, 那么返回值一样.
Typed Racket
创建过程活动记录时包含一个指向它的外层函数的活动记录指针. 这个指针被称为静态链接(static link), 可以通过静态链接访问外层过程活动记录, 因此也可以访问外层过程的局部数据. 一个指向词法上 外层范围的数据项的引用被称作上层引用(uplevel reference). 静态链接编译时决定, 与之对应的是 运行时决定的动态链接, 后者是一个活动链, 在运行时指向最靠近自己的前一个过程调用的活动记录.