Alan Kay, one of the co-creators of Smalltalk, has said that he’d like to see Smalltalk evolve beyond what it is today. He believes that Smalltalk is stagnating and failing to advance the software industry. While I agree with him in principle, I also take a more pragmatic position. I believe that we cannot wait for this mythical new programming language and that we must use whatever we have available today because the software industry is in crisis. The demand for more and better software created in a timely manner is continually increasing and it’s causing considerable stress for programmers and users alike.
At the moment, there is only one programming language that has any hope of meeting this demand. I do not posit this lightly nor frivolously. Here are the key reasons why Smalltalk is perfectly suited to this mission…
Smalltalk has a great and storied history.
A programming language ideally should command respect, and there’s no better way to do this than by demonstrating a wonderful record of achievements. History matters.
Smalltalk pioneered the language virtual machine and JIT compilation. It created the world’s first modern IDE. It introduced the MVC architectural pattern. It pioneered TDD (test-driven development) and XP (extreme programming). It made live coding easily accessible. It pioneered the development of object-oriented databases. It created the world’s first refactoring browser. It was instrumental in developing GUI and WYSIWYG.
It influenced the design of Objective-C, Ruby, Java, PHP, Perl, Python, Groovy, Scala, Dart, and other languages.
It popularized object-oriented programming starting with the now-iconic cover of BYTE magazine.
Smalltalk has a proven track record.
Smalltalk has been used in the enterprise for more than three decades. In the 1990s, it achieved the second highest object-oriented market share in the world after C++. IBM even chose Smalltalk as the centrepiece of their VisualAge enterprise initiative.
Today, there are three major Smalltalk vendors with thousands of enterprise users around the globe: Cincom, Instantiations, and GemTalk Systems. Many of these enterprise users are big names in the financial industry, manufacturing sector, shipping, utilities, etc., for example, JP Morgan, Desjardins, UBS, Florida Power & Light, Texas Instruments, Telecom Argentina, Siemens, and COSCO.
Smalltalk is incredibly simple and easy to use.
It’s even simpler and easier than Python! The syntax is as simple as you can imagine. It fits on a post card!
Smalltalk is extremely flexible and versatile.
Smalltalk has developed an extensive ecosystem. In the web space, you have the Seaside and Teapot web frameworks, and Amber and PharoJS for front-end development. In data science and machine learning, you have the PolyMath library, Roassal data visualization, and language bindings for TensorFlow and Keras. For Internet of Things, you have the PharoThings platform. For robotics, you have the PhaROS platform. Smalltalk is great for virtual reality!
Smalltalk is the most productive programming language in the world.
Smalltalk’s remarkable live coding capability plays a critical role here. Only two other significant languages support live coding: Forth and Lisp. But Smalltalk makes its very easily accessible.
Smalltalk is infinitely scalable.
Thanks to its pure object-oriented model which views the Smalltalk environment as a sort of “software internet,” applications can grow in a manner resembling the Internet. It has also been likened to biological systems of cells.
Any new programming language, no matter how superior to Smalltalk, would lack history, a track record, an ecosystem, a user base, and mindshare. Marketing the language would face an uphill battle and growing the language’s mindshare would take a considerable amount of time.
Meanwhile, we wait and we wait and we continue fighting a backlog of software that demands to be written.
There are newer languages that compete with Smalltalk, such as Dart, Go, Julia, Kotlin, Rust, Scala, Swift, TypeScript. Some are very large and complex (Kotlin, Rust, Scala, Swift, TypeScript). Some are used in narrow domains (Julia, Rust, Swift, TypeScript). None are as simple and easy as Smalltalk. None are as productive and scalable. None support live coding. None are as elegant.
So, really, the best choice we have today is Smalltalk. It comes in various flavours to meet various needs:
- Instantiations’ VA Smalltalk for enterprise markets
- Cincom’s VisualWorks for enterprise markets
- GemTalk Systems’ GemStone/S for high-volume, high-availability transaction processing
- Pharo for open source requirements
- Squeak for the education market
Is there really a need for a successor?