3 ms·
Self has an even bigger legacy, the JVM is basically all the technology that made Self fast ported over to Java. David Ungar pioneered not only Self and prototy
by j-pb 7y ago
Self has an even bigger legacy, the JVM is basically all the technology that made Self fast ported over to Java.
David Ungar pioneered not only Self and prototype based inheritance, but also generational garbage collection, and polymorphic inline caching.
Before Sun cannibalised the Self team into Java, it was actually slow as a snail.
Another fun fact, a reduced version of Self was used the programming language for most of the Apple Newton, because Dylan was taking too long to get off the Ground.
- evgen 7y agoHaving played with Self a bit before the Newton came out and then seeing it in NewtonScript, it was a very cool thing to watch the idea of system-wide prototype-based inheritance filter through the community. I think it was a bit too much for most people to grok, but the ability of a coder to modify only a few prototypes in the system soup to change the behavior of existing apps was absolutely amazing.
- jakear 7y agoContrast to nowadays where people mainly seem to view it as a source of bugs and security vulnerabilities. Which is true and reasonable, but a shame. I always like monkey-patching, at least in small personal projects. But if you want to distribute anything, you end up needing to go back and remove all of it. .
- jacobush 7y agoSomething similar in thought (but less generic), was the concept of "datatypes" in AmigaOS. It meant software could seamlessly import and export data in formats even though it had no knowledge of its internal representation. A word processor could include for instance PNG images even though PNG was not even invented when the word processor was created!
- thequux 7y agoUngar's thesis is one of the most magnificent tours de force it's ever been my pleasure to read. It's mostly a series of "Here's why this technique is impossible to implement efficiently, but never mind that; here's how we implemented it efficiently anyway."
- CalChris 7y agoYeah, it was very readable. It implemented the SOAR processor, Smalltalk On A RISC, which is credited by the Berkeley crowd as the RISC-III. https://www2.eecs.berkeley.edu/Pubs/TechRpts/1986/CSD-86-287.pdf https://www2.eecs.berkeley.edu/Pubs/TechRpts/1986/CSD-86-287... However, I don't think SPARC would be saddled with tagged integers were it not for SOAR.
- fanf2 7y agoThen Lars Bak (who worked on Self and HotSpot) used the techniques to make JavaScript fast with v8
- lioeters 7y agoThis is the second time this week I've seen Lars Bak mentioned. I'm so glad to have learned about his work on virtual machines, it's a direct line through the history of programming languages, from Self, Smalltalk, Java, V8 JavaScript engine, and Dart as well.
- cwzwarich 7y ago> Self has an even bigger legacy, the JVM is basically all the technology that made Self fast ported over to Java. Java only became fast after the HotSpot server compiler, which was written by Cliff Click (and Micahael Paleczny / Christopher Vick) and takes a different approach than Smalltalk / Self compilers.
- bonzini 7y agoCan you explain the differences?