Welcome to the Future of Smart Web Development


Today is the official launch of a campaign to promote the use of Smalltalk (and Amber) in the modern age of software development, especially as it relates to the Web. In our highly connected world, web technologies are absolutely central to the economic growth and social evolution of our society.

Why Smalltalk?

Smalltalk is a pioneer in programming language development. Constructed in the 1970s by those clever folks at Xerox PARC in California, Smalltalk was the first major OOP language, and still widely regarded as the best. Over the past four decades, it has been highly influential in the design of other important languages, such as Objective-C, Ruby, Groovy, Scala, and Dart. Today, Smalltalk is still used to write industrial and financial applications (rather like a secret weapon that confers a competitive advantage). It is alive and well, particularly in the Pharo incarnation, and it is emerging as a contender in client-side web development with the creation of Amber.

The beauty of Smalltalk lies in its simplicity and elegance, as well as its novel concept of a “live” development environment, where every object is active and you can examine it and change it at will. Ironically, this “novel” concept was created more than four decades ago! As a result, Smalltalk is eminently readable, almost like English, but it still manages to be succinct.

Smalltalk is prized for its development power and extraordinary productivity. The word “productive” is vastly overused and bandied about by nearly every new programming language that arrives on the scene today. However, Smalltalk has a long history to show definitively that a simple and expressive language, combined with an innovative approach to the IDE, can pay enormous dividends in academia and in the commercial enterprise.

Now with Amber, which compiles efficiently to JavaScript, we have brought the benefits of Smalltalk to the world of browser-based application development, the “final frontier,” as it were. Welcome to the future of Smart Web Development!



Why is Smalltalk still relevant today? It may be viewed as a “modern” language in as much as it is closely tied to a novel approach to IDEs: the Smalltalk environment is a world of “live” objects that you can examine and change at will. The Smalltalk environment is not file-based; it is a system of live objects that can be stored, system state and all, into one location. Compare this to the traditional method of organizing source code using files and folders which is positively antediluvian!

“Source code in files. How quaint.”
Kent Beck

Moreover, Smalltalk adheres to modern language design principles that have become very popular. It’s a simple language with a highly readable syntax. Its language features are orthogonal with no unpleasant interactions. Not only is it designed to be easy to learn, it is also designed to be very practical and expressive in daily use.

Smalltalk can stand shoulder to shoulder with the likes of Dart, Swift, F#, and Scala, all recent entrants in the highly competitive field of programming languages.

Which Smalltalk should I use? Smalltalk is available in many different flavours and unfortunately this can be confusing to newcomers. In order to make things simple, I always recommend open source Pharo or Amber (which uses Pharo as the reference implementation). If you’re inclined toward a commercial Smalltalk, you have principally three choices: Cincom Smalltalk, VA Smalltalk, or GemStone/S.

Squeak is Pharo’s predecessor and still fairly popular. Redline Smalltalk is for those who want to run Smalltalk on the JVM. Essence# is for those who want to run Smalltalk on .NET. Dolphin Smalltalk is specifically for Windows. And there are still others. But, really, just keep it simple: stick with Pharo or Amber.

What resources are available for Smalltalk newcomers? To begin with, here is a most informative series of podcasts: http://smalltalkreflections.blogspot.ca/.

Here is an excellent Smalltalk tutorial video to get you started:

I actually went through the online interactive tutorial discussed in the video above. You get a better feel for the language by doing rather than watching.

This introduction to the Pharo programming environment (despite the title, it doesn’t really talk about the language itself) is very well done:

So is this introduction by Noel Rappin:

If you’re inclined to read, I recommend the book “Pharo by Example” (also available as a free PDF), which comes with a downloadable version of Pharo tailored for the book.

The Top Five at Slant

Slant.co is a product recommendation community with the goal of finding the best product or app for you. It’s interesting to see how Slant ranks the Smalltalk programming language.

I looked at two questions. The first was: What are the best (productivity-enhancing, well-designed, and concise, rather than just popular or time-tested) programming languages?

The Top Five are:

  1. Elixir with 35 upvotes and 15 downvotes
  2. Smalltalk with 75 upvotes and 17 downvotes
  3. Python with 92 upvotes and 47 downvotes
  4. Scheme with 21 upvotes and 11 downvotes
  5. Nim with 31 upvotes and 15 downvotes

I don’t know how Slant’s ranking algorithm works but I do find it peculiar that Elixir ranks higher than Smalltalk. Smalltalk has more than twice as many upvotes and only slightly more downvotes than Elixir.

Interestingly, Python has the most upvotes but also a very large number of downvotes.

However, I’m glad to see that Smalltalk is at least in second place. And deservedly so.

The second question I looked at was: What is the best programming language to learn first?

The Top Five are:

  1. Python with 461 upvotes and 69 downvotes
  2. Smalltalk with 62 upvotes and 22 downvotes
  3. Racket with 18 upvotes and 7 downvotes
  4. Elixir with 24 upvotes and 11 downvotes
  5. C with 183 upvotes and 87 downvotes

This time, it makes sense that Smalltalk is in second place. Python has a whopping 461 upvotes.

So in both questions, Smalltalk acquits itself very well. I’ll take that.

I also looked at other programming language-related questions but most of them had too small a population of voters to be taken seriously (fewer than 300 participants). However, here are a few…

What are the best server side programming languages?

From 868 voters, the Top Five are:

  1. Elixir with 66 upvotes and 15 downvotes
  2. Python with 66 upvotes and 22 downvotes
  3. Clojure with 24 upvotes and 5 downvotes
  4. Golang with 64 upvotes and 20 downvotes
  5. Haskell with 28 upvotes and 6 downvotes

What are the best languages for learning functional programming?

From 503 voters, the Top Five are:

  1. Haskell with 84 upvotes and 14 downvotes
  2. Elm with 41 upvotes and 6 downvotes
  3. Clojure with 57 upvotes and 12 downvotes
  4. Elixir with 27 upvotes and 3 downvotes
  5. Scheme with 16 upvotes and 2 downvotes

What is the best programming language to learn for backend developers?

From 362 voters, the Top Five are:

  1. Python with 53 upvotes and 17 downvotes
  2. Elixir with 33 upvotes and 6 downvotes
  3. Golang with 34 upvotes and 6 downvotes
  4. Rust with 17 upvotes and 1 downvote
  5. TypeScript with 4 upvotes

While this question has too small a population, it’s interesting nonetheless: What are the best systems programming languages?

From 214 voters, the Top Five are:

  1. Rust with 36 upvotes and 24 downvotes
  2. Nim with 25 upvotes and 8 downvotes
  3. C with 19 upvotes and 5 downvotes
  4. C++ with 26 upvotes and 10 downvotes
  5. D with 12 upvotes and 11 downvotes