Co si myslíte o OOP?

rigormortiz

Re:co si myslite o oop?
« Odpověď #45 kdy: 23. 12. 2018, 16:10:50 »
Kadet,

prijde mi, ze se snazis najit obecne reseni/popis/pristup na pomerne konkretni vec. Coz ti vetsinou nevyjde. Kdyz prirovname ten objekt k cihle, tak s tim pracujes jako s cihlou (nejdriv hezky vedle sebe a pak dalsi radek) otazka zni jestli stejnej objekt pouzijes i na stavbu mrakodrapu (tam bys asi pouzil objekt pilir a stavel ho nahoru a pak okolo nej).

Tahle prednaska by se ti mohla libit: https://www.youtube.com/watch?v=OSGv2VnC0go

Nerikam, ze vystihuje presne to na co se ptas. S tema objektama, vem si ze mas objekt "session" nebo "user" a potom mas nejaky objekt "message" a "log". Na kazdy mozna pouzijes jiny navrhovy vzor. Kdyz se budes snazit implementovat jeden a ten samy na vsechny, nebo najit nejaky super obecny, asi ti to nevyjde.


rigormortiz

Re:co si myslite o oop?
« Odpověď #46 kdy: 23. 12. 2018, 16:17:34 »
Promin spatnej link: https://www.youtube.com/watch?v=HTLu2DFOdTg

obe ty prednasky jsou dobry.

Kadet

Re:co si myslite o oop?
« Odpověď #47 kdy: 23. 12. 2018, 16:31:30 »
Kadet,

prijde mi, ze se snazis najit obecne reseni/popis/pristup na pomerne konkretni vec. Coz ti vetsinou nevyjde. Kdyz prirovname ten objekt k cihle, tak s tim pracujes jako s cihlou (nejdriv hezky vedle sebe a pak dalsi radek) otazka zni jestli stejnej objekt pouzijes i na stavbu mrakodrapu (tam bys asi pouzil objekt pilir a stavel ho nahoru a pak okolo nej).

Tahle prednaska by se ti mohla libit: https://www.youtube.com/watch?v=OSGv2VnC0go

Nerikam, ze vystihuje presne to na co se ptas. S tema objektama, vem si ze mas objekt "session" nebo "user" a potom mas nejaky objekt "message" a "log". Na kazdy mozna pouzijes jiny navrhovy vzor. Kdyz se budes snazit implementovat jeden a ten samy na vsechny, nebo najit nejaky super obecny, asi ti to nevyjde.

Pojem oop uz strasi tenhle svet dostatecne , dlouho tak si zaslouzi nejakou definici, at se chudaci juniori maji od ceho odpichnout. Pokud se definice nenajde, protoze si pod tim kazdej predstavuje neco jinyho, tak je to taky dobrej poznatek. Muze se pak celej pojem oop zahodit a vyresi se tim spousta semantickych nedorozumeni.

Jinak ja se bavim o modelovani realnyho sveta. Napr. business problemu. V takovym problemu figuruje cas. Kazdy z techto problemu muze byt namapovan na nejaky reaktivni system. Pokud v systemu nefiguruje cas, pak se da takovy problem reprezentovat pouhou statickou funkci, ktera mapuje vstupy na vystupy. Pak zadny oop neni treba, staci napsat obyc funkci a poskladat ji z mensich funkci atd.

Session je stav systemu v case. Message je explicitni instrukce na update toho stavu. Log je serializovana kolekce messagu v case.

Message i log muzu reprezentovat v nejakym jazyce s oop featurama. Ale otazka je jestli jsem dostatecnej masochista na to abych to udelal. Napr. Proc bych reprezentoval message jako nejakou python classu a pak ji definoval serialize a deserealize metody kdyz muzu pouzit klasickej dict, na kterej mi existuje milion funkci z python ekosystemu.

Kdyz jsme u pythonu, tohle video by reprezentovalo muj pohled.

"Stop writing classes"
https://youtu.be/o9pEzgHorH0


rigormortiz

