Why learning Smalltalk can never be a waste of time


I get this a lot, people telling me that learning Smalltalk is a waste of time. Here’s my retort…

#1: Your first programming language will never be your only programming language.

Many programmers advise beginners to start with an industrial language like Python or JavaScript because you can easily find jobs for it. However, this is a poor excuse for using a language that was not designed for teaching. In the course of your career, you will likely learn and use many programming languages. Your second language could be Python or JavaScript. There is nothing wrong with this strategy.

#2: The best way to learn how to program is with a good teaching language.

Python and JavaScript and C were never designed nor intended as teaching languages. They are industrial languages that carry a lot of baggage. No matter how friendly you think Python and JavaScript are, they do have more than their fair share of “warts.” Beginners should not be distracted by their starting language’s oddities and quirks.

Alan Kay and his team at Xerox PARC created Smalltalk in the early 1970s for teaching programming to children. That’s a fine pedigree.

#3: There is no better way to learn about object-oriented programming (OOP).

The universal consensus is that Smalltalk is the best OOP language there is. It was the first programming language to popularize OOP back in the 1980s. It has directly influenced the design of nearly every OOP language we use today, including Python, Ruby, PHP, Objective-C. Since OOP is so widely used throughout the IT industry, and since it is so misunderstood by many developers, it is best to lay a solid foundation for object-oriented programming before moving to other languages.

#4: It’s a great hobbyist language.

Even if you never find a Smalltalk job, Smalltalk is a fantastic hobbyist programming language. It’s loads of fun! I know many developers who use Java, C++, etc. in their “day job” but use Smalltalk for personal projects. How can a hobby or recreation be a waste of time?

#5: Pharo is a contemporary language (created in 2008).

Smalltalk-inspired Pharo is every bit as relevant as other new contemporary languages such as Clojure, Crystal, Dart, Elixir, Elm, Haskell (1990!), Julia, Nim, Rust. Aren’t any of these languages worth learning?

For more information, read Why Pharo Might be the Future of Software Development and Smalltalk May Be the Nikola Tesla of the IT Industry.

#6: Old languages still have great value.

  • Lisp (1958) can be found in Clojure (2007).
  • Forth (1970), a lovely language, is often used for embedded applications.
  • C (1972) is still very commonly used for systems programming.
  • Smalltalk (1972) can be found in Pharo (2008).
  • Ada (1980) is still immensely popular with the U.S. military-industrial complex.
  • C++ (1980-1985) is very old.
  • Haskell (1990) is an old but modern FP language.
  • R (1993) is highly valued for data science and machine learning.
  • Java (1995), Python (1990), JavaScript (1995) are the Top 3 languages, all considered old.

When did “old” ever become a liability, as many opine?