This commit is contained in:
Miloslav Ciz 2024-02-18 01:42:30 +01:00
parent 732dc569f4
commit 47a191f63e
7 changed files with 1686 additions and 1673 deletions

2
oop.md
View file

@ -2,7 +2,7 @@
*"I invented the term 'object oriented' and [C++](cpp.md) was not what I had in mind"* --[Alan Kay](alan_kay.md), inventor of OOP
Object-oriented programming (OOP, also object-obsessed programming and objectfuscated programming) is a [programming paradigm](paradigm.md) that tries to model reality as a collection of abstract objects that communicate with each other and obey some specific rules. While the idea itself isn't bad and can be useful in certain cases, **OOP has become extremely overused, extremely badly implemented and downright forced in programming languages** which apply this [abstraction](abstraction.md) to every single program and concept, creating [anti-patterns](anti_pattern.md), unnecessary issues and of course [bloat](bloat.md). We therefore see OOP as a **[cancer](cancer.md) of software development**. Many others oppose it, e.g. [Bitreich](bitreich.md) voice criticism in their manifesto, saying we rather need a *subject oriented programming*; the idea of OOP being real bad is leaking even into the mainstream so it's becoming less and less controversial to shit on it.
Object-oriented programming (OOP, also object-obsessed programming, objectfuscated programming or artificial inelegance) is a [programming paradigm](paradigm.md) that tries to model reality as a collection of abstract objects that communicate with each other and obey some specific rules. While the idea itself isn't bad and can be useful in certain cases, **OOP has become extremely overused, extremely badly implemented and downright forced in programming languages** which apply this [abstraction](abstraction.md) to every single program and concept, creating [anti-patterns](anti_pattern.md), unnecessary issues and of course [bloat](bloat.md). We therefore see OOP as a **[cancer](cancer.md) of software development**. Many others oppose it, e.g. [Bitreich](bitreich.md) voice criticism in their manifesto, saying we rather need a *subject oriented programming*; the idea of OOP being real bad is leaking even into the mainstream so it's becoming less and less controversial to shit on it.
Ugly examples of OOP gone bad include [Java](java.md) and [C++](cpp.md) (which at least doesn't force it). Other languages such as [Python](python.md) and [Javascript](javascript.md) include OOP but have lightened it up a bit and at least allow you to avoid using it.