From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_00,INVALID_MSGID, RATWARE_MS_HASH,RATWARE_OUTLOOK_NONAME autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,37680a99b5e22b2b X-Google-Attributes: gid103376,public From: "Nick Roberts" Subject: Re: Shared Generic Instance Code Date: 1997/04/05 Message-ID: <01bc4216$205fe340$43f882c1@xhv46.dial.pipex.com>#1/1 X-Deja-AN: 230995470 References: <5hrkhkINN9ip@snoopy.cis.ohio-state.edu> <01bc4155$221728e0$2dfb82c1@xhv46.dial.pipex.com> Organization: UUNet PIPEX server (post doesn't reflect views of UUNet PIPEX) Newsgroups: comp.lang.ada Date: 1997-04-05T00:00:00+00:00 List-Id: Robert A Duff wrote in article ... > In article <01bc4155$221728e0$2dfb82c1@xhv46.dial.pipex.com>, > Nick Roberts wrote: > >Don't get confused between 'thunking' and mere indirect jumping/calling. A > >thunk is where a direct jump/call vector is replaced at runtime (and is > >thus a one-time thing per execution). > > I don't think that's right. I once spoke with Mike Woodger about this > (around 1992 or so). He was involved in the original Algol 60, and I > think that's where the term "thunk" originated. [etc.] Fascinating, Captain. Here's what I find in Craig Servin's hacker guide (usually pretty authoritative) ... <<< thunk /thuhnk/ n. 1. "A piece of coding which provides an address", according to P. Z. Ingerman, who invented thunks in 1961 as a way of binding actual parameters to their formal definitions in Algol-60 procedure calls. If a procedure is called with an expression in the place of a formal parameter, the compiler generates a thunk to compute the expression and leave the address of the result in some standard location. 2. Later generalized into: an expression, frozen together with its environment, for later evaluation if and when needed (similar to what in techspeak is called a `closure'). The process of unfreezing these thunks is called `forcing'. 3. A stubroutine, in an overlay programming environment, that loads and jumps to the correct overlay. Compare trampoline. 4. People and activities scheduled in a thunklike manner. "It occurred to me the other day that I am rather accurately modeled by a thunk --- I frequently need to be forced to completion." --- paraphrased from a plan file. Historical note: There are a couple of onomatopoeic myths circulating about the origin of this term. The most common is that it is the sound made by data hitting the stack; another holds that the sound is that of the data hitting an accumulator. Yet another holds that it is the sound of the expression being unfrozen at argument-evaluation time. In fact, according to the inventors, it was coined after they realized (in the wee hours after hours of discussion) that the type of an argument in Algol-60 could be figured out in advance with a little compile-time thought, simplifying the evaluation machinery. In other words, it had `already been thought of'; thus it was christened a `thunk', which is "the past tense of `think' at two in the morning". >>> So, I knew of the latter meaning (no 2), and you of the earlier one (no 1). We _were_ both right! And yes, a little bit of history/culture/whatever is interesting, without taking it _too_ seriously, perhaps! Nick.