Mark Twain once quipped in 1897 that, “The report of my death was an exaggeration.”
For many years, Smalltalk has been written off as a dead language. One of the most controversial examples of this was a talk given by Robert C. Martin (“Uncle Bob”) at RailsConf 2009.
With this year’s celebration of the 50th anniversary of Smalltalk, I felt it was appropriate to review this talk and correct some of the misconceptions and misunderstandings stemming from it.
The big takeaways from his talk are:
- Smalltalk makes it too easy to make a mess of software.
- Smalltalk ignores the enterprise.
Let’s look at the second point first. From its first years after being released to the public as a full-fledged development platform (Smalltalk-80), Smalltalk had been commercialized to serve the enterprise market. It gained such importance in the enterprise market that IBM was incentivized to adopt Smalltalk as the centrepiece of its VisualAge enterprise initiative.
In fact, Smalltalk became a significant competitor to C++. Here’s a page from Computerworld showing Smalltalk and C++ duking it out:
According to a 1995 IDC report, Smalltalk had the second largest OOP language market share:
- C++ — 71.3%
- Smalltalk — 15.1%
- Objective-C — 5.7%
- Object Pascal — 4.2%
- CLOS — 2.5%
- Eiffel — 1.1%
- all others — 0.2%
Today, there are three major Smalltalk vendors serving the enterprise market: Cincom, Instantiations, and GemTalk Systems. In one form or another, these companies have been around for decades. Since Bob Martin’s talk, they’ve greatly improved their interoperability with the enterprise.
Now, regarding the claim that Smalltalk makes it too easy to make a mess of software, this is patently false. I’ve used many languages in my career and I’ve seen enormous messes written in FORTRAN and C++. Any language can be abused.
The key to avoiding a mess is good project management. No language can save you if you have a bad manager. It is a manager’s responsibility to ensure proper discipline.
Another takeaway from the talk is the growing recognition that the dynamic quality of languages like Smalltalk and Ruby is valuable. This quality is seeping into static languages like Java, C#, and C++.
However, the elegance and harmony found in Smalltalk should not be underestimated. Smalltalk makes dynamism much easier and more convenient. The low cognitive load of Smalltalk programming is a pearl without price.
The Ossification of the Software Industry
Bob Martin posited that lack of discipline was why Smalltalk fell out of favour. I disagree.
He was right about the other common reasons cited:
- The software industry was so acclimated to file-based development, with files containing long reams of code, that it couldn’t appreciate the benefits of image-based development and couldn’t adapt to a different style of programming.
- The stiff licencing fees for Smalltalk was a major impediment.
- The Smalltalk vendors of the day were in chaos and fighting among themselves.
The high productivity of Smalltalk development should convince any reasonable programmer to consider switching, to try and overcome their resistance.
Today, Smalltalk is making something of a comeback in the open source Pharo derivative. This is an enterprise-grade language that has been innovating by leaps and bounds since its creation in 2008. Things like Roassal and Glamorous Toolkit highlight the amazing advances in the Smalltalk world.
This talk gives a pretty decent coverage of Pharo:
Toronto Metropolitan University is doing leading Pharo research with things like PharoJS and PharoJVM. Pharo is web-ready with frameworks like Seaside and Teapot. Pharo is good for AI and machine learning (via TensorFlow and Keras). Pharo is good for IoT. Pharo is good for robotics. Pharo is good for augmented and virtual reality (also 3D ICC).