The Importance of Terminology's Quality

arsyed arsyed at gmail.com
Tue Jul 22 05:56:32 EDT 2008


On Tue, Jul 22, 2008 at 5:21 AM, Martin Gregorie
<martin at see_sig_for_address.invalid> wrote:
> On Tue, 24 Jun 2008 18:42:15 -0400, John W Kennedy wrote:
>
>> David Combs wrote:
>>> passing
>>> *unnamed* functions as args (could Algol 60 also do something like that,
>>> via something it maybe termed a "thunk")
>>
>> No, the "thunks" were necessary at the machine-language level to
>> /implement/ ALGOL 60, but they could not be expressed /in/ ALGOL.
>>
> Are you sure about that?
>
> The first time I ran across the term "thunking" was when Windows 3
> introduced the Win32S shim and hence the need to switch addressing between
> 16 bit and 32 bit modes across call interfaces. That was called "thunking"
> by Microsoft and even they would surely admit it was a kludge.
>
> I used Algol 60 on an Elliott 503 and the ICL 1900 series back when it was
> a current language. The term "thunking" did not appear in either compiler
> manual nor in any Algol 60 language definition I've seen. A60 could pass
> values by name or value and procedures by name. That was it. Call by name
> is what is now referred to as reference passing.
>


On Tue, Jul 22, 2008 at 5:21 AM, Martin Gregorie
<martin at see_sig_for_address.invalid> wrote:
> On Tue, 24 Jun 2008 18:42:15 -0400, John W Kennedy wrote:
>
>> David Combs wrote:
>>> passing
>>> *unnamed* functions as args (could Algol 60 also do something like that,
>>> via something it maybe termed a "thunk")
>>
>> No, the "thunks" were necessary at the machine-language level to
>> /implement/ ALGOL 60, but they could not be expressed /in/ ALGOL.
>>
> Are you sure about that?
>
> The first time I ran across the term "thunking" was when Windows 3
> introduced the Win32S shim and hence the need to switch addressing between
> 16 bit and 32 bit modes across call interfaces. That was called "thunking"
> by Microsoft and even they would surely admit it was a kludge.
>
> I used Algol 60 on an Elliott 503 and the ICL 1900 series back when it was
> a current language. The term "thunking" did not appear in either compiler
> manual nor in any Algol 60 language definition I've seen. A60 could pass
> values by name or value and procedures by name. That was it. Call by name
> is what is now referred to as reference passing.
>

Thunk has more than one meaning. The ALGOL 60 usage predates Windows
obviously.  Also, call-by-name is distinct from call-by-reference.
See:

http://en.wikipedia.org/wiki/Evaluation_strategy

And, for fun with call-by-name:

http://en.wikipedia.org/wiki/Jensen%27s_Device
http://en.wikipedia.org/wiki/Man_or_boy_test



More information about the Python-list mailing list