Re:co si myslite o oop?
« Odpověď #48 kdy: 23. 12. 2018, 16:45:07 »

Pojem oop uz strasi tenhle svet dostatecne , dlouho tak si zaslouzi nejakou definici, at se chudaci juniori maji od ceho odpichnout. Pokud se definice nenajde, protoze si pod tim kazdej predstavuje neco jinyho, tak je to taky dobrej poznatek. Muze se pak celej pojem oop zahodit a vyresi se tim spousta semantickych nedorozumeni.

Jinak ja se bavim o modelovani realnyho sveta. Napr. business problemu. V takovym problemu figuruje cas. Kazdy z techto problemu muze byt namapovan na nejaky reaktivni system. Pokud v systemu nefiguruje cas, pak se da takovy problem reprezentovat pouhou statickou funkci, ktera mapuje vstupy na vystupy. Pak zadny oop neni treba, staci napsat obyc funkci a poskladat ji z mensich funkci atd.

Podivej se na ten koncept co pouziva Trailblazer (http://trailblazer.to/) a predevsim (http://trailblazer.to/gems/cells/)

Netvrdim, ze to je to nejlepsi a jediny, ale ty koncepcni casti a to jak "uchopili" problem se mi zamlouva. Jenze taky rozumim tomu, ze ne vzdycky to sedi/je mozny podle "modeloveho prikladu". Neboli jestli chces zobecnit "realnej svet" na nejakou tridu/sablonu, neuspejes. Jdu se mrknout na tu prednasku cos poslal, jsem zvedavej. Dik za link.

Kdyz vezmeme v potaz treba onen "log" ve chvili kdy ti to plive nejakej vystup do "souboru" je to asi fuk, ale ve chvili, kdy chces treba pouzit ruzny "system" do kterejch to loguje, prave treba polymorfizmus je na to jak delanej. Cili podle toho jestli je instance of "loguj do sentry" nebo "loguj do souboru" nebo "loguj do graylogu", ohnes to strasne jednoduse a nezabordeli se ti to. Protoze nekde ve tride volas jenom Log.write(message).

Shodou okolnosti ten prvni link co jsem ti poslal na tu prednasku tak tam pan velmi dobre vysvetluje, ze chces vracet iteratable misto dict a nemusis pak delat zbytecny bastleni.

Kadet

Re:co si myslite o oop?
« Odpověď #49 kdy: 23. 12. 2018, 17:03:45 »

Pojem oop uz strasi tenhle svet dostatecne , dlouho tak si zaslouzi nejakou definici, at se chudaci juniori maji od ceho odpichnout. Pokud se definice nenajde, protoze si pod tim kazdej predstavuje neco jinyho, tak je to taky dobrej poznatek. Muze se pak celej pojem oop zahodit a vyresi se tim spousta semantickych nedorozumeni.

Jinak ja se bavim o modelovani realnyho sveta. Napr. business problemu. V takovym problemu figuruje cas. Kazdy z techto problemu muze byt namapovan na nejaky reaktivni system. Pokud v systemu nefiguruje cas, pak se da takovy problem reprezentovat pouhou statickou funkci, ktera mapuje vstupy na vystupy. Pak zadny oop neni treba, staci napsat obyc funkci a poskladat ji z mensich funkci atd.

Podivej se na ten koncept co pouziva Trailblazer (http://trailblazer.to/) a predevsim (http://trailblazer.to/gems/cells/)

Netvrdim, ze to je to nejlepsi a jediny, ale ty koncepcni casti a to jak "uchopili" problem se mi zamlouva. Jenze taky rozumim tomu, ze ne vzdycky to sedi/je mozny podle "modeloveho prikladu". Neboli jestli chces zobecnit "realnej svet" na nejakou tridu/sablonu, neuspejes. Jdu se mrknout na tu prednasku cos poslal, jsem zvedavej. Dik za link.

Kdyz vezmeme v potaz treba onen "log" ve chvili kdy ti to plive nejakej vystup do "souboru" je to asi fuk, ale ve chvili, kdy chces treba pouzit ruzny "system" do kterejch to loguje, prave treba polymorfizmus je na to jak delanej. Cili podle toho jestli je instance of "loguj do sentry" nebo "loguj do souboru" nebo "loguj do graylogu", ohnes to strasne jednoduse a nezabordeli se ti to. Protoze nekde ve tride volas jenom Log.write(message).

Shodou okolnosti ten prvni link co jsem ti poslal na tu prednasku tak tam pan velmi dobre vysvetluje, ze chces vracet iteratable misto dict a nemusis pak delat zbytecny bastleni.

Nejvic polymorfickej mechanismus co znam jsou unix pipes a files. Misto toho abych v pythonu nebo jave bastlil svoji reimplementaci polymorfismu na logovani, radsi udelam

Sys.stderr.write(message)

A zabalim celrj program do nejakyho shell skriptu nebo systemd unit configu, kterej mi to redirectne do graylogu, sentry, do filu, systemd journalu.

Nac tahat zbytecny zavislosti na tyhle externi sluzby do jednoduchyho python skriptu. Kdyz to chce nekdo pustit na cli a podivat se na vystup, at ten log plivne do stderr. Kdyz to chce nekdo plivnout do graylogu, klidne muze.

Sam uz vis, ze je lepsi vracet iterator nez statickej list nebo dict. Pak zjstis ze celej takovej problem muzes namapovat na streamovaci system coz je jeste obecnejsi nez iterator. Ale to uz je lekce c.2.


Re:co si myslite o oop?
« Odpověď #50 kdy: 23. 12. 2018, 17:20:19 »
Rozdíl oproti C++like jazykům vidím hlavně v eleganci
Rozdíl je hlavně v tom, že poslání zprávy a volání funkce je úplně něco jiného. C++ to pomíchalo a lidi to přestali rozlišovat. K jeho dobru je třeba říct, že k tomu byl docela pádnej důvod (výkon). Ale výsledek je bohužel smutnej.

Předně dynamické typování vnímám jako nezbytnost pro objektový přístup.
A to je podle mě přesně ta výš zmíněná chyba. Obvykle tohle totiž řekne člověk, kterej ví, že "opravdové OOP" potřebuje něco flexibilnějšího než volání compile-time metod (např. pro respondsToSelector) a v tomhle smyslu je to celkem i pravda.

Ve skutečnosti ale není. Protože posílání zpráv NENÍ volání funkcí. Čili to s tím vůbec nesouvisí. Zprávy můžou být klidně typované, vnitřek actoru může být klidně typovaný, není to žádný problém. Protože zprávy se prostě zpracovávají úplně jiným mechanismem než se volají funkce.

Viz Erlang, Elixir: to jsou prakticky dva jazyky v jednom: struktura jednoho je daná strukturou komunikace (kdo komu posílá co), druhé je "běžný" funkcionální jazyk (který sice není typovaný, ale klidně by mohl být).

rigormortiz

Re:co si myslite o oop?
« Odpověď #51 kdy: 23. 12. 2018, 17:28:33 »

Pojem oop uz strasi tenhle svet dostatecne , dlouho tak si zaslouzi nejakou definici, at se chudaci juniori maji od ceho odpichnout. Pokud se definice nenajde, protoze si pod tim kazdej predstavuje neco jinyho, tak je to taky dobrej poznatek. Muze se pak celej pojem oop zahodit a vyresi se tim spousta semantickych nedorozumeni.

Jinak ja se bavim o modelovani realnyho sveta. Napr. business problemu. V takovym problemu figuruje cas. Kazdy z techto problemu muze byt namapovan na nejaky reaktivni system. Pokud v systemu nefiguruje cas, pak se da takovy problem reprezentovat pouhou statickou funkci, ktera mapuje vstupy na vystupy. Pak zadny oop neni treba, staci napsat obyc funkci a poskladat ji z mensich funkci atd.

Podivej se na ten koncept co pouziva Trailblazer (http://trailblazer.to/) a predevsim (http://trailblazer.to/gems/cells/)

Netvrdim, ze to je to nejlepsi a jediny, ale ty koncepcni casti a to jak "uchopili" problem se mi zamlouva. Jenze taky rozumim tomu, ze ne vzdycky to sedi/je mozny podle "modeloveho prikladu". Neboli jestli chces zobecnit "realnej svet" na nejakou tridu/sablonu, neuspejes. Jdu se mrknout na tu prednasku cos poslal, jsem zvedavej. Dik za link.

Kdyz vezmeme v potaz treba onen "log" ve chvili kdy ti to plive nejakej vystup do "souboru" je to asi fuk, ale ve chvili, kdy chces treba pouzit ruzny "system" do kterejch to loguje, prave treba polymorfizmus je na to jak delanej. Cili podle toho jestli je instance of "loguj do sentry" nebo "loguj do souboru" nebo "loguj do graylogu", ohnes to strasne jednoduse a nezabordeli se ti to. Protoze nekde ve tride volas jenom Log.write(message).

Shodou okolnosti ten prvni link co jsem ti poslal na tu prednasku tak tam pan velmi dobre vysvetluje, ze chces vracet iteratable misto dict a nemusis pak delat zbytecny bastleni.

Nejvic polymorfickej mechanismus co znam jsou unix pipes a files. Misto toho abych v pythonu nebo jave bastlil svoji reimplementaci polymorfismu na logovani, radsi udelam

Sys.stderr.write(message)

A zabalim celrj program do nejakyho shell skriptu nebo systemd unit configu, kterej mi to redirectne do graylogu, sentry, do filu, systemd journalu.

Nac tahat zbytecny zavislosti na tyhle externi sluzby do jednoduchyho python skriptu. Kdyz to chce nekdo pustit na cli a podivat se na vystup, at ten log plivne do stderr. Kdyz to chce nekdo plivnout do graylogu, klidne muze.

Sam uz vis, ze je lepsi vracet iterator nez statickej list nebo dict. Pak zjstis ze celej takovej problem muzes namapovat na streamovaci system coz je jeste obecnejsi nez iterator. Ale to uz je lekce c.2.

Skouknul jsem tu prednasku a od zacatku mi to prislo, ze misto tridy proste jenom nekdo chtel napsat "helper" bo jak tam rikal "my heap toolkit". Rozhodne jsou tam jsou hezky veci a dik za sharing.

Tvuj problem je, ze ty vidis "jednoduchej" python script, to cos napsal za jako modelovej priklad pak vypada, ze to vyjde. Jenze pokud se bavis o necem vetsim nez je par funkci ktery nekde neco berou a nekam to davaj uz ti to nevyjde. Mas predpoklad, ze mas k dispozici bash cili to co nevybordelis ve svym pythonu zacnes bordelit ve svym bashi, kterej treba na windowsech neni, stejne jako existence systemd je dalsi "hard dependency". To mas jako kdyz chces bejt nekdo database agnostic nebo platform agnostic, ale zaroven reknes, ze to bezi jenom na linuxu s postgresem :)

To co ti chci rict, zes sis "vytvoril konkretni problem" a nasel sis na nej "konkretni reseni", ale zaroven tu pises, ze chces "obecny principy" a "realny svet". Navzajem se to vylucuje.

Kdyz delas skript tak delas skript a pokrocily "techniky/pristupy" v tom resi nemusis, protoze je to konkretni skrtip na reseni konkretniho problemu. Pokud mas aplikaci, ktera resi treba logovani a analyzu hovoru pro call centrum, muzes to napsat jako 300 skriptu ktery budes nejak importovat jeden do druhyho, nebo to muzes napsat jako clovek, kdy sice budes mit ve finale 500 souboru a 200 trid, ale aspon se to bude dat cist, testovat a rozsirovat a ne z toho delat nejaky spagety a dalsich 20 berlickovejch bashu okolo toho.

Jestli tady jde o premerovani udu a dogmatickou demagogii kde minimalismus je doktrina a zadna promena nebude mit vic jak tri pismenka, prosim jak je libo. Klidne ti i reknu ze mas pravdu a ze to tak je nejlepsi, kdyz te to potesi ;)

Salut.

Kadet

Re:co si myslite o oop?
« Odpověď #52 kdy: 23. 12. 2018, 17:45:54 »

Pojem oop uz strasi tenhle svet dostatecne , dlouho tak si zaslouzi nejakou definici, at se chudaci juniori maji od ceho odpichnout. Pokud se definice nenajde, protoze si pod tim kazdej predstavuje neco jinyho, tak je to taky dobrej poznatek. Muze se pak celej pojem oop zahodit a vyresi se tim spousta semantickych nedorozumeni.

Jinak ja se bavim o modelovani realnyho sveta. Napr. business problemu. V takovym problemu figuruje cas. Kazdy z techto problemu muze byt namapovan na nejaky reaktivni system. Pokud v systemu nefiguruje cas, pak se da takovy problem reprezentovat pouhou statickou funkci, ktera mapuje vstupy na vystupy. Pak zadny oop neni treba, staci napsat obyc funkci a poskladat ji z mensich funkci atd.

Podivej se na ten koncept co pouziva Trailblazer (http://trailblazer.to/) a predevsim (http://trailblazer.to/gems/cells/)

Netvrdim, ze to je to nejlepsi a jediny, ale ty koncepcni casti a to jak "uchopili" problem se mi zamlouva. Jenze taky rozumim tomu, ze ne vzdycky to sedi/je mozny podle "modeloveho prikladu". Neboli jestli chces zobecnit "realnej svet" na nejakou tridu/sablonu, neuspejes. Jdu se mrknout na tu prednasku cos poslal, jsem zvedavej. Dik za link.

Kdyz vezmeme v potaz treba onen "log" ve chvili kdy ti to plive nejakej vystup do "souboru" je to asi fuk, ale ve chvili, kdy chces treba pouzit ruzny "system" do kterejch to loguje, prave treba polymorfizmus je na to jak delanej. Cili podle toho jestli je instance of "loguj do sentry" nebo "loguj do souboru" nebo "loguj do graylogu", ohnes to strasne jednoduse a nezabordeli se ti to. Protoze nekde ve tride volas jenom Log.write(message).

Shodou okolnosti ten prvni link co jsem ti poslal na tu prednasku tak tam pan velmi dobre vysvetluje, ze chces vracet iteratable misto dict a nemusis pak delat zbytecny bastleni.

Nejvic polymorfickej mechanismus co znam jsou unix pipes a files. Misto toho abych v pythonu nebo jave bastlil svoji reimplementaci polymorfismu na logovani, radsi udelam

Sys.stderr.write(message)

A zabalim celrj program do nejakyho shell skriptu nebo systemd unit configu, kterej mi to redirectne do graylogu, sentry, do filu, systemd journalu.

Nac tahat zbytecny zavislosti na tyhle externi sluzby do jednoduchyho python skriptu. Kdyz to chce nekdo pustit na cli a podivat se na vystup, at ten log plivne do stderr. Kdyz to chce nekdo plivnout do graylogu, klidne muze.

Sam uz vis, ze je lepsi vracet iterator nez statickej list nebo dict. Pak zjstis ze celej takovej problem muzes namapovat na streamovaci system coz je jeste obecnejsi nez iterator. Ale to uz je lekce c.2.

Skouknul jsem tu prednasku a od zacatku mi to prislo, ze misto tridy proste jenom nekdo chtel napsat "helper" bo jak tam rikal "my heap toolkit". Rozhodne jsou tam jsou hezky veci a dik za sharing.

Tvuj problem je, ze ty vidis "jednoduchej" python script, to cos napsal za jako modelovej priklad pak vypada, ze to vyjde. Jenze pokud se bavis o necem vetsim nez je par funkci ktery nekde neco berou a nekam to davaj uz ti to nevyjde. Mas predpoklad, ze mas k dispozici bash cili to co nevybordelis ve svym pythonu zacnes bordelit ve svym bashi, kterej treba na windowsech neni, stejne jako existence systemd je dalsi "hard dependency". To mas jako kdyz chces bejt nekdo database agnostic nebo platform agnostic, ale zaroven reknes, ze to bezi jenom na linuxu s postgresem :)

To co ti chci rict, zes sis "vytvoril konkretni problem" a nasel sis na nej "konkretni reseni", ale zaroven tu pises, ze chces "obecny principy" a "realny svet". Navzajem se to vylucuje.

Kdyz delas skript tak delas skript a pokrocily "techniky/pristupy" v tom resi nemusis, protoze je to konkretni skrtip na reseni konkretniho problemu. Pokud mas aplikaci, ktera resi treba logovani a analyzu hovoru pro call centrum, muzes to napsat jako 300 skriptu ktery budes nejak importovat jeden do druhyho, nebo to muzes napsat jako clovek, kdy sice budes mit ve finale 500 souboru a 200 trid, ale aspon se to bude dat cist, testovat a rozsirovat a ne z toho delat nejaky spagety a dalsich 20 berlickovejch bashu okolo toho.

Jestli tady jde o premerovani udu a dogmatickou demagogii kde minimalismus je doktrina a zadna promena nebude mit vic jak tri pismenka, prosim jak je libo. Klidne ti i reknu ze mas pravdu a ze to tak je nejlepsi, kdyz te to potesi ;)

