SICP - 程序与过程

SICP - Procedures versus Process

程序和过程在概念上有什么区别?

如果答案取决于语言,我在学习使用 lisp(方案)的 SICP 书时正在考虑这个问题。

在 SICP 的上下文中:

  • 程序是过程的描述(如果需要,可以是食谱)。
  • 过程是将过程应用于参数的结果(广义上,不仅仅是返回值):所有设置的上下文、具有定义或设置值的变量、将要进行的所有计算等。None 发生在程序本身。

再打个比方:流程就是蓝图,比如建筑的示意图,流程就是实际的建筑施工。

一个程序是对如何计算某物的描述。如果你告诉操作系统 运行 一个程序,它会从磁盘读取一个程序(以可执行文件的形式)并启动一个 进程 也就是计算 cpu 遵循程序给出的计算步骤。如果你两次启动同一个程序,你会得到两个进程(如果你使用的是 GUI,你可能会不小心尝试左键单击一个图标两次,使两个 windows 出现(这里每个 window 属于一个过程)。

在 sicp 的上下文中,过程是 运行ning 计算,过程是计算的描述,也就是程序(或程序的一部分)。

https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-9.html#%_idx_114