0

我已經看到編程語言書中使用的「子程序」和「例程」。他們是同一個概念嗎? 「子」是什麼意思?「子程序」和「例程」是否是相同的概念?

我想有很多的例子,你可能在計算機科學書籍所看到的,除了以下一個從Programming Language Pragmatics, by Scott:

在3.2.2節我們討論在subroutinË 分配的空間調用堆棧(圖3.1)。每個例行程序在它被調用時在堆棧的頂部被給予新的 堆棧幀或激活記錄。該框架 可以包含參數和/或返回值,簿記信息 (包括返回地址和保存的寄存器),局部變量, 和/或臨時值。當子程序返回時,其幀從棧中彈出 。

謝謝。

+0

曾幾何時,「例程」將應用於程序中的頂級代碼。 「子程序」是由頂級代碼或其他子程序調用的代碼位。 –

回答

1

我的理解是子程序或例程只是程序運行的代碼或指令自包含塊的名稱。例如,在Ruby中我們會調用子程序方法,在JavaScript中它們被稱爲函數。

在您提供的編程語言語義學實例的上下文中,子例程看起來是要執行的操作的調用堆棧,並且堆棧中的每個項目都是啓動它們自己的自包含堆棧的例程。在所有進程執行後,例程退出並且子例程向下移動到下一個例程。

Wikipedia對調用堆棧中發生了什麼以及子程序如何獲得名稱有很好的高級解釋。

+0

謝謝。如果您閱讀了我剛剛添加的書的鏈接,則子例程和例程在堆棧中都有一個框架。所以我認爲他們是一樣的概念。你同意嗎? – Tim

+0

閱讀更詳細的摘錄,我看到你在說什麼。這聽起來像子程序和例程是同一概念的不同名稱。從韋恩康拉德上面評論的看來,「子程序」這個詞似乎只是幾年前的一個殘餘。子例程是在另一個例程中執行的例程。儘管如此,是的,我同意你的看法,子程序和例程是一樣的。感謝帖子和研究。這是很酷的東西。 –