Smalltalk and the Future of the Software Industry

For over half a century, the Information Technology industry has created software the old-fashioned way: using antediluvian tools (such as command-line utilities, compilers, and GitHub) based on text files containing endless reams of source code. It has used text editors like vim and Emacs to edit code spread out among hundreds of files in dozens of folders. It has relied on baroque cathedrals of IDEs such as Visual Studio, Eclipse, IntelliJ, and Xcode to manage this morass of code. This is comparable to our obsession with automobile steering wheels and computer QWERTY keyboards. Habituation is a tough disease to crack.

However, more than forty years ago, a new and better way to create software was invented. A group of visionary researchers and thinkers at the famed Xerox PARC institute, led by Alan Kay, devised a fabulous tool called Smalltalk. It was a programming language and IDE and runtime all rolled into one. This tight integration manifested in a dramatically shortened edit-test-debug cycle, which meant much faster development and higher productivity.

One of the goals of Smalltalk was to make it very easy to teach programming to children. The syntax, based on message passing, was as simple as simple can be (the syntax can be summarized on a postcard!). The “live coding and debugging” IDE was toy-like in look and feel, but nonetheless it was incredibly powerful. Smalltalk dramatically lowered the cognitive barrier to programming.

Decades later, a new language derived from Smalltalk arrived on the scene. In 2008, Pharo made it debut. It’s a modern language for the Twenty-First Century that is undergoing heavy development. In fact, it is the most progressive of all the Smalltalks.

Pharo’s cousin, Amber, made its entrance in 2011. Amber is Smalltalk for the web. It transpiles to pure JavaScript and joins the pantheon of many other transpiled languages. Amber can even be used to write mobile apps!

Another web-based Smalltalk to watch out for is PharoJS. It’s not quite production-ready, but it should be soon.

This year, Version 2.0 of Redline is due for release. Redline is Smalltalk for the JVM. Once it’s available, Redline will keep company with the likes of Groovy, Scala, Clojure, and Kotlin.

Pharo 6 is expected in April. It will finally give us 64-bit Smalltalk (specifically, a 64-bit JIT’ed Cog VM). Also, “adaptive optimization” to make code execute much faster.

We may even see Pharo 7, which promises a Git-integration tool called Iceberg for source code version control. So you can see there is a great deal of activity in the Smalltalk world. We live in exciting times!

For more information, read How Smalltalk can make you a better developer.

Smalltalk is the consummate teaching language

I believe the best way to teach beginners how to program is with a good teaching language. Languages like Java, Python, JavaScript, C#, C/C++, PHP, Ruby are all industrial languages; they carry a lot of industrial baggage that can get in the way of a beginner. A good teaching language is devoid of extraneous complications and lets you focus directly on the basic and most important programming concepts. Unfortunately, I’m in the minority. Far too many people push Python or Java as instructional languages and I think this is simply wrong.

The fact is, once you’ve learned how to program the right way, it’s pretty easy to pick up a second language such as Python or Java. There’s no need to start students off with these languages in the misguided notion of preparing them for a vocation in programming. Teach them how to program in the clearest and easiest manner, and their future in the IT industry will sort itself out.

There is only one good teaching language, in my opinion. (There are others such as Scheme or Logo, but allow me to make my case.) It’s called Smalltalk. It’s a beautifully simple and elegant language.

And yet, for all its simplicity, Smalltalk loses nothing in terms of programming power. This is why Smalltalk has been used commercially for over three decades! (Languages like Scheme and Logo enjoy virtually no commercial use.)

In fact, Smalltalk is so powerful that the U.S. joint military used it 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. We’re talking about a language used to teach programming to children!

Another important reason to teach Smalltalk is the fact that Smalltalk was the original object-oriented programming (or OOP) language to popularize this paradigm. OOP is the most widely used style of programming in the IT industry. (OOP is a superset of procedural programming.)

Did you know that Smalltalk directly influenced the design of nearly all the major OOP languages today? Languages like Java, Python, JavaScript (ES6), PHP, Ruby, Perl, Objective-C, Swift, Groovy, Scala, Dart, and so on.

In other words, if you care about object-oriented programming, it would be unconscionable not to learn Smalltalk. Smalltalk is OOP done right.

Without career opportunities, why should I learn Smalltalk?

Good question. You can ask the same about Go (126), Haskell (35), Groovy (78), Clojure (78), Lua (56), F# (18), Erlang (55), Dart, Rust (11), Scheme, OCaml (9), Elixir (21), Julia (21), Kotlin (4), D, Haxe, TypeScript (43), Elm. (The numbers are of job postings from for the San Francisco Bay Area on January 21, 2017.)

Since there are many more job postings for Java (4663), Python (4143), JavaScript (3012), C++ (1782), C# (838), .NET (1505), Ruby (1815), PHP (1450), Perl (974), Objective-C (1562), Scala (707), Swift (399), it makes no sense whatsoever to use any other programming languages.

Am I right?

The winning advantage is…

Smalltalk’s much-vaunted productivity. Smalltalk is well-known for being one of the most productive programming languages in the world. This is even backed up by research. Smalltalk is more than twice as productive as Python and Ruby. More than three times as productive as JavaScript!

In fact, that’s why I argue Smalltalk is a better choice for startups than Python or Ruby. Smalltalk is the perfect prototyping tool. It’s the quickest way to get your product out the door when “time to market” is a critical factor in startup success.

But not only for startups! Smalltalk is highly valued in large enterprises such as JPMorgan, Desjardins, UBS, Florida Power & Light, Texas Instruments, Telecom Argentina, Orient Overseas Container Lines, Siemens AG, and so on. And governments such as Communications Security Establishment Canada (CSEC) and Wisconsin Department of Revenue. And academic institutions like University of Brescia and Université de Montpellier.

In the end, the only questions people should ask about software creation are:

  1. How easy or pleasant is it to write software?
  2. How quickly can you get the software out the door?

Productivity is king, and Smalltalk has it in spades.

Originally submitted to InfoQ for publishing consideration, but they rejected it. What the heck, I’ll publish it anyway.