3 ms·
Smalltalk influenced nearly every object-oriented language that came after it, by virtue of heavily influencing Lisp. The precursor to Common Lisp's Object Sys
by retrac 4y ago
Smalltalk influenced nearly every object-oriented language that came after it, by virtue of heavily influencing Lisp. The precursor to Common Lisp's Object System (CLOS) [1] comes rather directly after MIT Lisp hackers [1] encountered Smalltalk in the late 70s.
Lisp probably counts as the first major language to have OOP, and along with Smalltalk, was the language that introduced OOP to the wider programming world. Bjarne Stroustrup knowing about Simula (which was always a little esoteric) and trying to turn C into a Simula-like language, is more the exception. Most OOP languages today can trace their OOP heritage to CLOS.
[1] https://en.wikipedia.org/wiki/Common_Lisp_Object_System https://en.wikipedia.org/wiki/Common_Lisp_Object_System
[2] https://en.wikipedia.org/wiki/Flavors_(programming_language) https://en.wikipedia.org/wiki/Flavors_(programming_language)
- davidgay 4y ago> Most OOP languages today can trace their OOP heritage to CLOS. I'm extremely dubious about this claim and cannot think of any mainstream OO language this applies to (clearly not C++, Java or C#, nor of course Smalltalk, hence neither Objective-C nor Self nor Javascript). For further context: I learned about programming languages, did programming language research starting in the early 90s. CLOS, and multiple-dispatch especially were always a significant outlier.
- lispm 4y agoThere are a bunch of different OOP mainlines. Some have early Lisp influence, long before CLOS. Some are more or less completely without Lisp influence. Simula, Object Pascal, C++, c#, ... (class based OOP with virtual functions) Smalltalk (message passing, classes) Lisp/CLOS (generic functions) -> Dylan, Perl, Julia, R, ... Actors, Self, JavaScript, ... (Prototypes) ....
- pjmlp 4y agoNot really, Smalltalk was influenced by the work being done to add OOP to Interlisp-D at Xerox PARC, LOOPS. https://interlisp.org/saved.html#history https://interlisp.org/saved.html#history Besides Common Lisp, the only languages that have anything on their object model that resembles CLOS are Dylan, Clojure and now Julia.
- lispm 4y agoR, Perl and Raku, various Scheme variants use it.
- pjmlp 4y agoSince when does Perl 5 use CLOS? Regarding R and Raku I cannot say anything, but the CPAN package for OOP extensions I used back in 2000's wasn't it.
- lispm 4y agoIt's not about using CLOS, since that is Lisp specific and the full thing incl. MOP is largish. But Moose is largely influenced by CLOS. https://www.perl.org/about/whitepapers/perl-object-oriented.html https://www.perl.org/about/whitepapers/perl-object-oriented.... some comment here on Hackernews : "Moose is back-ported Perl6 objects, which borrows heavily from CLOS and the concepts introduced in the Smalltalk traits paper. This is a bit of a simplification of the history, but the ancestry is present, documented and obvious."