Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: origin of the C meaning of "object"

74 views
Skip to first unread message

Eric Sosman

unread,
Dec 16, 2015, 11:21:09 AM12/16/15
to
On 12/16/2015 11:00 AM, Stefan Ram wrote:
> The word »object« in English is very vague. Does anyone have
> any idea why it was used in C to designate a region of storage?
>
> Is it known who coined the term with this meaning?
>
> Does it go back to a tradition that existed before C was
> invented?
>
> Is it somehow related to »object code«, »object file«, or
> does it have nothing to do with this?

A "region of data storage in the execution environment, the
contents of which can represent values" was called an "object"
because the term "dingus" was already taken. :)

Seriously: What term would you have chosen? "Variable" isn't
quite right, because there exist data storage regions that cannot
vary; also, "variable" as used in connection with other languages
often carries a connotation of "named variable," and C supports
unnamed storage. "Value" won't work, because C permits a storage
region to contain something that represents no value; also, C has
values that do not necessarily occupy any storage at all. "Slot"
or "location" or "memory cell" don't seem to fit well, ... So,
what word would *you* have recommended to the ANSI Committee?

The "region of storage" meaning of "object" is, IMO, unrelated
to the meaning in "object file" or "object code," terms that antedated
the invention of C. I've always supposed they derive from either
"object" as opposed to "subject," the recipient or target of the action
of a transitive verb, or from "objective," the goal or desired outcome
of some effort. But I'm no philologist, so I'm just guessing.

--
eso...@comcast-dot-net.invalid
"Don't be afraid of work. Make work afraid of you." -- TLM

Keith Thompson

unread,
Dec 16, 2015, 12:17:28 PM12/16/15
to
r...@zedat.fu-berlin.de (Stefan Ram) writes:
> The word »object« in English is very vague. Does anyone have
> any idea why it was used in C to designate a region of storage?
>
> Is it known who coined the term with this meaning?
>
> Does it go back to a tradition that existed before C was
> invented?
>
> Is it somehow related to »object code«, »object file«, or
> does it have nothing to do with this?

The manuals for C's predecessors, B and BCPL, both use the word
"object" in the same sense that it's used in C. It likely goes
back before that.

I don't believe that usage is related to "object code"; that's just
a distinct usage of the same English word. (It could be worse,
we could be talking about "static".)

--
Keith Thompson (The_Other_Keith) ks...@mib.org <http://www.ghoti.net/~kst>
Working, but not speaking, for JetHead Development, Inc.
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"

Les Cargill

unread,
Dec 16, 2015, 1:26:11 PM12/16/15
to
Stefan Ram wrote:
> The word »object« in English is very vague. Does anyone have
> any idea why it was used in C to designate a region of storage?
>


I imagine it has the same basic derivation as what it means when the
term "object oriented" occurs.

I have a ... thingie in my code which is uint8_t x[32]. Might
as well call it an "object".

> Is it known who coined the term with this meaning?
>
> Does it go back to a tradition that existed before C was
> invented?
>
> Is it somehow related to »object code«, »object file«, or
> does it have nothing to do with this?
>

"Object" in that case is a different usage of the term - it's
used to mean "the output of a toolchain". The distinction is
between "source code" and "object code."

--
Les Cargill

Ben Bacarisse

unread,
Dec 16, 2015, 2:02:35 PM12/16/15
to
Keith Thompson <ks...@mib.org> writes:

> r...@zedat.fu-berlin.de (Stefan Ram) writes:
>> The word »object« in English is very vague. Does anyone have
>> any idea why it was used in C to designate a region of storage?
>>
>> Is it known who coined the term with this meaning?
>>
>> Does it go back to a tradition that existed before C was
>> invented?
>>
>> Is it somehow related to »object code«, »object file«, or
>> does it have nothing to do with this?
>
> The manuals for C's predecessors, B and BCPL, both use the word
> "object" in the same sense that it's used in C. It likely goes
> back before that.

The usage seems different to me. In the 1967 BCPL manual, the term
refers to an rvalue and it's very much a lavalue by the time you get to
B and C.

In the later BCPL manual (2007) the term is no longer used in that sense
at all, but is applied only to the support BCPL provides for object
oriented programming.

<snip>
--
Ben.

Keith Thompson

unread,
Dec 16, 2015, 2:34:16 PM12/16/15
to
Ben Bacarisse <ben.u...@bsb.me.uk> writes:
> Keith Thompson <ks...@mib.org> writes:
>> r...@zedat.fu-berlin.de (Stefan Ram) writes:
>>> The word »object« in English is very vague. Does anyone have
>>> any idea why it was used in C to designate a region of storage?
>>>
>>> Is it known who coined the term with this meaning?
>>>
>>> Does it go back to a tradition that existed before C was
>>> invented?
>>>
>>> Is it somehow related to »object code«, »object file«, or
>>> does it have nothing to do with this?
>>
>> The manuals for C's predecessors, B and BCPL, both use the word
>> "object" in the same sense that it's used in C. It likely goes
>> back before that.
>
> The usage seems different to me. In the 1967 BCPL manual, the term
> refers to an rvalue and it's very much a lavalue by the time you get to
> B and C.

