Anyone interested in prototype-based languages should also checkout io [1], which is a really clever implementation that doesn't get enough love. And unlike Self it will work with your favorite teletype emulation environments.<p>[1] <a href="https://iolanguage.org/" rel="nofollow">https://iolanguage.org/</a>
Really nice explanation. Having read almost all papers on this endless debate "Classes vs Prototypes" you'd get a feeling that prototype-based object system wins in any aspects (expressiveness, flexibility, whatever), and yet almost all prototype-based languages in the end include crude class implementations (as Class for a signle namespace to contain all related traits, constructor method and/or prototypical instance for cloning) - interesting, why so? Is this model ingrained in our brains by our education or we do really think that way (i.e. with sets of related entities).
I really like Perl's setup where objects are nothing more than namespaces/packages (usable and helpful in non-oo Perl) and one function...bless()[1].<p>It makes it very easy to follow exactly how the OO works, what it is, and is not.<p>[1] <a href="https://perldoc.perl.org/functions/bless.html" rel="nofollow">https://perldoc.perl.org/functions/bless.html</a>
I learned the object model of Smalltalk at university and after that I couldn't take most class based OOP languages seriously anymore.<p>Everything felt like a hack.<p>Protoypical OOP was the only savior left, haha.
Very nice article. It seems most developers don't likes how prototype based object model works in JS. I wonder how Javascript object system compare to Self, or similar language IO?