Salut.

Chlape neco mi naznacuje ze ti 1. dochazi para a za 2. delas porad na prvnim sw projektu, kterej je hromada sracek rozsekana do 500 souboru a milionu trid. Nedivim se ti, ze te to desi a hledas zpusob jak se v tom bordelu zorientovat pomoci organizace kodu, enkapsulace, statickyho typovani apod.

Ja ti jenom rikam ze kdyz trochu odzoomujes a podivas se na problem co resis, tj. analyza logu a hovoru pro call centrum, tak je to prachsprostej problem analyzy streamu dat. Neco mi rika, ze tam na to pouzivate scalu a ze je to prasecina.

Archie

Re:co si myslite o oop?
« Odpověď #53 kdy: 23. 12. 2018, 17:56:58 »
Velky spatny. Jak na backendu, tak frontendu. A strasne nerad bych se k OOP kdykoliv vracel, pokud bych nemel programovat hry. Typescript + Node.js na serveru, React na frontendu, funkce. Programator se v OOP daleko vic vrta v rezii vlastniho programovani, nezli v reseni problemu.

Samozrejme, nelze brat takto dogmaticky. 100 projektu, 100 pristupu. Takove ty webove CMS protkane AbstractPageHyperAbstractPageProvidery, kde kurzorkem v debugu preskakuji uz dvacatou tridu, abych na spodku vodopadu nalezl "god komponentu" udrzujici si vlastni stav v 10 lokalnich promennych - tak tomu se rad vyhnu.

