概要
- プログラミングで使われる「関数を呼ぶ(call)」の語源と歴史的背景の解説
- 「call」は図書館の「call number(請求記号)」などの用語と関連
- FORTRAN IIの「CALL」命令が普及のきっかけ
- 1950年代後半から1960年代初頭にかけて意味や用法が変遷
- 現代の「call」の使い方に至るまでの流れを整理
プログラミングにおける「call(呼び出す)」の語源と発展
- プログラマーが「関数を呼ぶ(call)」と言う理由の由来
- 友人を呼ぶ、 召使いを呼ぶ、 電話をかける などの比喩表現
- 実際には「召喚する(calling up, summoning)」の意味合いが強い
- 図書館用語との関係
- call number(請求記号) は図書館で本を特定・取り出すための番号
- 1876年のMelvil Deweyによる用語使用が初出
- 図書館で本を「呼び出す」ことになぞらえ、プログラムでもサブルーチンを「呼び出す」と表現
- 初期コンピュータ用語での「call」
- 1947年のJohn W. Mauchlyの論文で「サブルーチンを呼び出す」概念が登場
- サブルーチンの格納場所=「ライブラリ」、呼び出し=「withdrawal(取り出し)」や「call」
- MANIAC II(1956年)のアセンブラでも、サブルーチンには「call number」が割り当てられていた
- ただし当初は「call」は実行時動作ではなく、アセンブル時の「呼び出し」を指す
- FORTRAN II(1958年)による「CALL」命令の普及
- 「CALL 文」によってサブルーチン名を指定し、 制御をサブルーチンに移す
- ここで初めて「call」という単語がプログラム命令として明確に普及
- 「transfer of control(制御の移動)」という表現と混在
- 1959~1961年の用語変遷
- Sarbacher(1959年)は「call in」を実行時の制御移動と定義
- JOVIAL(1960年)は「procedure call(手続き呼び出し)」という名詞を採用
- Algol 60(1960年)では「procedure statement serves to invoke (call for) the execution」と表現
- Burroughs Algebraic Compiler(1961年)で「to call a subroutine」が登場
- 1963年には現代的な「to call X」の用法が一般化
- まとめ
- FORTRAN IIの「CALL」命令が決定的な普及要因
- 「call」は元々「(図書館の本を)呼び出す」から転用
- 1950年代後半から1960年代初頭にかけて、 assembly時の呼び出し から 実行時の制御移動 まで意味が拡張
- 現在では「関数・サブルーチンを呼び出す」=「call a function/subroutine」が一般的用語
図書館用語との関連性
- 「call number(請求記号)」の定義
- 図書館の本や資料を特定・検索するための番号
- 申請用紙やリストを使って「call for」する運用
- プログラミングへの転用
- サブルーチンや関数の識別子=「call number」
- プログラムの一部として必要な時に「呼び出す」発想
- ライブラリの中から必要な部品を「呼び出す」運用
- 影響
- プログラミング初期の用語設計に図書館運用の影響が色濃い
「call」命令の普及と現代用法
- FORTRAN II以降の「CALL」命令
- サブルーチン名を指定して 制御を移す 命令
- 以降、多くのプログラミング言語で「call」の用語が採用
- 用語の拡張
- assembly時の「呼び出し」から、 実行時の制御移動 まで
- 現在では「call」は 関数・メソッド・サブルーチンの実行 を指す標準用語
- 「call」に関する名詞・動詞の使い分け
- procedure call(手続き呼び出し)、call site(呼び出し箇所)
- to call a function(関数を呼ぶ)、to call a subroutine(サブルーチンを呼ぶ)
まとめ
- 「call」は図書館の「call number」や「呼び出し」運用から転用された用語
- FORTRAN IIの「CALL」命令が普及の決定打
- 1950年代後半から1960年代初頭にかけて、assembly時から実行時まで意味が拡張
- 現代では「関数・サブルーチンを呼ぶ」ことを「call」と表現するのが定着