A common criticism about Smalltalk in the modern age is that the language is not adapting to the latest language research, which is pursuing things like multi-core concurrency and type system safety. Mozilla’s Rust language is often trotted out as a prime example.
Moreover, Smalltalk has been continually evolving for many years, as evidenced by numerous dialects that experiment with new features. The Pharo Project continues this tradition. However, one important point must be made: if Smalltalk changes too much, it will no longer be Smalltalk. The beauty of Smalltalk lies in its simplicity and elegance. Tacking on too many major new features will complicate the language and detract from this quality.
The world doesn’t need more complicated languages; it needs simpler languages. That’s the trend we’ve been seeing in recent years, e.g., in Go and Dart. The idea that piling on new features will solve our development woes is misguided. Simple languages that can be easily mastered, in combination with sound project management, will go a lot further than arcane features. I am not convinced that Rust, or any of its ilk, will ever become mainstream. I still remember the hype that surrounded Ada in the 1980s. It was supposed to provide all kinds of safety guarantees. But Ada never achieved significant popularity.
I am bemused by the spate of new programming languages that have popped up over the past 20 years. Very few of them have incorporated new concepts. For the most part, they are merely shuffling around different sets of language features in pursuit of some mythical software engineering advantage. They are basically chasing after their own tails.
For example, Python and Ruby doesn’t really add anything new that wasn’t already in Smalltalk. Dart has type annotations, a feature of questionable value that in the best case hardly upends conventional development practices. Such incremental changes will change nothing in the large. The proliferation of new languages is really a silly exercise in futility.
While Smalltalk is technically of the past, its image-based, “live” development environment has still not been surpassed by all the latest IDEs such as Eclipse, IntelliJ, and Visual Studio. Smalltalk maintains a huge productivity advantage because its tools are simpler, easier to use, and at their roots incredibly powerful. I have always been put off by the complexity of Eclipse and Visual Studio.
So with these two advantages – language simplicity and powerful environment – Smalltalk can still find a place in modern software engineering. It may not push aside Java, but it can certainly carve out a healthy portion of the market.