p.s. Videl jsem i jQuery + Vanila JS objektove pojaty frontend. Kombinace dedicnosti, css selektorů, prefixu, sufixu a externich pluginu byla skutecnym pozitkem pro milovniky dobreho kodu.

Kiwi

Re:co si myslite o oop?
« Odpověď #54 kdy: 23. 12. 2018, 18:03:31 »
Rozdíl oproti C++like jazykům vidím hlavně v eleganci
Rozdíl je hlavně v tom, že poslání zprávy a volání funkce je úplně něco jiného. C++ to pomíchalo a lidi to přestali rozlišovat. K jeho dobru je třeba říct, že k tomu byl docela pádnej důvod (výkon). Ale výsledek je bohužel smutnej.

Předně dynamické typování vnímám jako nezbytnost pro objektový přístup.
A to je podle mě přesně ta výš zmíněná chyba. Obvykle tohle totiž řekne člověk, kterej ví, že "opravdové OOP" potřebuje něco flexibilnějšího než volání compile-time metod (např. pro respondsToSelector) a v tomhle smyslu je to celkem i pravda.

Ve skutečnosti ale není. Protože posílání zpráv NENÍ volání funkcí. Čili to s tím vůbec nesouvisí. Zprávy můžou být klidně typované, vnitřek actoru může být klidně typovaný, není to žádný problém. Protože zprávy se prostě zpracovávají úplně jiným mechanismem než se volají funkce.

