Co si myslíte o OOP?

Kit

Re:co si myslite o oop?
« Odpověď #120 kdy: 24. 12. 2018, 17:15:37 »
V PHP běžně používám magické metody, které se však mnoha vývojářům nelíbí. Přitom podle této diskuze dělají z PHP objektovější jazyk, než je třeba C++, C# nebo Java.
Tohle je zase novinka pro mě, vypadá to, že __call v PHP je to samé, co forwardInvocation.

Zrovna metoda __call() mě napadla, ale je jich tam víc. Ačkoli je nemám rád, tak i __get(), __set() a __isset() jsou skvěle použitelné, protože místo
Kód: [Vybrat]
$article->setTitle("Titulek");
// se dá mnohem pohodlněji a přehledněji zapsat
$article->title = "Titulek";
Zda to přímo ovlivní globální atribut nebo zda se to provede přes interní setter, je už čistě na implementaci objektu. Dají se takto snadno refaktorovat třídy s globálními atributy, včetně možnosti doplnění vhodných dekorátorů.

Na rozdíl od ostatních jazyků metoda __destruct() v PHP skutečně funguje, tedy že okamžitě zneplatní objekt. Zavře tedy i soubory, které jsou v objektu otevřeny - nečeká se, až je GC začne likvidovat. Ostatně se GC často ani nestačí spustit, celá paměť se s ukončením procesu uvolní naráz.


BaldSlattery

Re:co si myslite o oop?
« Odpověď #121 kdy: 24. 12. 2018, 17:46:59 »
mě to zajímá
K tomu původnímu tvrzení o účelu - Smalltalk původně to doesNotUnderstand neměl, to přidali až do verze Smalltalk-80 (viz stejnojmenná kniha). Kayův důraz na zprávy plyne z toho, že v jeho pojetí měly jít posílat i mimo adresní prostor a třeba i mezi počítači v rámci jedné syntaxe. To doesNotUnderstand byl právě jen implementační detail (z toho pak postupně vzniklo doesNotRecognize, forward, forwardingTarget atd.) a čím dál víc se to zkrkolomnilo (vrcholem je požadavek ObjC implementovat za účelem odchytu zpráv methodSignatureForSelector), jak se postupně naráželo na další technické nedostatky a zádrhely. Ta prvotní verze Smalltalku tedy uměla jen něco jako virtuální metody, protože než začali implementovat Distributed Smalltalk (viz stejnojmenné články a kniha), tak nic dynamičtějšího nepotřebovali.

Jednoznačně se shodneme, že dědičnost se rozšířila jak mor, i když s OOP nemá moc společného. Tímto asi pro dnešek končím, [MerryChristman wishTo: Prymek]  ;)

Re:co si myslite o oop?
« Odpověď #122 kdy: 24. 12. 2018, 20:06:38 »
K tomu původnímu tvrzení o účelu [...]
Díky moc za exkurs. Reálně jsem si trochu hrál s ObjectiveC, kolem Smalltalku jsem se jenom lehce šmrncl, takže vědět kdy co přidali, to je fakt daleko za mými obzory ohledně těhle jazyků. Každopádně si ale živě pamatuju, jaký překvapení pro mě bylo, když jsem si prvně o Obj-C něco četl (s nějakou znalostí C++). Ten aha moment: ajó, tak tohle je vlastně to OOP! Wow! ;)

Koukám na Wiki, že Smalltalk-80 byl první veřejně vydaná verze, takže to pořád docela slušně splňuje pojem "původní OOP" ;)

Tímto asi pro dnešek končím, [MerryChristman wishTo: Prymek]  ;)
Tobě a všem ostatním taky, dík.

anonym

Re:co si myslite o oop?
« Odpověď #123 kdy: 24. 12. 2018, 21:29:46 »
Tímto asi pro dnešek končím, [MerryChristman wishTo: Prymek]  ;)
Tobě a všem ostatním taky, dík.

Hosi tak co to je, nedelejte tu z toho vatikanskou telenovu, tohle je technicke diskuzni forum. Priste jak to uvidim tak to hlasim Krcmimu.

