Very interesting! One way of summarizing the historical points of greatest interest here:
Several researchers chose Self for their work on improving dynamic OO performance, which turned out to be applicable to other OO languages besides Self
Two of the Self developers went on to develop high performance runtimes for Smalltalk and then (much more famously) Java and JavaScript.
I’d always thought Self’s most impactful influence was on JavaScript (in the form of prototypal inheritance), but maybe its actual most impactful influence was as a language researchers liked to use for dynamic OO performance optimization.
Reading about these influential systems, I always wonder what they lacked that popular languages had. A marketing department that sold to business needs instead of developers? Random chance? Committed consumers instead of argumentative academics?
Smalltalk and Self both suffered from living in a VM that tried to deny the existence of the outside world. Successful languages benefit from ecosystems in other languages. Swift built on exiting Objective-C libraries, C++ had seamless C interop, C# and VB could import COM components, Python made it easy to wrap C components. The only recent exceptions to this are Java and JavaScript. The latter succeeded by being the only option in its domain. Java is a bit more interesting, since it failed in the Applet space where it was originally pushed but managed to displace COBOL for business-logic programming, largely due to IBM’s backing.
While I agree fully on Self, Smalltalks in the mid-90s that fully integrated with their environment existed and were quite popular. VisualWorks, Smalltalk/X, VisualAge Smalltalk, and even things like Pocket Smalltalk (for Palm OS) all integrated well with their operating systems and did not try to live in their own bubble at all. Most of those products died once Java came on the scene, leaving the FOSS implementations like Squeak (which 100% were antisocial islands), but blaming Smalltalk for being isolationist in the mid-90s when Java came out just isn’t quite right.
I think the secretly big thing about Java is a massive standard library including proper GUI things that … well they look ugly but you could build apps with it. There are so many things people get done in Java with very few-to-no dependencies.
Indeed. It will probably never gain popularity in its true form but I think the “closed off VM” approach is actually really interesting for recreational programming purposes.
Self ran on (expensive, niche) Sun workstations, not ordinary personal computers. I’m guessing that its memory requirements (due to all the JITted code) would have made it infeasible to port in the early 90s, when RAM still cost ~$100/MB and almost no PCs had more than 4MB.
Very interesting! One way of summarizing the historical points of greatest interest here:
I’d always thought Self’s most impactful influence was on JavaScript (in the form of prototypal inheritance), but maybe its actual most impactful influence was as a language researchers liked to use for dynamic OO performance optimization.
Self and Strongtalk both influenced modern VMs enormously. Hotspot started as a port of Strongtalk.
Yeah that was my takeaway from the article too. :)
Reading about these influential systems, I always wonder what they lacked that popular languages had. A marketing department that sold to business needs instead of developers? Random chance? Committed consumers instead of argumentative academics?
Smalltalk and Self both suffered from living in a VM that tried to deny the existence of the outside world. Successful languages benefit from ecosystems in other languages. Swift built on exiting Objective-C libraries, C++ had seamless C interop, C# and VB could import COM components, Python made it easy to wrap C components. The only recent exceptions to this are Java and JavaScript. The latter succeeded by being the only option in its domain. Java is a bit more interesting, since it failed in the Applet space where it was originally pushed but managed to displace COBOL for business-logic programming, largely due to IBM’s backing.
While I agree fully on Self, Smalltalks in the mid-90s that fully integrated with their environment existed and were quite popular. VisualWorks, Smalltalk/X, VisualAge Smalltalk, and even things like Pocket Smalltalk (for Palm OS) all integrated well with their operating systems and did not try to live in their own bubble at all. Most of those products died once Java came on the scene, leaving the FOSS implementations like Squeak (which 100% were antisocial islands), but blaming Smalltalk for being isolationist in the mid-90s when Java came out just isn’t quite right.
I think the secretly big thing about Java is a massive standard library including proper GUI things that … well they look ugly but you could build apps with it. There are so many things people get done in Java with very few-to-no dependencies.
Indeed. It will probably never gain popularity in its true form but I think the “closed off VM” approach is actually really interesting for recreational programming purposes.
WebAssembly is a closed off VM. The host determines which host functions will be available to a WebAssembly module.
Self ran on (expensive, niche) Sun workstations, not ordinary personal computers. I’m guessing that its memory requirements (due to all the JITted code) would have made it infeasible to port in the early 90s, when RAM still cost ~$100/MB and almost no PCs had more than 4MB.
It was not as easy to find out about new and cool programming languages in the late 80s. (source: was alive and programming at the time).