Viz Erlang, Elixir: to jsou prakticky dva jazyky v jednom: struktura jednoho je daná strukturou komunikace (kdo komu posílá co), druhé je "běžný" funkcionální jazyk (který sice není typovaný, ale klidně by mohl být).
Podle mě se v tom strašně pipláte. Z praktického pohledu mě nikdy nenapadlo nad tím tak dumat. Jen vnímám rozdíly, resp. to, co mě irituje jinde. Mě vůbec připadá, že se tady strašně teoretizuje, místo aby si lidi prakticky zkusili A, pak B a pak řešili, v čem se jim dělá lépe.

Jose

Re:co si myslite o oop?
« Odpověď #55 kdy: 23. 12. 2018, 18:26:23 »
OOP má své opodstatnění a je to silný nástroj, bohužel to často dopadá jako když dáte dítěti do ruky nabitou pistoli ;D

JSH

Re:co si myslite o oop?
« Odpověď #56 kdy: 23. 12. 2018, 18:27:47 »
Rozdíl oproti C++like jazykům vidím hlavně v eleganci
Rozdíl je hlavně v tom, že poslání zprávy a volání funkce je úplně něco jiného. C++ to pomíchalo a lidi to přestali rozlišovat. K jeho dobru je třeba říct, že k tomu byl docela pádnej důvod (výkon). Ale výsledek je bohužel smutnej.
C++ to nepomíchalo. Objektový model C++ je +- převzatý ze Simuly.

