Update
This commit is contained in:
parent
da00222f76
commit
0266d219be
18 changed files with 1971 additions and 1931 deletions
3
oop.md
3
oop.md
|
@ -30,6 +30,7 @@ Just a brief summary of why the mainstream OOP is a fail:
|
|||
- For simple programs (which most programs should be) such as many [Unix](unix.md) utilities OOP is simply completely unnecessary.
|
||||
- **It is in conflict with [Unix philosophy](unix_philosophy.md)** -- Unix philosophy advocates for making small programs that do one task well and for these, as mentioned above, OOP is more of a burden. "Doing one thing well" is a similar definition of object in OOP and here the two paradigms clash -- if we adopt Unix philosophy, any program should basically be just a single object, negating the whole purpose of OOP. To truly make use of OOP we have to accept that a program will consist of multiple objects, i.e. that it will do several things at once -- in other words **OOP advocates for creating monolithic programs** ([bloat](bloat.md)).
|
||||
- **OOP languages make you battle artificial restrictions** rather than focus on solving the problem at hand.
|
||||
- **OOP is designed for bad programmers on the detriment of good programmers**. Good languages always try to give you freedom, their value is in providing features you didn't have before and which can help you achieve something better, without forcing you to use those features -- they are purely there as a completely voluntary choice for the expert who knows what he's doing, when to use a certain feature and when to NOT use it. OOP however does the opposite, **it artificially LIMITS what you can do**, for example by enforcing encapsulation or forcing everything to be object, even if it doesn't have to be so -- it's quite literally like [DRM](drm.md), an artificial obstacle -- it assumes the programmer is stupid and has to be prevented from doing something, ENFORCED to program certain way because he doesn't know how to program well, which is sadly true in [capitalism](capitalism.md) where hordes of stupid people are made into programming slaves, but it hurts the actually skilled programmers. It's like forcing a life jacket on anyone who goes swimming -- it will probably be safer for the majority of average and bad swimmers, but if you're an Olympic level competitive swimmer, it will be a disaster, it will just put you on the same level as the average swimmer.
|
||||
- Great number of the supposed "features" and [design patterns](design_pattern.md) (setters/getters, singletons, inheritance, ...) turned out to actually be [antipatterns](antipatter.md) and burdens -- this isn't a controversial statement, even OOP proponents usually agree with this, they just try to somehow document and dodge all the traps.
|
||||
- OOP as any higher abstraction very often comes with **overhead, memory footprints and performance loss** ([bloat](bloat.md)) as well as **more complex [compilers](compiler.md), language specifications, more [dependencies](dependency.md), [magic](magic.md) etc.**
|
||||
- The relatively elegant idea of pure OOP didn't catch on and the **practically used OOP languages are abomination hybrids of imperative and OOP paradigms** that just take more [head space](head_space.md), create [friction](friction.md) and unnecessary issues to solve. Sane languages now allow the choice to use OOP fully, partially or avoid it completely, which leads to a two-in-one overcomplication.
|
||||
|
@ -41,6 +42,8 @@ Just a brief summary of why the mainstream OOP is a fail:
|
|||
- It generalizes and simplifies programming into a few rules of thumb such as encapsulation, again for the sake of inexperienced noobs. However there are no simple rules for how to program well, good programming requires a huge amount of experience and as in any art, good programmer knows when breaking the general rules is good. OOP doesn't let good programmers do this, it preaches things like "global variables bad" which is just too oversimplified and hurts good programming.
|
||||
- ...
|
||||
|
||||
**But why is it so popular if it's so shit then?** Once again: popularity is never the measure of how good something is, it's usually quite the opposite, take a look at whole technology basically: Why is [web](www.md) so shitty when we literally saw it can be nice? Why are games so shitty, slow, buggy, ugly and hostile when we saw games CAN be done well? Why does everything break so quickly when back in the day things lasted very long? Anywhere you look you will see that as something gets more mainstream and attention of [capitalism](capitalism.md), it gets shittier and shittier, so you can't argue something is good because it's popular or adopted by the industry: programming became more mainstream and so it naturally turned more shitty, OOP was just the specific way that made it shittier. Was Justin Bieber so popular because he made excellent music? Are unskippable [ads](marketing.md) in videos good because corporations do it? Remember that the industry maximizes profit, NOT quality or efficiency or elegance or joy of programming or any other value you'd like to care about. So to make it clear: OOP is shit, there is no doubt, the debate can only be about the specific historical events that led to it becoming the mainstream, and of course here opinions always differ, but basically some may say it was an "innocent accident", that people sincerely believed in it and thought it would be good but once it turned out to not be so, it was too late to go back because it already infected everything -- this is naive though, experts can spot bad ideas in their infancy and will always warn about them, it's just that retards and managers never listen to them, and the history repeats over and over -- the same is happening with forcing [Rust](rust.md) into everything nowadays; that's another extremely bad idea that's criticized but which wins by having a billion more supporters in the retarded camp. Most likely it is the case that [corporations](corporation.md) just pushed OOP because it's lucrative: it allows more people to do brainless programming slavery and even though it limits the expert programmer, it's economically worth to gain so many new slaves for hurting a few experts; it also creates [bloat](bloat.md) and bloat is good for the corporation, it creates a [bloat monopoly](bloat_monopoly.md), more jobs (more slaves to steal the surplus from), new areas of bullshit business etcetc.
|
||||
|
||||
## Pure OOP (The "Legit" But Unused Kind Of OOP)
|
||||
|
||||
TODO
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue