3 ms·
Not necessarily CS object-oriented, but Aristotle's 'mathematical objects' discussed in Metaphysics demonstrates that the idea has been around for some time. As
by dleeftink 3y ago
Not necessarily CS object-oriented, but Aristotle's 'mathematical objects' discussed in Metaphysics demonstrates that the idea has been around for some time. As for CS, a discussion recorded by Randell & Russell in 1961 with Edsger Dijkstra[1] mentions the 'Object Program'.
[1]: http://homepages.cs.ncl.ac.uk/brian.randell/Papers-Articles/34.pdf http://homepages.cs.ncl.ac.uk/brian.randell/Papers-Articles/....
- Rochus 3y agoThanks. But I really mean "object-oriented", which has a (quite) specific meaning in CS; there are a lot of uses of the term "object" even in CS, with different meanings. The referenced report [1] from 1961, as far as I understand, uses the term "object program" for the output of the Algol compiler, something we call "object file" today; this use of the term seems to have been common in the sixties; e.g. in the book "ALGOL 60 IMPLEMENTATION" (https://dl.acm.org/doi/10.5555/1095699 https://dl.acm.org/doi/10.5555/1095699) from 1964 we can read on page 8 "An ALGOL translator is a program which takes as its input the coded representation of an ALGOL source program and produces as its output an object program (which may or may not be in machine code)". Only Simula 67, which is an extension of Algol 60, was object-oriented, but its authors didn't use the term back then.
- dleeftink 3y agoI'll keep digging, but it seems to have taken off sometime early 60's and further popularised by Kay. Although with 'structured programming' and 'object programs' already in use at the time (different concepts I know, but preceding OOP), the first journal mention may postdate the phrase by some years during this transition.
- dleeftink 3y agoBoth Dahl et al.'s Simula as you mentioned (1968)[1] and J.H. Morris (1968; 9-10)[2] allude to it without explicitly mentioning OO by name, following earlier mentions of atomics by Fox et al. (1960)[3]. If you need something more explicit, I'll try to do some more digging tomorrow in architecture diagrams and lecture notes. 1: https://repository.lib.ncsu.edu/bitstream/handle/1840.4/5681/1968_0007.pdf https://repository.lib.ncsu.edu/bitstream/handle/1840.4/5681... 2: https://dspace.mit.edu/bitstream/handle/1721.1/149376/MIT-LCS-TR-057.pdf https://dspace.mit.edu/bitstream/handle/1721.1/149376/MIT-LC... 3: http://history.siam.org/sup/Fox_1960_LISP.pdf http://history.siam.org/sup/Fox_1960_LISP.pdf
- Rochus 3y ago> allude to it without explicitly mentioning OO by name Right, that's the point; they were talking about classes and objects; the term "inheritance" was not yet used ("prefix" instead), neither the term "object-oriented"; it was a completely new paradigm and the terminology had first to be developed. Kay in his 1993 paper claims that he called his approach, as manifested in Smalltalk-72, "object-oriented". So I would expect publications to use the term after 1972. As I said I found it in Ingall's 1978 (written end of 1977) paper. Concerning your reference 3 (Lisp) the term "object" is apparently used to refer to atomic symbols; Lisp entered the OO age with Flavors, CommonLoops and CLOS in the eighties.
- lispm 3y agoIn Lisp (and similar) sometimes the term object is used, since it's not the variable that's important, but the data object which is returned from a function and which has an identity. A symbol has by definition an entity. A symbol also has a property list, which is a mutable storage with keys and values. Since knowledge representation was an early topic, using property lists was not unusual. Then various forms of procedural invocations were tried. For example 'access oriented' style was by invoking functions (if-needed, if-added, if-removed, ...) when a slot was accessed. So-called slot-demons. That lead to frame systems, like FRL from 1977. Using a property list for key/values : CL-USER 21 > 'bladerunner BLADERUNNER CL-USER 22 > (setf (get 'bladerunner 'is-a) 'movie) MOVIE CL-USER 23 > (push 'harrison-ford (get 'bladerunner 'actors)) (HARRISON-FORD) CL-USER 24 > (push 'sean-young (get 'bladerunner 'actors)) (SEAN-YOUNG HARRISON-FORD) CL-USER 25 > (push 'rutger-hauer (get 'bladerunner 'actors)) (RUTGER-HAUER SEAN-YOUNG HARRISON-FORD) CL-USER 26 > (symbol-plist 'bladerunner) (ACTORS (RUTGER-HAUER SEAN-YOUNG HARRISON-FORD) IS-A MOVIE) For example "SIR: a computer program for semantic information retrieval" by Bertram Raphael, 1964: https://dspace.mit.edu/handle/1721.1/6904 https://dspace.mit.edu/handle/1721.1/6904 Page 45: "The model in SIR is based largely upon the use of description-lists. A description-list is a sequence of pairs of elements, and the entire list is associated with a particular object. The first element of each pair is the name of an attribute applicable to a class of objects, and the second element of the pair is the value of that attribute for the object described." There we already see the terms used: OBJECT, CLASS, ATTRIBUTE, VALUE Then he introduces the "is" set-inclusion relation. There is also a part-whole relationship. And more... 'basic objects' are words. Later research then added the idea of procedure invocations by various means.
- dleeftink 3y agoA direct reference to program closures in relation to 'abstract object languages' can be found on page 92 of Landin (1965)[1]. 1: https://dl.acm.org/doi/pdf/10.1145/363744.363749 https://dl.acm.org/doi/pdf/10.1145/363744.363749
- Rochus 3y agoLandin seems to use the term "abstract object language" for what we would call a "core language" today, which he used to decribe Algol "from first principles"; this is not the same thing as "object-oriented".
- dleeftink 3y agoTrue, but the closure concept does appear alongside it. Are you chasing the etymological or conceptual origin of the phrase?
- Rochus 3y agoA closure is a separate concept from OO; you can have OO languages with or without closures. I am looking for the first CS publication that literally used the term "object-oriented". The conceptual origin of OO is well known and documented in CS literature.