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:
- Programming taste–human taste or preference always enters the equation
- Seeking optimal solutions–whether that be with respect to performance or expressiveness or ease of use or safety
- Overcoming perceived drawbacks–all languages have “warts” that annoy and irritate
- 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.)
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…