Jump to content

ObjVlisp: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Hetar (talk | contribs)
m Disamb. Link Repair via popups - You can help!
OAbot (talk | contribs)
m Open access bot: doi added to citation with #oabot.
 
(27 intermediate revisions by 14 users not shown)
Line 1: Line 1:
'''ObjVlisp''' is a 1984 object-oriented extension of [[Vlisp]]<ref name="Cointe1987">{{cite journal|last1=Cointe|first1=Pierre|title=Metaclasses are first class: The ObjVlisp Model|journal=ACM SIGPLAN Notices|volume=22|issue=12|year=1987|pages=156–162|issn=0362-1340|doi=10.1145/38807.38822}}</ref>–Vincennes LISP, a LISP dialect developed since 1971 at the [[Paris 8 University|University of Paris VIII – Vincennes]]. It is noteworthy as one of the earliest implementations of the concept of [[metaclass]]es, and in particular explicit (as opposed to implicit) metaclasses. In the ObjVlisp model, "each entity is an instance of a single class. Classes are instances of other classes, called metaclasses. This model allows for extension of the static part of OOL, i.e. the structural aspects of objects considered as implementation of abstract data types"<ref>{{cite book|last1=Ferber|first1=J.|title=Conference proceedings on Object-oriented programming systems, languages and applications - OOPSLA '89|chapter=Computational reflection in class based object-oriented languages|year=1989|pages=317–326|doi=10.1145/74877.74910|isbn=978-0897913331|s2cid=305719}}</ref>
'''ObjVlisp''' is a [[1984]] object-oriented extension of [[Vlisp]] with a [[Reflection (computer science)|Reflective]] architecture.


ObjVlisp provided a far more flexible metaclass model than that provided by earlier object-oriented languages, especially [[Smalltalk]]. In Smalltalk-80, whenever a new class is created, a corresponding metaclass is created automatically; it does not have a name independent of that of the metaclass for which it was created–metaclasses are implicit rather than explicit. By contrast, in ObjVlisp, it is possible to define named metaclasses, and when defining a class one must specify which named metaclass it will instantiate.<ref name="BriotCointe1989">{{cite book|last1=Briot|first1=J.-P.|title=Conference proceedings on Object-oriented programming systems, languages and applications - OOPSLA '89|last2=Cointe|first2=P.|chapter=Programming with explicit metaclasses in Smalltalk-80|year=1989|pages=419–431|doi=10.1145/74877.74921|isbn=978-0897913331|s2cid=15529194}}</ref>
["Metaclasses are First Class: The ObjVlisp Model", P. Cointe, SIGPLAN Notices 22(121):156-167 (Dec 1987) (OOPSLA '87)].


The explicit metaclass support in ObjVlisp influenced the provision of the same capability in the [[Common Lisp Object System]].<ref>{{cite book|last1=Graube|first1=Nicolas|title=ECOOP '88 European Conference on Object-Oriented Programming|chapter=Reflexive Architecture: From ObjVLisp to CLOS|volume=322|year=1988|pages=110–127|issn=0302-9743|doi=10.1007/3-540-45910-3_7|series=Lecture Notes in Computer Science|isbn=978-3-540-50053-7}}</ref>
{{FOLDOC}}


The ObjVlisp object model was later implemented in [[Prolog]] to produce [[ObjVProlog]].<ref name="MalenfantLapalme1991">{{cite journal|last1=Malenfant|first1=J.|last2=Lapalme|first2=G.|last3=Vaucher|first3=J.|title=ObjVProlog-D: a reflexive object-oriented logic language for distributed computing|journal=ACM SIGPLAN OOPS Messenger|volume=2|issue=2|year=1991|pages=78–81|issn=1055-6400|doi=10.1145/127070.127089|doi-access=free}}</ref><ref>"ObjVProlog: Metaclasses in Logic", J. Malenfant, ECOOP '89, Cambridge U Press 1989, pp.&nbsp;257–269</ref> Both [[Python (programming language)|Python]] and Converge implement a meta-class system that is equivalent of that of ObjVLisp.<ref>{{Cite web|url=http://tratt.net/laurie/blog/entries/metacircularity.html|title=Metacircularity|last=Tratt|first=Laurence|date=September 12, 2005|website=tratt.net|access-date=2017-07-21}}</ref><ref>{{Cite book|title=500 Lines or less|last1=DiBernardo|first1=Michael|last2=Brown|first2=Amy|date=2016|publisher=Lulu.com|isbn=9781329871274|location=[S.l.]|chapter=Chapter 14, A Simple Object Model|oclc=986953971|chapter-url=http://www.aosabook.org/en/500L/a-simple-object-model.html}}</ref>
[[Category:Programming languages]]

==References==
{{Reflist}}

[[Category:Object-oriented programming languages]]
[[Category:Lisp programming language family]]





Latest revision as of 17:56, 29 January 2023

ObjVlisp is a 1984 object-oriented extension of Vlisp[1]–Vincennes LISP, a LISP dialect developed since 1971 at the University of Paris VIII – Vincennes. It is noteworthy as one of the earliest implementations of the concept of metaclasses, and in particular explicit (as opposed to implicit) metaclasses. In the ObjVlisp model, "each entity is an instance of a single class. Classes are instances of other classes, called metaclasses. This model allows for extension of the static part of OOL, i.e. the structural aspects of objects considered as implementation of abstract data types"[2]

ObjVlisp provided a far more flexible metaclass model than that provided by earlier object-oriented languages, especially Smalltalk. In Smalltalk-80, whenever a new class is created, a corresponding metaclass is created automatically; it does not have a name independent of that of the metaclass for which it was created–metaclasses are implicit rather than explicit. By contrast, in ObjVlisp, it is possible to define named metaclasses, and when defining a class one must specify which named metaclass it will instantiate.[3]

The explicit metaclass support in ObjVlisp influenced the provision of the same capability in the Common Lisp Object System.[4]

The ObjVlisp object model was later implemented in Prolog to produce ObjVProlog.[5][6] Both Python and Converge implement a meta-class system that is equivalent of that of ObjVLisp.[7][8]

References

[edit]
  1. ^ Cointe, Pierre (1987). "Metaclasses are first class: The ObjVlisp Model". ACM SIGPLAN Notices. 22 (12): 156–162. doi:10.1145/38807.38822. ISSN 0362-1340.
  2. ^ Ferber, J. (1989). "Computational reflection in class based object-oriented languages". Conference proceedings on Object-oriented programming systems, languages and applications - OOPSLA '89. pp. 317–326. doi:10.1145/74877.74910. ISBN 978-0897913331. S2CID 305719.
  3. ^ Briot, J.-P.; Cointe, P. (1989). "Programming with explicit metaclasses in Smalltalk-80". Conference proceedings on Object-oriented programming systems, languages and applications - OOPSLA '89. pp. 419–431. doi:10.1145/74877.74921. ISBN 978-0897913331. S2CID 15529194.
  4. ^ Graube, Nicolas (1988). "Reflexive Architecture: From ObjVLisp to CLOS". ECOOP '88 European Conference on Object-Oriented Programming. Lecture Notes in Computer Science. Vol. 322. pp. 110–127. doi:10.1007/3-540-45910-3_7. ISBN 978-3-540-50053-7. ISSN 0302-9743.
  5. ^ Malenfant, J.; Lapalme, G.; Vaucher, J. (1991). "ObjVProlog-D: a reflexive object-oriented logic language for distributed computing". ACM SIGPLAN OOPS Messenger. 2 (2): 78–81. doi:10.1145/127070.127089. ISSN 1055-6400.
  6. ^ "ObjVProlog: Metaclasses in Logic", J. Malenfant, ECOOP '89, Cambridge U Press 1989, pp. 257–269
  7. ^ Tratt, Laurence (September 12, 2005). "Metacircularity". tratt.net. Retrieved 2017-07-21.
  8. ^ DiBernardo, Michael; Brown, Amy (2016). "Chapter 14, A Simple Object Model". 500 Lines or less. [S.l.]: Lulu.com. ISBN 9781329871274. OCLC 986953971.