📚 OpenRCE is preserved as a read-only archive. Launched at RECon Montreal in 2005. Registration and posting are disabled.








Flag: Tornado! Hurricane!

Blogs >> sp's Blog

Created: Monday, June 19 2006 19:12.18 CDT Modified: Monday, June 19 2006 19:12.18 CDT
This is an imported entry. View original. Printer Friendly ...
The origin of the term class
Author: sp # Views: 1257

Today I spent a few hours trying to find out the origin of the term class known from object-oriented programming. I wanted to find out who invented the term, in what paper the term was first introduced and what the term actually means.

My own little theory has always been that the term class has something to do with equivalence classes from set theory. Its probably not right, but I like the idea that the types of classes in a program partition the set of all possible types in a program kinda like equivalence classes partition a set. Yeah, I know that this is not thought all the way through.

Anyway, I failed to find the origin of the term but I think I came reasonably close. After reading through 20 years of comp.object and through several papers from the 60s and 70s heres what I found out.

Lets start with the paper "The development of the SIMULA languages" written by the SIMULA designers Kristen Nygaard and Ole-Johan Dahl. It was published in ACM SIGPLAN Notices, Vol. 13, No.8 in August 1978. The paper, which gives a brief history of the SIMULA languages, contains the following paragraph.

A declaration giving rise to a class of objects might well have been called an "object class" (in analogy with Hoares record class). In choosing the shorter term "class" we felt that we had a good terminology which distinguished clearly between the declared quantity (the class) and its dynamic offspring (the objects). Our good intentions have not quite worked out, however. Many users tend to use the term "class", or perhaps "class instance", to denote an object, no doubt because "object" does not occur as a reserved word of the language. (As an afterthought, anno 1978, we might have insisted that all class declarations must be prefixed, and defined a primitive outermost prefix "object" containing detach and resume as local procedures. See also (Wang and Dahl 1971)).

From what I read elsewhere Nygaard and Dahl possibly used the term class the first time in the "Class and subclass declaration", paper they presented at the IFIP Working Conference on Simulation Programming Languages, Oslo 1967.

Anyway, we learn that the term class was inspired by A._R._Hoare">A._R._Hoare" onmouseover="window.status=http://en.wikipedia.org/wiki/C.A._R._Hoare;return true;" onmouseout="window.status=;return true;">C.A.R. Hoares term "record class". That term was introduced by Hoare two years earlier, in November 1965. I believe the relevant paper is "Record Handling", published in ALGOL Bulletin (Issue 21). Heres where the term is introduced.

Each record in the computer must belong to one of a limited number of disjoint record classes; the programmer may declare as many record classes as he requires, and he associates with each class an identifier to name it. A record class name may be thought of as a common generic term like "cow", "table" "house", and the records which belong to these classes represent the individual cows, tables and houses with which a particular activation of a program is concerned. It is obvious that no object can be both a cow and a table, so it is quite natural to insist that every record shall belong to one and only one class.

Sounds promising. But a few pages further down theres the following brief note.

The availability of ambiguous references fulfills a similar function to McCarthys proposed class union declaration from which the idea has been taken.

So
%28computer_scientist%29">
%28computer_scientist%29" onmouseover="window.status=http://en.wikipedia.org/wiki/John_McCarthy
%28computer_scientist%29;return true;" onmouseout="window.status=;return true;">John McCarthy used the term "class union" before. This might be relevant. Maybe Hoares use of the word class comes from there. Unfortunately I cant find anything of value about this term. Especially not from McCarthy.

This is where my little search ends for now. Apparently Nygaard, Dahl, Hoare and possibly McCarthy were co-creators of the term class. Maybe the etymology of the term is even more complex, depending on what McCarthys class unions are. Maybe Ill find out one day.


If you wish to comment on this blog entry, please do so on the original site it was imported from.

There are 31,328 total registered users.


Recently Created Topics
[help] Unpacking VMP...
Mar/12
Reverse Engineering ...
Jul/06
let 'IDAPython' impo...
Sep/24
set 'IDAPython' as t...
Sep/24
GuessType return une...
Sep/20
About retrieving the...
Sep/07
How to find specific...
Aug/15
How to get data depe...
Jul/07
Identify RVA data in...
May/06
Question about memor...
Dec/12


Recent Forum Posts
Finding the procedur...
rolEYder
Question about debbu...
rolEYder
Identify RVA data in...
sohlow
let 'IDAPython' impo...
sohlow
How to find specific...
hackgreti
Problem with ollydbg
sh3dow
How can I write olly...
sh3dow
New LoadMAP plugin v...
mefisto...
Intel pin in loaded ...
djnemo
OOP_RE tool available?
Bl4ckm4n


Recent Blog Entries
halsten
Mar/14
Breaking IonCUBE VM

oleavr
Oct/24
Anatomy of a code tracer

hasherezade
Sep/24
IAT Patcher - new tool for ...

oleavr
Aug/27
CryptoShark: code tracer ba...

oleavr
Jun/25
Build a debugger in 5 minutes

More ...


Recent Blog Comments
nieo on:
Mar/22
IAT Patcher - new tool for ...

djnemo on:
Nov/17
Kernel debugger vs user mod...

acel on:
Nov/14
Kernel debugger vs user mod...

pedram on:
Dec/21
frida.github.io: scriptable...

capadleman on:
Jun/19
Using NtCreateThreadEx for ...

More ...


Imagery
SoySauce Blueprint
Jun 6, 2008

[+] expand

View Gallery (11) / Submit