Where Is Smalltalk Weak?

by Richard Kenneth Eng

As great as Smalltalk is, it is not without its weaknesses. Time to address the key issues…

Hiring and Staffing

Smalltalk does not yet have a large user base compared to, say, Java or JavaScript. Hence, the pool of talent to hire from is more limited. As people start to use Smalltalk in greater numbers, this issue will eventually resolve itself, but until then, businesses will need to be a bit more patient in searching for talent.


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

Smalltalk execution is generally slower than in many languages, such as Java, JavaScript, and C++. It’s comparable to Python, Ruby, Perl, and PHP, however. Like these last four, for most situations (such as industrial and financial applications), performance is not an issue. This is evidenced by the many success stories at Cincom, Instantiations, GemTalk, and software houses such as Cherniak Software. Enterprise users abound. If Smalltalk applications could not scale, then the above-mentioned businesses would fall flat on their faces.

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

There aren’t many third-party Smalltalk class libraries available. This is largely due to the lack of a language standard. However, for specific dialects and platforms, there are opportunities to use other language libraries. For example, Redline Smalltalk runs on the JVM and provides easy access to the huge collection of Java libraries. Moreover, imported Java classes can be treated just like Smalltalk objects! Another example: Amber Smalltalk offers ridiculously easy access to a vast number of JavaScript libraries. Similarly, Essence# opens the .NET ecosystem to its flavour of Smalltalk. And most Smalltalks give you access to C libraries.

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.

Unusual Syntax

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.


One thought on “Where Is Smalltalk Weak?

  1. Nice to hear a reality check. No system is good at everything.

    > 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.

    I wouldn’t go as far as to say its “very dangerous”. It is merely dangerous. When I first started Pharo I shot myself in the foot a few times, but after hopping around on the other foot for a while, it was easy to learn what pitfalls to avoid. Now the benefit is you are able to gain mastery over the system – turtles all the way down.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s