Re:co si myslite o oop?
« Odpověď #124 kdy: 24. 12. 2018, 23:09:35 »
Priste jak to uvidim tak to hlasim Krcmimu.
Dobře děláš, protože na vatikánskou telenovelu je u nás pěkně vostrej paragraf.


Mlocik97

  • *****
  • 836
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
Re:Co si myslíte o OOP?
« Odpověď #125 kdy: 25. 12. 2018, 15:22:03 »
OOP? v zmysle takom, jak sa šmuchtlá vätšinou programátorov v "modernej Jave" je to grc. Ale OOP v pôvodnej myšlienke môže mať výhody pre určité situácie.

anonym

Re:Co si myslíte o OOP?
« Odpověď #126 kdy: 26. 12. 2018, 09:59:55 »
OOP? v zmysle takom, jak sa šmuchtlá vätšinou programátorov v "modernej Jave" je to grc. Ale OOP v pôvodnej myšlienke môže mať výhody pre určité situácie.

Ty vis prdlacku.

petersonoop

Re:Co si myslíte o OOP?
« Odpověď #127 kdy: 26. 12. 2018, 10:40:28 »
Chlapci tak vam to tu riadne sibe. 9 vlakien o nicom. Ukazovat a merat si peeero chodte niekam do sauny

Petr

Re:Co si myslíte o OOP?
« Odpověď #128 kdy: 27. 12. 2018, 05:29:35 »
OOP je dobry sluha a spatny pan. Dobre jsou jazyky, ktere ho umoznuji, ale nevynucuji, takze je mozne ho aplikovat jen na mista a situace, kde je to vyhodne.

MilosZ

Re:Co si myslíte o OOP?
« Odpověď #129 kdy: 27. 12. 2018, 23:31:25 »
Organizace pro Osvobozeni Palestiny je teroristickou organizaci a ptat se na yo, co si myslim, je velmi prostoduche, az retardovane.

Kit

Re:Co si myslíte o OOP?
« Odpověď #130 kdy: 28. 12. 2018, 02:02:26 »
OOP je dobry sluha a spatny pan. Dobre jsou jazyky, ktere ho umoznuji, ale nevynucuji, takze je mozne ho aplikovat jen na mista a situace, kde je to vyhodne.

Kadet tady uvedl link na video, ve kterém je prezentováno, jak zbytečné některé třídy mohou být.
https://www.youtube.com/watch?v=o9pEzgHorH0

Na devel.cz se tazatel ptal na zbytečnost testu. Odpověděl jsem mu, že je zbytečná celá třída a napsal k tomu náhradu na dva řádky. Byl jsem zavalen mínusy, hlavně kvůli tomu, že jsem odpověděl jinak, než se očekávalo. Budiž. Zároveň je z toho vidět, že když osekám třídu tak, že z ní nic nezbyde, tak se to nehodí do mantry OOP.

Mnoho tříd je napsáno tak, že mají několik atributů, ke každému jeden getter a jeden setter. Co to je? Obyčejná struktura. Jen se místo "title = xxx" píše "setTitle(xxx)". Operace s takovou instancí se provádí v další třídě, nejlépe pomocí statických metod. To má být OOP? Ne, je to jen převlečené strukturované programování.

Ani se nedivím, že se vývojáři ozývají, že tohle je fuj. Místo toho, aby napravili chybně aplikované OOP, utíkají k funkcionálnímu programování. Tam už mají své struktury, které mohli mít v objektech. Tam mají i funkce, které používají stejně, jako používali statické metody. Místo tříd mají moduly. Prakticky to používají stejně, jen s úspornějším zápisem. I tu curryfikaci si mohli napsat v OOP, kdyby to zvládli.

V každém paradigmatu se dá napsat dobrý nebo špatný program. Nejlepší výsledky však vychází, pokud je možné paradigmata kombinovat, nejlépe ve vrstvách. Spodní vrstva strukturovaně, mezivrstva funkcionálně, horní vrstva objektově. Proč ne?

