After more than 10 years of professional software development, I came to an unpopular conclusion:
We’ve done everything wrong.
I hope with this catch phrase I’ve got your attention 😉
The original idea about object orientated programming was that an object is something reacting to messages you send to it. OOP wasn’t about how to structure your code with classes and methods, how an object gets its things done was completely irrelevant.
Then there was the first big OOP language, called Smalltalk. Unfortunately messages in Smalltalk were not real messages, they were more a hidden synchronous function call. A mistake that later was repeated in C++ and so on, leading to OOP as we know it today, having forgotten about it’s original intent.
But there is an exception:
In the year 1986, the brilliant Joe Armstrong and his team created Erlang. A programming language that we now would consider to belong to the functional programming paradigm, but indeed it was the only true object orientated language, allowing thousands of objects (which are in fact lightweight processes) to talk to each other asynchronously. Sadly the language never got the attention it deserved, maybe this was due to its syntax that may not look intuitive at first sight.
In 2011, José Valim brought us the Elixir programming language. Elixir has a beginner friendlier, Ruby inspired syntax, but under its hood it is powered by the Erlang virtual machine, called the BEAM.
Besides the unique approach in multithreading, Erlang and Elixir offer awesome features which are missing in todays oop languages, like pattern matching or supervision trees. With this it allows to build fault-tolerant, distributed and highly scalable systems.
It’s the stuff e.g. the Whatsapp backend is built with, or the awesome message broker RabbitMQ.