As great as Smalltalk is, it is not without its weaknesses. Time to address the key issues…
Hiring and Staffing
It’s not difficult to find Smalltalk consultants who can help with business needs; this can often be a suitable workaround to staffing. I personally know of two local (to Ontario) software houses that specialize in Smalltalk consulting. One is Cherniak Software; the other is Simberon. Check your local area. Of course, these companies can serve clients anywhere; in the digital age, geography is usually not an issue.
Performance and Scalability
For situations where performance is definitely an issue, Smalltalk options exist. GemStone/S is the best-known among them. Smalltalk MT is a high-performance product for the Windows platform. Smalltalk/X is another option.
That said, I wouldn’t use Smalltalk for crunching big data or controlling nuclear reactors.
Libraries and Frameworks
Even in the absence of third-party class libraries, Smalltalk remains immensely useful, thanks to the rich classes that come with each dialect.
As for server-side web frameworks, there are really only two options: Seaside and Aida/Web. Seaside is easily the most popular of the two, and for good reasons. Is there really a need for dozens of different frameworks like you find in Java and PHP?
Due to the nature of the Smalltalk environment, it is not practical to use the conventional file-based toolchains that many developers know and love. Thankfully, the Smalltalk community has built up an impressive set of tools over the years and the Pharo Project continues to push the envelope in this regard. Moreover, Smalltalk is now well-supported in Github and other source control systems.
A common complaint is that the Smalltalk environment does not have a good text editor. This is true. However, it’s mitigated by the fact that in Smalltalk, methods tend to be rather small (10-30 LOC). When editing such small parcels of code, a mammoth editor like emacs is surely overkill.
Nevertheless, there are exciting new developments coming in the way of IDEs. One of the most notable is Moose Technology. Check it out.
Our industry seems to be hung up on “C-like” languages. By this, I mean things like using braces as block delimiters, or conventional arithmetic precedence instead of prefix/postfix/Smalltalk-style notation. The theory is that having familiar syntactical elements lowers the barrier to entry.
Smalltalk’s syntax is indeed different from that of C-like languages, but the same can be said for Python, Ruby, Delphi, Haskell, and Clojure, all of which have gained substantial followings. Having an unfamiliar syntax is surely no impediment to learning a language. And the fact is, there is so much more to a language than just a handful of superficial syntactical elements.
Throughout most of my career, I was immersed in C-like languages (C, C++, C#, Java, Objective-C). And yet, I have never had a problem picking up FORTRAN, Tandem TAL, Smalltalk, and Python. In fact, learning these languages was fun! What I’m saying is, this is very much a matter of attitude, and not a cognitive challenge.
Enough Rope To Hang Yourself
Smalltalk’s programming environment makes available the entire class hierarchy for your application, including the core classes of Smalltalk. Arguably, this is very dangerous, as you can modify the foundational classes and consequently get into a lot of trouble.
However, access to the core classes is intended to help you understand your software. It is not a green light for you to tweak or alter the foundation. The solution lies in strict project discipline, which requires competent managers. The truth is, if you don’t have competent project management, you have a lot more problems than a programming environment that is too open.
No Corporate Master
In the past, growing a language from grassroots was a hit-and-miss affair. Today, a new programming language really needs a boost from corporate sponsorship in order to compete. Java had Sun, and now Oracle. C# had Microsoft. Swift has recently risen to prominence thanks to Apple. Go gets a boost from Google. Microsoft is now pushing F# and TypeScript, while Google has just introduced AtScript. Mozilla is behind Rust.
Having a corporate backer confers enormous benefits. For starters, it raises the public profile of the language which is vital from the marketing standpoint. Corporate funding can help develop the language much more quickly. Businesses feel more confident about using a language with strong backing. And a thriving ecosystem will always rally behind a major leader.
Smalltalk once had corporate backers such as ParcPlace and IBM, but through their ineptitude and naiveté they squandered their opportunity. We need a new backer today.