The Ultimate Programming Language

In the real world that we live in, there can be no such thing as “perfect” or “ultimate.” Everything in life is a trade-off of some sort. And so it is in engineering and computer science.

The quest for the perfect programming language has persisted for at least four decades, and even before then since the start of modern computing. There are principally four motivations:

  1. Programming taste–human taste or preference always enters the equation
  2. Seeking optimal solutions–whether that be with respect to performance or expressiveness or ease of use or safety
  3. Overcoming perceived drawbacks–all languages have “warts” that annoy and irritate
  4. Discovering new innovations–people like to push the envelope of language theory

For example, the IT community is divided between statically-typed and dynamically-typed languages. One party argues for type safety and compiled speed, while the other argues for ease and flexibility of programming. Personal preference enters here, too.

Regarding safety, this is what Rust is all about. It tries to enforce a safer way to manage memory and do concurrency. Languages like Rust, which came from the research labs of Mozilla, are truly innovative and they push the limits of language theory.

Then there’s the issue of language size and complexity. Some people argue for Byzantine languages with lots of sophisticated features that offer extraordinary “expressiveness.” C++, D, Rust, and Swift come to mind.

Some argue for clarity and simplicity, with a relatively small feature set that is orthogonal and powerful. Go, Clojure, and Smalltalk are excellent examples. These languages are very pleasant to use, and happy programmers are far more productive. (Go has a great story to tell you in this respect.)

Perceived language warts often drive language innovations. JavaScript, for example, is a really, really horrible language, esp. for software engineering at scale. This is why the IT community has scrambled to come up with many, many alternatives. The D language was really a response to C++’s perceived shortcomings. Go and Rust try to be a better C/C++.

Specialization is another important factor. A general-purpose language is a Jack of all trades, but master of none. Some languages are simply much better in their respective problem domains. Erlang immediately comes to mind.

Another example is the emerging popularity of functional programming (or FP). For decades, object-oriented programming (OOP) has ruled IT. Now, people are beginning to appreciate the value of FP languages such as Haskell, Erlang, and Elixir. It’s a question of expressiveness and conciseness.

Ultimately, what we all want is a programming language that is:

  • flexible and easy to use
  • highly expressive, esp. for a particular problem domain
  • safe to use so that you don’t easily get into trouble and you can readily resolve problems

This helps you to do your job as quickly and efficiently as possible. Who doesn’t want that?

In summary, language choice is about individual taste and productivity and specialization. The Ultimate Programming Language will always be the one that you like.

My Ultimate Programming Language is…

Image for post
Image for post

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store