You're right. The BCPL manual uses the word "object" to refer to what C
calls as "value". (It also talks about "object code".)

> In the later BCPL manual (2007) the term is no longer used in that sense
> at all, but is applied only to the support BCPL provides for object
> oriented programming.

Do you have a link to the 2007 manual? (Sounds like BCPL++.)

Ben Bacarisse

unread,
Dec 16, 2015, 4:30:26 PM12/16/15
to
Keith Thompson <ks...@mib.org> writes:

> Ben Bacarisse <ben.u...@bsb.me.uk> writes:
<snip>
>> In the later BCPL manual (2007) the term is no longer used in that sense
>> at all, but is applied only to the support BCPL provides for object
>> oriented programming.
>
> Do you have a link to the 2007 manual? (Sounds like BCPL++.)

I think I got it from this page http://www.cl.cam.ac.uk/~mr10/index.html

The link itself being http://www.cl.cam.ac.uk/users/mr/bcplman.pdf (the
first in Other Publications) but that now takes you to an even newer
document dated 2015. I can email you the 2007 version if you like but
it looks very similar to the latest one.

What's BCPL++? The only reference I can drum up is to something rather
hypothetical in a paper on types by Stephen Kell.

The object oriented support in BCPL is just the "method call" operator
that adds some sugar to calling a function from a vector of functions:

E#(E_1, .. , E_n)

being

(E_1!0!E)(E_1, .. , E_n)

--
Ben.

Keith Thompson

unread,
Dec 16, 2015, 6:22:56 PM12/16/15
to
Ben Bacarisse <ben.u...@bsb.me.uk> writes:
> Keith Thompson <ks...@mib.org> writes:
>> Ben Bacarisse <ben.u...@bsb.me.uk> writes:
> <snip>
>>> In the later BCPL manual (2007) the term is no longer used in that sense
>>> at all, but is applied only to the support BCPL provides for object
>>> oriented programming.
>>
>> Do you have a link to the 2007 manual? (Sounds like BCPL++.)
>
> I think I got it from this page http://www.cl.cam.ac.uk/~mr10/index.html
>
> The link itself being http://www.cl.cam.ac.uk/users/mr/bcplman.pdf (the
> first in Other Publications) but that now takes you to an even newer
> document dated 2015. I can email you the 2007 version if you like but
> it looks very similar to the latest one.

Thanks.

> What's BCPL++? The only reference I can drum up is to something rather
> hypothetical in a paper on types by Stephen Kell.

It's a joke, based on your reference to BCPL and OO and inspired by the
mythical "ADD ONE TO COBOL".

> The object oriented support in BCPL is just the "method call" operator
> that adds some sugar to calling a function from a vector of functions:
>
> E#(E_1, .. , E_n)
>
> being
>
> (E_1!0!E)(E_1, .. , E_n)

--

Stephen Sprunk

unread,
Dec 16, 2015, 6:31:04 PM12/16/15
to
On 16-Dec-15 17:22, Keith Thompson wrote:
> Ben Bacarisse <ben.u...@bsb.me.uk> writes:
>> What's BCPL++? The only reference I can drum up is to something
>> rather hypothetical in a paper on types by Stephen Kell.
>
> It's a joke, based on your reference to BCPL and OO and inspired by
> the mythical "ADD ONE TO COBOL".

Is it mythical, or did the ADD ONE TO COBOL compilers just loop back to
1/1/1900 and then any references to them were garbage-collected?

S

--
Stephen Sprunk "God does not play dice." --Albert Einstein
CCIE #3723 "God is an inveterate gambler, and He throws the
K5SSS dice at every possible opportunity." --Stephen Hawking

Richard Bos

unread,
Dec 16, 2015, 7:10:20 PM12/16/15
to
Keith Thompson <ks...@mib.org> wrote:

> The manuals for C's predecessors, B and BCPL, both use the word
> "object" in the same sense that it's used in C. It likely goes
> back before that.
>
> I don't believe that usage is related to "object code"; that's just
> a distinct usage of the same English word. (It could be worse,
> we could be talking about "static".)

Certainly it seems to me that the word as used in C and other languages
is a noun ("this is an object of such and such type"), whereas as used
in compiler technology it's an adjective derived from another meaning of
the noun: "this code is the object of our compilation".

Richard

Clark Smith

unread,
Dec 16, 2015, 7:45:21 PM12/16/15
to
On Wed, 16 Dec 2015 16:00:02 +0000, Stefan Ram wrote:

> The word »object« in English is very vague. Does anyone have
> any idea why it was used in C to designate a region of storage?

Because, while conveying the same information, it sounds more
serious and educated than "thingy".


0 new messages