harrison314

Re:Co si myslíte o OOP?
« Odpověď #131 kdy: 28. 12. 2018, 09:37:22 »
OOP je dobry sluha a spatny pan. Dobre jsou jazyky, ktere ho umoznuji, ale nevynucuji, takze je mozne ho aplikovat jen na mista a situace, kde je to vyhodne.

Kadet tady uvedl link na video, ve kterém je prezentováno, jak zbytečné některé třídy mohou být.
https://www.youtube.com/watch?v=o9pEzgHorH0

Na devel.cz se tazatel ptal na zbytečnost testu. Odpověděl jsem mu, že je zbytečná celá třída a napsal k tomu náhradu na dva řádky. Byl jsem zavalen mínusy, hlavně kvůli tomu, že jsem odpověděl jinak, než se očekávalo. Budiž. Zároveň je z toho vidět, že když osekám třídu tak, že z ní nic nezbyde, tak se to nehodí do mantry OOP.

Mnoho tříd je napsáno tak, že mají několik atributů, ke každému jeden getter a jeden setter. Co to je? Obyčejná struktura. Jen se místo "title = xxx" píše "setTitle(xxx)". Operace s takovou instancí se provádí v další třídě, nejlépe pomocí statických metod. To má být OOP? Ne, je to jen převlečené strukturované programování.

Ani se nedivím, že se vývojáři ozývají, že tohle je fuj. Místo toho, aby napravili chybně aplikované OOP, utíkají k funkcionálnímu programování. Tam už mají své struktury, které mohli mít v objektech. Tam mají i funkce, které používají stejně, jako používali statické metody. Místo tříd mají moduly. Prakticky to používají stejně, jen s úspornějším zápisem. I tu curryfikaci si mohli napsat v OOP, kdyby to zvládli.

V každém paradigmatu se dá napsat dobrý nebo špatný program. Nejlepší výsledky však vychází, pokud je možné paradigmata kombinovat, nejlépe ve vrstvách. Spodní vrstva strukturovaně, mezivrstva funkcionálně, horní vrstva objektově. Proč ne?

Tie minusy si tam dostal pre t, ze namiesto odpovede na otazku si zacal trollovat.
A hlavne nevies ci je ta treda zbytocna lebo nepoznas kontext a hlavne tvoje vedomosti z programovania su dost obmedzene na PHP a male one man show projektiky.

SB

Re:co si myslite o oop?
« Odpověď #132 kdy: 28. 12. 2018, 10:22:26 »
...Ve skutečném světě je ale spousta jevů, kde žádné identity neexistují a vznikají všelijaké ad-hoc shluky jevů a vlastností (triviální příklad jsou třeba korály nebo shluky nějakých bakterií, kde výraz "jedinec" moc nedává smysl, tím spíš jedinec, který by měl být "věšákem na vlastnosti")...

Při všem respektu k vám je tohle jen vaším nedostatkem fantazie - cokoliv, co jde pojmenovat nebo popsat, jde i modelovat, a to i věci abstraktní.

SB

Re:co si myslite o oop?
« Odpověď #133 kdy: 28. 12. 2018, 11:45:56 »
...A neni nejlepsi cely ten balast zahodit a rovnou zavolat metodu?

A kterou?

Re:co si myslite o oop?
« Odpověď #134 kdy: 28. 12. 2018, 11:48:26 »
Vlakno je pouze abstrakce. Muze byt tezkopadne jako unix nebo nt vlakno s velkym stackem, nebo velmi lehka abstrakce v pripade green threadingu.
Ale z pohledu actor systemu bezi kazdy agent ve svem vlakne.
Green threading? A jsme zpet u kooperativniho multitaskingu jako ve win 3.11. A neni nejlepsi cely ten balast zahodit a rovnou zavolat metodu?

Rozdil je trebas v tom, ze u green threads si muzes rozbit aplikaci sam, u 3.11 ti ji mohl sejmout uplne kazdy...