There are always trade-offs — you must choose

Richard Kenneth Eng
2 min readDec 22, 2022

When choosing a programming language, you must decide what are the top requirements for your project. In this article, we will examine this question on the basis of two broad categories: (1) speed of software development, and (2) speed of software execution.

Speed of software development depends on the cognitive load imposed by the programming language (syntactical complexity, number of quirks and traps, syntactical limitations, development model, etc.), availability of libraries and tools, quality of documentation, and so on. This is also known as productivity.

Speed of software execution depends on the execution model (native code versus byte code interpretation), support for concurrent execution, quality of optimization, and so on.

There is no perfect programming language. There can be no perfect programming language. The choice of language will always entail engineering trade-offs.

What is more important to you and your project? Delivering your software as quickly as possible? Or producing the highest performance software?

There are other considerations as well, such as software reliability (lowest defect count) and long-term maintenance. But these are usually secondary to the two main criteria.

It is commonly accepted that languages such as Smalltalk, Python, Go, and Elixir are highly productive because of their simplicity and ease of use. The most-cited languages that offer the fastest executing software include C/C++, Rust, Go, and Julia.

Go is a rare language that hits both marks. That’s why I’m a big fan of Go.

But another language that I absolutely love is Smalltalk. It’s even simpler and more elegant than Go. And it’s far more productive.

Capers Jones in 2017 published a study that compared the productivity of various programming languages. Here’s a graphic that shows some of the languages:

While Smalltalk is not renowned for its speed of execution, the fact is that most applications don’t need to be as fast as possible. That’s why Python, Java and C# remain important enterprise programming languages.

So if productivity is important to you, if delivering software in the shortest possible timeframe is the goal of your project, then you should definitely give Smalltalk a serious look: