There are many programming languages today vying for your consideration, especially the “hot” (or “cool!”) new languages like Ceylon, Crystal, Dart, Elixir, Elm, Go, Haxe, Julia, Kotlin, Rust, Swift, TypeScript. And new ones seem to be popping up every month!
Even some of the not-so-new languages are grabbing attention, languages like Clojure, Erlang, F#, Haskell, Lua, OCaml, Scala. Some of these languages are decades old!
So it got me wondering: What makes a programming language, regardless of age, trendy and exciting? Why does 27-year-old Haskell still get tongues wagging? How can 31-year-old Erlang instill passion after all these years? What’s with the love for 24-year-old Lua? F# is still talked about fondly, even though it has 12 years of history behind it.
Of course, one of the main reasons is the growing interest in functional programming over the past several years. Thus, people are examining all of their functional options, including languages that predate Java (which often gets unfairly labelled as old and senescent).
Erlang is notable for OTP (Open Telecom Platform) and its Erlang runtime system (BEAM), which makes Erlang remarkable for writing distributed, fault-tolerant applications.
Clojure capitalizes on the power and elegance of Lisp. Lua is popular in the game industry as an embeddable language. Kotlin and Scala attempt to improve on Java, the most popular programming language on the planet.
So it would seem that these languages are trendy for various reasons. Except for functional programming, there really isn’t a pattern. Even 7-year-old Go has risen to the top of the language charts by virtue of being simple and minimalist, without any language design innovation whatsoever!
Then how do we explain the fact that Smalltalk gets so little attention today? It has everything going for it…
- Smalltalk is one of the smallest, simplest, and most elegant programming languages ever created. Its entire syntax can fit on the back of a postcard! This makes Smalltalk very, very easy to learn. And because of this, Smalltalk presents extremely low, if not nonexistent, cognitive friction while coding. You don’t have to give the language a second thought; you just focus on the problem at hand.
- Smalltalk has a wonderful “live coding and debugging” IDE/runtime environment that makes programming exceedingly quick and productive. You can make live changes to a running program and immediately see the results. This almost completely eliminates the edit-compile-test-debug cycle that hampers nearly all other programming languages. And it’s wonderfully easy to use. There is nothing else quite like it in the modern programming world.
- Despite its relative obscurity, Smalltalk is an eminently practical industrial language! It’s been used commercially for over three decades. Its well-known users include the likes of JPMorgan, Desjardins, UBS, Florida Power & Light, Texas Instruments, Telecom Argentina, Orient Overseas Container Lines, Siemens AG, and so on. Check out ALLSTOCKER and ATMs in Moscow streets.
- Smalltalk is scalable. In the early 2000s, the U.S. joint military used Smalltalk to write a million-line battle simulation program called JWARS. It actually outperformed a similar simulation called STORM written in C++ by the U.S. Air Force.
- Smalltalk has a rich heritage. It was the first programming language to popularize OOP, and it remains the finest example of an OOP language (which is why it spawned a whole generation of OOP languages like Java, Python, PHP, Ruby, Perl, Objective-C, CLOS, Dart, Scala, Groovy, etc.). Smalltalk is OOP done right.
- Smalltalk continues to be actively developed, especially through the Pharo project and Inria. And through Amber for the web and Redline for the JVM. Smalltalk has been modernized for the Twenty-First Century.
- By the way, Smalltalk also has first-class functions and closures, so it’s good for functional programming, too!
Smalltalk is extremely versatile (being a general-purpose programming language and all):
- Smalltalk is good for data science and numerical computing, thanks to PolyMath and Roassal (also see Numerical Methods with Pharo)
- Smalltalk is good for Internet of Things and robotics (example, Pharo Pi and ESUG on robotics)
- Smalltalk is good for ERP (enterprise resource planning)
- Smalltalk is good for machine learning and neural network processing
- Smalltalk is good for natural language processing
- Smalltalk is good for virtual reality (example, 3D Immersive Collaboration)
- Smalltalk can even be used to script the Unreal game engine
- Smalltalk is being used to fight Ebola!
- Smalltalk is used in wide-scale data visualization for medicines in 16 countries
- Smalltalk can be used to write cross-platform mobile apps (2% in JS, 98% in Smalltalk!)
- Smalltalk is good for server-side web development, thanks to the Seaside web framework and the Teapot micro framework
And I’ve just barely scratched the surface!
Smalltalk deserves a place among the “hot” (or “cool!”) new languages like Elixir, Elm, Go, Julia, Kotlin, Rust. After all, Pharo is only 9 years old.