Smalltalk is not just a programming language
Mark Miller reminded me today that Smalltalk is not just a programming language. This is the problem that most programmers have when they view Smalltalk: they see it in the same light as other more conventional languages, like Java, Python, C++, Ruby, etc.
Virtualized Operating System
Smalltalk is more than just a language. It’s an operating system or execution platform. It shares much in common with a virtualized operating system running under VMware or VirtualBox. Smalltalk’s image is no different from a Linux system image or a Windows system image.
When you run a Smalltalk application, it runs in the Smalltalk image. This is just like if you ran Photoshop in a Windows image, or GIMP in a Linux image.
And just like in a VirtualBox system image, you can save the complete execution state of Smalltalk and resume execution later on from exactly where you left off! That is very cool and convenient.
The benefit of the Smalltalk image approach is that your software is totally portable across many different platforms like Windows, macOS, Linux, Android, even mainframes!
The Power of Direct Manipulation
Smalltalk is also an entirely new way to develop software. It provides a programming environment that is fully integrated with the virtualized operating system. Moreover, this programming environment fully supports live coding and debugging, giving you a very close and tight connection with your code.
The benefits are: 1) you get immediate feedback from code changes to your application, and 2) you practically eliminate the traditional and time-consuming edit-compile-test-debug cycle. Smalltalk offers the closest thing to direct manipulation of your program while it’s running!
The power of direct manipulation is best explained in Bret Victor’s seminal talk, “Inventing on Principle”:
Summary
As you can see, Smalltalk programming is nothing like what you’re used to in other languages like Java and Python and C++. New and different, however, isn’t necessarily bad.
Smalltalk is an entirely new way to develop software.
What does Smalltalk buy you for this complete change in programming mindset? In a word: productivity. Smalltalk offers you an extremely high velocity of development. This has been known for many years, anecdotally, but also scientifically. According to this Namcook Analytics study (Table 16, measured by “economic productivity” in terms of number of work hours to deliver 1,000 function points), Smalltalk is up to 2–3X more productive than any of the major programming languages like:
- JavaScript — 15,929
- C++ — 12,697
- Go — 12,697
- Java — 12,697
- PHP — 12,697
- Python — 12,697
- C# — 12,309
- Ruby — 11,312
- Perl — 9,465
- Objective-C — 7,848
- Visual Basic — 7,848
- Smalltalk — 6,879
What is this kind of productivity worth to you? How much time and money can you save?
If “time to market” matters to you, then there is no better choice than Smalltalk, which is why it has been a favourite “secret weapon” used by many companies around the world to outflank their competitors. Well, now the secret is out!