Ja proponuję przeciwnikom OOP (jak i zwolennikom) zrobienie eksperymentu i nie używanie tego słowa (ani synonimów, czyli "obiektówka" i podobne. Nawet słowa obiekt można nie używać).
Mam wrażenie, że niektórzy po prostu uczepili się tych 3 literek i szukają pretekstu do kłótni na siłę. Czyli słowem: trollują.
Rozmawiajmy o realnych problemach.
W jaki sposób poradzimy sobie ze zmianami stanu w programie? Czy zrobimy globalne zmienne i hopsasa? Czy może będziemy starali się odizolować gdzieś "ruchome części"? A może w ogóle pójdziemy w niemutowalność?
W jaki sposób poradzimy sobie, że zmianami w części aplikacji, tak żeby odizolować te zmiany od reszty? Jeśli ruszymy X, to czy się nie rozwali Y?
W jaki sposób zabezpieczymy możliwość łatwego rozszerzania aplikacji? Architektura oparta o pluginy? Czy coś innego?
W jaki sposób poszczególne moduły* będą się komunikować ze sobą?
To są realne pytania (jedne z wielu zresztą), a nie to, czy ktoś pisze OOP czy nie.
Na pewnym poziomie większość paradygmatów dochodzi do tego samego (np. do tego, że "shared mutable state is the root of all evil" czy do tego, że w kodzie powinien być decoupling). Programowania nie można poznać do końca, ale pewne zasady są "obiektywne" o tyle, że wydają się być odkrywane i stosowane, niezależnie od paradygmatu. Jeśli coś jest skuteczne (albo jeśli coś jest szkodliwe), to wcześniej czy później ktoś na to wpadnie (a jeśli nawet sam nie wpadnie to podpatrzy u kogoś - to dlatego programiści OOP masowo idą w stronę funkcyjności, bo funkcyjność rozwiązuje parę problemów, np. problem z globalnym mutowalnym stanem, czyli w zasadzie uzupełnia obiektówkę, która rozwiązuje dokładnie ten sam problem ale od drugiej strony (@Krolik już o tym wspomniał w tym wątku zresztą Świetna dyskusja dlaczego OOP ssie. ).
To nie jest jakaś zabawa, który paradygmat jest bardziej cool, tylko to jest tworzenie oprogramowania i rozwiązywanie problemów, które się pojawiają. Jak dla mnie programiści powinni być bardziej jak naukowcy albo inżynierowie, a póki co w tym wątku niektórym wydaje się, że programowanie jest jak arena gry politycznej i kto będzie miał więcej głosów i przekona kogoś, że partia OOP/proceduralna jest dobra/zła.
** przez moduł podstawcie sobie np. moduł (jeśli w języku są moduły), klasę, obiekt, funkcję, procedurę, lambdę, cokolwiek, co jest modulaste, co da sie łatwo wydzielić. Żeby potem nie było kłótni, czy coś jest czy nie jest obiektem. *