Re:co si myslite o oop?
« Odpověď #57 kdy: 23. 12. 2018, 18:29:56 »
Podle mě se v tom strašně pipláte. Z praktického pohledu mě nikdy nenapadlo nad tím tak dumat. Jen vnímám rozdíly, resp. to, co mě irituje jinde. Mě vůbec připadá, že se tady strašně teoretizuje, místo aby si lidi prakticky zkusili A, pak B a pak řešili, v čem se jim dělá lépe.
Ne, tohle není žádná teoretická onanie. Má to konkrétní (tragické) důsledky. Ten asi nejhorší ze všech je, že když máš posílání zpráv implementované (jednoduše) jako volání metod, tak při vícevláknovém zpracování ti vznikají race conditions. Což je přesně to, co to dnešní praseOOP dostává do kolen. A co by se nemohlo stát, kdyby se tyhle dvě věci nemíchaly.

Je to velice praktická věc, akorát ten "teoretický" problém jako příčinu ne každý vidí, protože prostě nic jinýho neviděl, nezažil. Proto bych každýmu fakt vřele doporučoval si zkusit ten Elixir, aby mu to mohlo docvaknout. Zprávy jsou zprávy, mají se posílat do inboxu, odtud vybírat a (dle libovůle) zpracovávat. Žádný nesmysly typu vlákno Pes teď vlezlo do třídy Kočka. Pes je pes a kočka je kočka. Stačí to jenom nemíchat, tak snadné to je :)

Re:co si myslite o oop?
« Odpověď #58 kdy: 23. 12. 2018, 18:31:42 »
C++ to nepomíchalo. Objektový model C++ je +- převzatý ze Simuly.
V C++ se žádné zprávy do žádných inboxů neposílají. V C++ se posílání zpráv markýruje voláním (potenciálně virtuálních) metod.

Re:co si myslite o oop?
« Odpověď #59 kdy: 23. 12. 2018, 18:36:59 »
C++ to nepomíchalo. Objektový model C++ je +- převzatý ze Simuly.
V C++ se žádné zprávy do žádných inboxů neposílají. V C++ se posílání zpráv markýruje voláním (potenciálně virtuálních) metod.
Jo, pardon, špatně jsem tu větu pochopil. Ok, díky za upřesnění. Nechtěl jsem říct, že to Stoustrup vymyslel, ale že to zpopularizoval. Což byl podle mě (multi)million dollar mistake.