Taxonomy of Programming Languages

What are object-oriented, functional and procedural programming languages? How do we go about categorizing them?

Erik Engheim

--

For those of us with some passion for programming languages, a debate frequently flares up over what specifically should be categorized as object-oriented and functional.

Is C++ object-oriented? “It allows free functions!” Pedantic people in the early 2000s would get hung up on details like that. Even to this day, we have a similar situation with functional programming where people will insist that anything that allows mutation of state is automatically disqualified as a functional language. This leads to absurdities where LISP is no longer a functional language.

Object-oriented programming has rightfully been criticized over the last years, but a lot of the pushback is based on the idea that this isn’t “real” object-oriented programming or this is class based object-oriented programming.

This is a universal problem in any categorization. You see exactly the same in political science. “But that isn’t real capitalism, that is crony capitalism,” or alternatively, “That isn’t real communism, that is Stalinism.”

It is not that any of these people are technically wrong, but we need to deal with the real world as it exists. The Ancient Greeks such as Plato obsessed about idealized shapes or forms. That every real object had some corresponding perfect representation. An…

--

--

Erik Engheim

Geek dad, living in Oslo, Norway with passion for UX, Julia programming, science, teaching, reading and writing.