2

我在编程语言书籍中看到了“子程序”和“程序”。它们是同一个概念吗?“子”是什么意思?

我想您可能在计算机科学书籍中看到过很多示例,除了Scott 的 Programming Language Pragmatics 中的以下示例:

在 3.2.2 节中,我们讨论了子程序调用堆栈上的空间分配(图 3.1)。每个例程被调用时,都会在堆栈顶部获得一个新的堆栈帧或激活记录。该帧可能包含参数和/或返回值、簿记信息(包括返回地址和保存的寄存器)、局部变量和/或临时变量。当一个子程序返回时,它的帧从堆栈中弹出。

谢谢。

4

2 回答 2

3

据我了解,子例程或例程只是程序运行的自包含代码块或指令的名称。例如,在 Ruby 中,我们调用子例程方法,而在 JavaScript 中它们被称为函数。

在您提供的 Programming Language Pragmatics 示例的上下文中,子例程似乎是要执行的操作的调用堆栈,堆栈的每个项目都是启动自己的独立堆栈的例程。在执行完所有过程之后,例程退出并且子例程向下移动到下一个例程。

维基百科对调用堆栈中发生的事情以及子例程如何得名有一个很好的高级解释。

于 2017-08-24T21:54:00.057 回答
1

这两个术语指的是同一件事:子例程是在例程内部调用的例程。把它想象成一个主程序(一个例程),里面有函数调用,每次调用一个函数都是一个子例程。但是函数和例程之间几乎没有区别,您可以 在此处阅读更多内容

于 2021-05-02T01:05:03.103 回答