Reconciling Functional and Object Oriented Programming
The Functional and Object Oriented Programming paradigms have different philosophies on how to write software. Like any ideology, they have to be applied in a concrete way to be useful. A programming language implementation has to be made, and the designers have to choose how to embody either or both of those paradigms in the syntax and semantics of the language. Some languages try to stay true to the ideal paradigm. Most mainstream languages, which make up most of the codebases out there, land somewhere in the middle. When you choose a language for a project, you often do not want to choose purely on programming paradigm - the language runtime, ecosystem, deployment options, and performance are critical considerations. Even if you favor one paradigm or the other, you often find yourself in languages that support both, working with people from both camps, and the codebase ends up being somewhere in the middle between the two.