28 komentářů k článku Proč stojí objektové programování za starou belu:

  1. harrison314

    OOP vs FP
    Dnes je moderne (pseudo) funkcionalne programovanie (tlacene JS a Reaktom), no ked clovek robil v cistictich funkcionalnych jazokych ako Haskell, tak to pseuofunkcionalne programovanie v JS ma od neho neuveritelne daleko.

    V podlenej dobe si vsimam heitu OOP, ale vzdy je to ako v tomto clanku a vychadza z aboslutneho nepochopenia OOP principov ako celku. Samozrjeme dobre funckionalne programovanie je lepsie ako zle obejktove.
    No ten clanok vychadza z absolutneho nepochopenia OOP, vsteky vyhrady sa daju riesit, alebo nie su problem, alebo ich riesi IDE.

    Ono treba este podktnut, ze OOP a FP v najcitejsej podobe je prakticky nepouzitelne, preto kazdy pouzivany jezak, je do istej miery miltiparadigmovy.

      1. harrison314

        Re: OOP vs FP
        Tym IDE som narazal na hlavickove suborry spomenute v clanku, ked chcem vidiet vsteky definicie pokope a prehrabavat sa v nich, nebudem ich pisat do jedneho suboru ako 80-tych rokoch, ale IDE mi ich vie ukazat pokope (napr. Visual Studio a Object Explorer).

  2. rssreader

    Nevím proč se vůbec někdo obtěžuje s překladem takového neobjektivního blábolu nějakého nesoudného či možná jen zhrzeného programátora?

    1. Martin Hassman

      Re:

      Protože když autor Erlangu napíše něco, s čím zásadně nesouhlasím, stojí za to se zamyslet. Vypadá to, že se plete, a možná se opravdu plete, ale pravděpodobně je v programování zkušenější než já, tak je to příležitost k růstu. Mému, když se jí chopím.

      1. Pako

        Re:
        Zejména když autor už to sám dávno (před lety) smazal a sám teď píše že o celé věci přemýšlí hodně jinak. Jako historický dokument o úvahách autora snad… bez kontextu ovšem bezcenné.

        1. Martin Hassman

          Re:

          Nesouhlasím. Svět není binární. Lidé se vyvíjí. Autor text neodmítá, naopak byl rád za jeho překlad a šíření.

          1. harrison314

            Re:
            Autor prezentuje len svoje nazory, no neargumentuje, tak napriklad:

            Námitka 1 – Datové struktury a funkce by se neměly míchat
            – akosi nechape co to OOP vlastne je, a aky ma zmysl pouzivanie objektov, polymorfizmus,…

            Námitka 2 – Všechno musí být objekt – nie nemusi, mnoho jazykov je multiparadigmovych C++, C#, kde nemusi byt vsteko objekt. Plus je to rovnaky argument ako, ze vo funkcionalnom programovani musi byt vsetko funkcia (v cistejsich FP ide hodnotu zamenit za funkciu vracajucu tuto hodnotu).

            Námitka 3 – V OOP jsou definice datových typů rozprostřené úplně všude – toto je uz fakt trochu moc, vid. argument zo stringom, tam nie je pravda snad ani jedna veta.

            Námitka 4 – Objekty mají private stav – ano maju, je to jeden zo zakladnych principov OOP, co ma mnoho pozitiv (bezpecnejsie API, abstrakcia,…).

            Proč bylo OOP tak populární? – tiez len subjektivne nazory, pokial ich nepodlozi niecim.

  3. Oldis

    „Všechny ostatní objekty, které chtějí tuto datovou struk­turu použít, musí dědit od tohoto objektu.“
    Tak když je takhle postavené tvrzení, které není pravdivé tak bohužel to argumentaci jako celek dost sráží.
    String: nemusim od něj dědit a přece s nim můžu pracovat.
    Mýt všechny typy v jednom hlavičkovém souboru (hlavičkové soubory jsou přežitek) považuju za nesmysl.
    Stav je všudy přítomný, například v registrech v ram atd…

  4. hellx

    Toto všechno pramení z nepochopení OOP do hloubky. OOP je pouze nástroj pro vyjádření vztahů v reálném světě. Existují metodiky, jak postupovat. Tyto metodiky – např DomainDrivenDesign – mají své implementace – např. CQRS/ES. Potom OOP začíný být opravdu zajímavé a začne jednomu dávat smysl, protože se v něm vyskytují i prvky funcionálního programování. A pojmy jako base object, interface, potomek naprosto ustupují do pozadí, protože se už zabýváte Designem systému. Přestáváte oddělovat Architekturu, Analýzu a samotné programování. A když váš Design systému je Hnaný Doménou (DDD), tak systém bude dělat co má (což je opravdu velice vzácná stav :D).
    Výsledkem potom může být systém, jeho dílčí části jsou materializovány (chápej vyvíjeny) různými týmy, pomocí různých jazyků i přístupů a ještě k tomu opravdu jako microServices (ne nesmyslně nano services nebo naopak monoliths). Takto vyvíjený systém má šanci na to uspět, škálovat a v neposlední řadě být udržovatelný a rozšiřitelný.

    1. Zdeněk Merta

      Re:

      1. Domain-Driven Design není metodika. Je to soubor principů a praktik.
        Nemá žádnou souvislost s OOP kromě toho, že Eric Evans ve své době implementoval taktické vzory pomocí OOP.
      2. CQRS/ES nejsou implementací DDD. Jedná se o nezávislé techniky. Opět nemají souvislost s OOP. ES je dokonce čistě funkcionální a dá se vyjádřit několika funkcemi. Implementace pomocí OOP je samozřejmě taky možná.
      1. ivoszz

        Re:
        Jen technická poznámka, docela by mne zajímala vaše definice metodiky. Podle mne je metodika právě soubor principů a praktik vytvářející uzavřený a smysluplný celek.

    1. Bystroushaak

      Re: Dnešní dodatek autora
      Jo, v tomhle kontextu to dává smysl. Já jsem si právě u čtení článku říkal, že autor nekritizuje OOP, ale ten zprasený subset, který razí Java a podobné jazyky. Třeba ve Smalltalku / Selfu to celé funguje jinak a ta kritika ani nedává moc smysl.

  5. murdej

    OOP je naprd
    stejně jako vidlička je naprd když je potřeba se pořeba vytáhnout si kamínek z oka. Nejsou špatné metodiky, antiparenty, … ale jen nevhodně zvolené pro daný účel.
    Třeba teď nedávno jsem narazil na problém který by se dal nejlépe vyřešit pomocí goto, ikdyž je goto „nejhorší peklahodný programátorský hřích“

  6. Filip.Jirsak

    gramatická chyba
    „Ve většině jazycích jsou funkce vytvořeny“ → má být „ve většině jazyků“

  7. Jenom čtenář

    Když pominu dětinskost . . .

    Proč bylo OOP tak populární?

    Důvod 1 – Domníval**i** jsem se, že je snadné se ho naučit.
    Důvod 2 – Domníval**i** jsem se, že znovupoužitelnost kódu bude snazší.
    Důvod 3 – Byl kolem toho humbuk.
    Důvod 4 – Vytvořilo to nové odvětví softwarového průmyslu.
    

    „Byl kolem toho humbuk“ – to jako vážně?

    Fajn, někdo něco napíše, proč ne, ale tak trocha soudnosti při výběru toho co přeložit, by asi neškodila – možná by bylo dobré zaměřit se na kvalitu výstupu než na životopis osobnosti.

  8. Vláďa Macek

    Podle mě je článek příliš citově zabarven a ukazuje nedostatečný nadhled a zkušenost s tím, co kritizuju. Jak už tady psali komentující. Překlad místy zanáší určitou kostrbatost vyjáření, přesto za něj děkuju. Bylo by skvělé, kdyby si čtenáří i komentující v česku víc zvykali na to, že když je někde něco publikováno, tak to není prosazování jediného správného názoru, ale POLEMIKA, výkop k diskusi směřující ideálně ke konsenzu. Taková správná polemika s Armstrongem, který byl opravdu na pár místech argumentačně dle mě mimo, je v odkazovaném článku „No, that’s not why OO sucks“, který se mi líbil.
    Děkuju, mějte se fajn.

  9. Jenom čtenář

    IMO polemika je jedna věc, posílat dál (zde překladem) věci typu „Hnacím motorem bylo: byl kolem toho humbuk“ je věc druhá. Samozřejmě ať si píše kdo chce a překládá kdo chce co chce, držím palce, když to pak ale vystaví veřejně, ať se ale nediví že to ledaskomu ani k nějaké polemice nepřipadá.

    1. tacoberu

      Re:
      Mě to pomohlo si utřídit myšlenky. Zkušenosti, které s OOP mám, ale neumím je dobře vyjádřit. Možná to autor nevyjádřil nejlépe, možná se o tom dá polemizovat, každopádně já mu přizvukuju.

  10. Andre

    Precenovanie OOP
    Suhlasim, je to cele iba humbuk aspon z mojho pohladu 20tich rokov embedded/fullstack programatora
    Uzitocnost OOP sa prejavi len v okrajovych situaciach. Jeho nevyhody su vsak brutalne hlavne v prostredi, kde je treba optimalizovat prostriedky a výkon, Dokazom je „evolucia“ Windowsu. a vysledok, ze dnes tu po vyse 20 rokoch mame systemove poziadavky, ktore raketovo vystrelili nahor o niekolko radov a pritom je to stale iba premalovany Win95.
    Znovapouzitelnost – to je krasny a zvelicovany mytus, ktory sa ale v praxi takmer nevyskytuje. Pri zakladani noveho projektu je znovapouzitelnost otazka programovej kultury a nie objektoveho pristupu,
    V zasade OOP ma zmysel, pre urychlenie a pohodlie prace programatora, nie pre vyslednu kvalitu SW kde je podla mna vacsinou na skodu.

    1. old rich

      Re: Precenovanie OOP
      souhlas se vsim, jedine ne s vetou: ‚V zasade OOP ma zmysel, pre urychlenie a pohodlie prace programatora,‘.

      Ve srovnani s cim? Ja nevidim vyhody vubec nikde. Kdyz nam v 90. letech slibovali, jak budou programy bezpecne, znovupouzitelne a snadeji zhotovitelne, tak mela rada programatoru nadeji. Dnes mame vsichni tu jistotu, ze se nic z toho nenaplnilo. Programy napsane OO padaji zrovna tak jako jine, projekty jsou zrovna tak drahe a proflakle jak projekty, kde se programuje proceduralne atd. Nic nez ten humbuk.

  11. lambda_kalkulus

    Dnesni programatori neprogramuju objektovo, skutocne oop tu bolo v 90tych rokoch, ked si programator vyskladal program v Delphi z komponent (nevizualny objekt) a controlov (vizualny potomok komponentu). Chytil som TButton nastavil som mu vlastnost text a buttonu sa zmenil text nastavil som mu vlastnost color na red a buttonu sa zmenila farba na cervenu. Vtedy som mal jediny krat v zivote pocit ze programujem objektovo boli to krasne casy a trvalo to 5 rokov… ked som chcel vlastnu komponentu stacilo dedit od triedy TComponent, TControl alebo od hociktorej inej komponenty, ktoru som si chcel upravit. Existovalo x databázových, alebo internetovych komponent, ktore som len naskladal na formular poprepajal medzi sebou a program bol hotovy. Potom ale prisla Java, C# a PHP a tie koncept oop uplne zabili, z objektov sa stali len obycajne moduly a programatori ktori predtým programovali v procedurálnych jazykoch – koncept oop vôbec nepochopili. Ono pri pisani server side aplikacii sa to pochopit ani moc neda. Takze programatori programuju doteraz proceduralne pricom vyuzivaju moznosti objektových jazykov a nazyvaju to objektovym programovanim.

    1. Milan Křepelka

      Re:
      Velmi se mýlíte. Java i C# jsou plně objektové jazyky. Zmiňujete jednu malou část celé škály „SW palety barev“. A navíc k tomu ještě dost nedobře. Kdybyste třeba vedle sebe dal VCL a WF(Windows Forms). Jen velmi těžko byste hledal „10 rozdílů“

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=20196