程式語言術語引發討論:為什麼要「呼叫」函數而不是「調用」或「執行」?

BigGo 社群部
程式語言術語引發討論:為什麼要「呼叫」函數而不是「調用」或「執行」?

程式設計社群正在熱烈討論常見編程術語的起源和適用性,特別是為什麼我們要呼叫函數,而不是使用調用或執行等替代詞彙。這場討論揭露了程式語言如何從早期計算實務中演化而來的精彩見解。

程式設計中使用的替代術語:

  • Invoke:更正式的用法,源自拉丁文「invocāre」(呼喚、召喚)
  • Execute:通用術語,強調正在執行的動作
  • Apply:用於函數式程式設計的語境中
  • Activate:與記憶體中的啟動記錄相關
  • Perform:用於 COBOL 程式語言中
  • Transfer:早期術語,專注於控制流程

圖書館連結:從書籍到程式碼

程式設計中的呼叫術語深深植根於圖書館學,可以追溯到1870年代。早期電腦科學家借用了圖書館用來整理書籍的索書號概念。當程式設計師需要存取儲存在他們稱為程式碼庫中的子程式時,他們會使用識別號碼來呼叫它們,就像向圖書館員請求一本書一樣。這種做法變得如此根深蒂固,以至於到了1958年, Fortran II 引入了字面意思的 CALL 語句,在程式設計文化中確立了這個術語。

實體圖書館和程式碼庫之間的連結不僅僅是隱喻。早期電腦實際上將子程式儲存在磁帶上,組織方式很像書架上的書籍,每個都有自己的識別系統。

「呼叫」術語的歷史時間軸:

  • 1876年: Melvil Dewey 引入圖書館「索書號」
  • 1947年: John W. Mauchly 將「called in」用於副程式
  • 1956年: MANIAC II 將「call number」用於副程式
  • 1958年: Fortran II 引入字面意義的「CALL」陳述式
  • 1959-1960年: Algol 採用「procedure call」術語
  • 1961年:首次記錄使用「to call X」措辭
  • 1963年:現代用法成為標準

現代用法變化和地區差異

今天的程式設計社群交替使用幾個術語,儘管呼叫仍然占主導地位。一些開發者偏好調用,因為它聽起來更正式,而其他人則使用執行以求清晰。有趣的是,不同的語言和文化塑造了這些偏好。例如, Finnish 程式設計師將呼叫翻譯為 kutsua ,意思是邀請或召喚——這表明他們將函數呼叫更多地視為召喚協助,而不是打電話。

社群也注意到術語的有趣誤用,特別是在以英語為第二語言的學生中,他們可能會說他們正在呼叫一個按鈕或呼叫返回關鍵字。這些語言怪癖突顯了程式設計術語即使對經驗豐富的開發者來說也可能令人困惑。

跨語言術語:

  • Finnish:「kutsua」(邀請/召喚)
  • C:對委派和反射方法使用「Invoke」
  • Tcl:使用「command」而非 function
  • Smalltalk:將 if 陳述句實作為方法
  • Excel:將像 IF 這樣的控制結構視為函數

程式設計術語的傳播

從早期計算到現代程式設計的演化顯示,當新術語與使用者產生共鳴時,它們能夠多快地傳播。簡短、容易記住且有助於開發者形成心理連結的詞彙往往會在程式設計社群中快速傳播。呼叫這個術語之所以成功,是因為它簡潔、容易記住,並且與熟悉的概念(如召喚幫助或請求服務)相關聯。

「它被稱為編譯器的原因[大約在1952年]是因為每個子程式都被賦予一個呼叫詞,因為子程式在一個庫中,當你從庫中取出東西時,你會編譯東西。」

這種歷史觀點揭示了我們目前的程式設計詞彙有多少是從實際需求和熟悉的類比中產生的,而不是仔細的語言規劃。理解這些起源有助於解釋為什麼某些術語存留下來而其他術語消失了,以及為什麼程式語言今天繼續發展它們的術語。

參考資料:Phrase origin: Why do we call functions?