thunk

/thuhnk/, 名詞

  1. [廃語]P. Z. Ingermanいわく「アドレスを提供するコーディングの一片」。彼は1961年、Algol-60の手続き呼び出しにおいて実引数を仮引数の定義に束縛する方法としてthunkを発明した。手続きが仮引数の位置に式を伴って呼ばれると、コンパイラはその式を計算して結果のアドレスを何らかの標準的な場所に残すthunkを生成する。

  2. 後に一般化され、必要になったときに後から評価できるよう、自身の環境とともに凍結された式(techspeakでclosureと呼ばれるものに似ている)を指すようになった。これらのthunkを解凍する過程はforcing(強制)と呼ばれる。

  3. オーバーレイプログラミング環境において、正しいオーバーレイをロードしそこへジャンプするstubroutinetrampolineと比較せよ。

  4. MicrosoftとIBMはどちらも、Intelベースのシステムにおいて、「16ビット環境」(忌々しいセグメントレジスタと64Kのアドレス制限を持つ)と「32ビット環境」(フラットなアドレッシングと半ば本物のメモリ管理を持つ)を定義した。二つの環境は同じコンピュータとOS上で両方とも動くことができる(Microsoftの世界でWOW、すなわちWindows On Windowsと呼ばれるもののおかげで)。MSとIBMはどちらも、16ビットから32ビットへ、またその逆へ移行する過程を「thunk」と呼ぶことに決めた。Windows 95には「thunk compiler」と呼ばれるTHUNK.EXEというツールさえある。

  5. thunkのように予定された人物または活動。「先日ふと、自分はthunkでかなり正確にモデル化されると思い当たった——私は頻繁に完了へと強制される必要があるのだ。:」——あるplan fileからの言い換え。

歴史的注記:この用語の起源についてはいくつかの擬音語的な神話が出回っている。最も一般的なのは、それがデータがスタックに当たるときの音だというもの。別のものは、その音はデータがアキュムレータに当たる音だと主張する。さらに別のものは、それは引数評価時に式が解凍される音だと示唆する。実際には、発明者たちによれば、それは(議論を重ねた後の夜更けに)Algol-60の引数の型がコンパイル時にちょっと考えれば前もって割り出せ、評価機構を単純化できると気づいた後に造られた。言い換えれば、それは‘すでに考えられて(thought of)’いたのである。そこでそれはthunkと名付けられた。これは「午前2時における‘think’の過去形」である。