Co si myslíte o OOP?

Kadet

Re:Co si myslíte o OOP?
« Odpověď #1260 kdy: 23. 01. 2019, 18:12:54 »
Haskell je prilis striktni, neodpovida lidske intuici
Z mýho pohledu hlavně většinové programátorské intuici neodpovídá líné vyhodnocování. Většina z nás začínala a nejvíc času strávila přemýšlením v intencích "algoritmus je posloupnost kroků [...]".

Ja se majoritnich nazoru stitim. Majoritni nazor je jako lemmings nebo ovce.
Majoritní názor taky je, že je Země kulatá. Minoritní názor je, že je placka.

Kdyby záleželo na tom, co jde v čem implementovat, tak je instrukce mov ta úplně nejobecnější možná abstrakce (je výpočetně úplná, takže jde pomocí nich implementovat úplně všechno).
Ještě lepší je logický NOR, s ním si dospělej chlap vystačí ;)

Nedovedl jsem si predstavit, ze se zrovna Ty na tohle nechytnes. ;-)
Tak jasně, pro mě je to prostě srdcovka. S multiagentními systémy jsem si pohrával ještě když jsem tahal kačera po škole :)

Majoritni nazory. Ano, to je vec co se meni v case. S kulatou zemi to byl nejdriv minoritni nazor a ovce se drzely majoritniho. Nebyla ale placata zeme mytus?

Dneska je programovani zhruba na urovni pred Kopernikem, takze se od tech majoritnich cirkevnich nazoru distancuju.

Pokud dokazes nejak intuitivne pro lidi poskladat nor gates do vyssich abstrakci pak proc ne. Byl by to dobrej system protoze by nemel diry v abstrakcich.


Kadet

Re:Co si myslíte o OOP?
« Odpověď #1261 kdy: 23. 01. 2019, 18:14:12 »
Jak? Funkcionalitu tridy muzes implementovat skrz prototypy. Prototypy muzes implementovat skrz dicty. Ergo dict je obecnejsi abstrakce nez trida.
Tahle logika kulhá na všechny čtyři. Kdyby záleželo na tom, co jde v čem implementovat, tak je instrukce mov ta úplně nejobecnější možná abstrakce (je výpočetně úplná, takže jde pomocí nich implementovat úplně všechno).

Super, tak na tom postav intuitivni programovaci jazyk a budes mit perfektni system.

Re:Co si myslíte o OOP?
« Odpověď #1262 kdy: 23. 01. 2019, 18:24:39 »
Bud mam asynchronni poslani zpravy. Fire and forget.

Nebo mam synchronni volani zpravy, totez co volani funkce nebo metody. A to jsou celkem dve zpravy. Jedna odesilajici pozadavek, druha prijimajici vysledek.
To s tím, co píšu, přímo nesouvisí.

Rozdíl je v tom, jestli se adresát zprávy autonomně rozhoduje, co udělá. Pokud volám metodu, tak se o ničem nerozhoduje, prostě se provede kód metody. To má potom různé důsledky, třeba právě v tom, jestli (jak snadno) jde udělat obecná proxy.

Re:Co si myslíte o OOP?
« Odpověď #1263 kdy: 23. 01. 2019, 18:26:24 »
Dneska je programovani zhruba na urovni pred Kopernikem, takze se od tech majoritnich cirkevnich nazoru distancuju.
Jak myslíš, no. Já bych si spíš vsadil, že to ještě v průběhu života přehodnotíš, ale třeba bych prohrál :)

Youda

Re:Co si myslíte o OOP?
« Odpověď #1264 kdy: 23. 01. 2019, 18:31:09 »
Bud mam asynchronni poslani zpravy. Fire and forget.

Nebo mam synchronni volani zpravy, totez co volani funkce nebo metody. A to jsou celkem dve zpravy. Jedna odesilajici pozadavek, druha prijimajici vysledek.
To s tím, co píšu, přímo nesouvisí.

Rozdíl je v tom, jestli se adresát zprávy autonomně rozhoduje, co udělá. Pokud volám metodu, tak se o ničem nerozhoduje, prostě se provede kód metody. To má potom různé důsledky, třeba právě v tom, jestli (jak snadno) jde udělat obecná proxy.

A kdyz zavolam metodu, co se sama interne rozhodne co udela?
Kolik andelu se vejde na spicku jehly?
K cemu je dobre posilat do objektu zpravu, se kterou objekt neumi pracovat? Aby mi vratil InvalidArgumentException?
Neni nahodou lepsi mit metodu se staticky typovanymi parametry, aby vubec nebylo mozne nesmyslnou zpravu objeku zaslat?


Re:Co si myslíte o OOP?
« Odpověď #1265 kdy: 23. 01. 2019, 18:34:09 »
A kdyz zavolam metodu, co se sama interne rozhodne co udela?
Tak se na tom, co jsem napsal, nemění ani čárka.

K cemu je dobre posilat do objektu zpravu, se kterou objekt neumi pracovat? Aby mi vratil InvalidArgumentException?
Neni nahodou lepsi mit metodu se staticky typovanymi parametry, aby vubec nebylo mozne nesmyslnou zpravu objeku zaslat?
Jak kdy a jak k čemu. Je "k něčemu dobré", že můžeš http serveru poslat nevalidní request? Je "k něčemu dobré", že po něm můžeš chtít resource, který nemá, a on ti odpoví "404 not found"?

Nevím, nerozumím moc smyslu té otázky.

Kit

Re:Co si myslíte o OOP?
« Odpověď #1266 kdy: 23. 01. 2019, 18:36:15 »
Majoritní názor taky je, že je Země kulatá. Minoritní názor je, že je placka.

Majoritní názor je, že Bůh existuje, minoritní názor je, že Bůh neexistuje.

Kit

Re:Co si myslíte o OOP?
« Odpověď #1267 kdy: 23. 01. 2019, 18:41:24 »
Bud mam asynchronni poslani zpravy. Fire and forget.

Nebo mam synchronni volani zpravy, totez co volani funkce nebo metody. A to jsou celkem dve zpravy. Jedna odesilajici pozadavek, druha prijimajici vysledek.

Někdy stačí místo pull používat push. Spoustu aplikací by to změnilo od základu.

Kit

Re:Co si myslíte o OOP?
« Odpověď #1268 kdy: 23. 01. 2019, 18:57:15 »
Jak kdy a jak k čemu. Je "k něčemu dobré", že můžeš http serveru poslat nevalidní request? Je "k něčemu dobré", že po něm můžeš chtít resource, který nemá, a on ti odpoví "404 not found"?

V důsledku by to znamenalo, že by každý klient musel přesně vědět, na co se smí kterého serveru zeptat. Ostatní požadavky by musel ten klient stornovat ještě před jeho odesláním. Tohle může splňovat tzv. tlustý klient.

Vlastně to můžeme zobecnit, že u statického typování je klient tlustý, ale server tenký. U dynamického typování je tomu naopak.

Youda

Re:Co si myslíte o OOP?
« Odpověď #1269 kdy: 23. 01. 2019, 19:35:28 »

K cemu je dobre posilat do objektu zpravu, se kterou objekt neumi pracovat? Aby mi vratil InvalidArgumentException?
Neni nahodou lepsi mit metodu se staticky typovanymi parametry, aby vubec nebylo mozne nesmyslnou zpravu objeku zaslat?
Jak kdy a jak k čemu. Je "k něčemu dobré", že můžeš http serveru poslat nevalidní request? Je "k něčemu dobré", že po něm můžeš chtít resource, který nemá, a on ti odpoví "404 not found"?

Nevím, nerozumím moc smyslu té otázky.

Smysl one otazky spociva v tom, jaky ze je rozdil mezi synchronni zpravou a zavolanim metody.

Kdyz poslu Tomcatu nevalidni Http request ve smyslu, ze to vybec neni Http request, Tomcat (catalina) to odpalkuje hned a k memu Servletu se to vubec nedostane.
Pokud poslu Tomcatu VALIDNI request, Tomcat instaciuje objekt HttpRequest a ten preda dispatcheru, ktery kdyz nic nenajde, tak SPRAVNE odpovi 404 not found pomoci objektu HttpResponse.

Metoda se staticky typovanym atributen tedy NEMUZE dostat nekorektni data ve smyslu, ze to neni objekt HttpRequest.

A ja nevidim zadnou vyhodu v tom, aby se mi do ServletDispatcheru sypal neidentifikovatelny bordel a dej se vule bozi.

Kit

Re:Co si myslíte o OOP?
« Odpověď #1270 kdy: 23. 01. 2019, 19:47:22 »
Kdyz poslu Tomcatu nevalidni Http request ve smyslu, ze to vybec neni Http request, Tomcat (catalina) to odpalkuje hned a k memu Servletu se to vubec nedostane.

Nesmíš Tomcatu poslat nevalidní HTTP request. Klient s ním nesmí ani navázat spojení, protože formát požadavku (typ) není splněn.

Re:Co si myslíte o OOP?
« Odpověď #1271 kdy: 23. 01. 2019, 19:49:28 »
A ja nevidim zadnou vyhodu v tom, aby se mi do ServletDispatcheru sypal neidentifikovatelny bordel a dej se vule bozi.
Já taky ne. A proč to říkáš?

Já jsem jenom popisoval, jaký je rozdíl mezi voláním metody a předáním zprávy - že jsou to dvě zásadně odlišné věci.

Smysl one otazky spociva v tom, jaky ze je rozdil mezi synchronni zpravou a zavolanim metody.
No já myslím, že jsem to už řekl dostatečně jasně:

pokud volám metodu, tak tím bezprostředně spouštím nějaký (víc nebo míň) statický, předem daný kód. Pokud posílám zprávu, tak jenom sděluju nějakou informaci. Jak s tím příjemce informace naloží, jestli v návaznosti na to vyvine nějakou činnost nebo ne, je už na něm.

Vzhledem k tomu, jaké tohle jednoduché tvrzení pořád způsobuje vlny, by se asi slušelo dodat ještě tohle:

1. Je to rozdíl především koncepční, až podružně technický. Klíčové je, jestli je adresát "dostatečně autonomní" (ano, jsem si vědom toho, jak je to vágní), aby se "sám rozhodnul", a to "na základě informací, které jsou mu dostupné".

2. Implementované to může být technicky různě. Že je předání zprávy implementované voláním funkce/metody je irelevantní, jedná se o odlišné roviny abstrakce a buď se bavíme o jedné, nebo o druhé.[1]


[1] Je to stejné jako že si můžu v céčku implementovat Lisp, ale z toho neplyne, že C a Lisp je totéž nebo že C má všechny vlastnosti Lispu

Re:Co si myslíte o OOP?
« Odpověď #1272 kdy: 23. 01. 2019, 19:53:26 »
P.S. pokud je to potřeba vyloženě polopaticky:

Mezi voláním metody a předáním zprávy je podobný rozdíl jako mezi voláním metody a HTTP requestem. Pokud někdo bude tvrdit, že volání metody a HTTP request je totéž, tak podle mě jenom zbytečně mate pojmy. Vyvrátit se mu to ale nedá, protože ten člověk prostě jenom zbytečně označuje dvě meritorně rozdílné věci (neobvykle) stejným slovem. Jeho věc.

BoneFlute

  • *****
  • 1 983
    • Zobrazit profil
Re:Co si myslíte o OOP?
« Odpověď #1273 kdy: 23. 01. 2019, 20:58:57 »
Nebo mam synchronni volani zpravy, totez co volani funkce nebo metody. A to jsou celkem dve zpravy. Jedna odesilajici pozadavek, druha prijimajici vysledek.
Plus započítej implementaci, která se prostě nepovedla. A díky tomu máme objektově orientované programování (místo objektového programování) :-)

Kadet

Re:Co si myslíte o OOP?
« Odpověď #1274 kdy: 24. 01. 2019, 00:24:39 »
Dneska je programovani zhruba na urovni pred Kopernikem, takze se od tech majoritnich cirkevnich nazoru distancuju.
Jak myslíš, no. Já bych si spíš vsadil, že to ještě v průběhu života přehodnotíš, ale třeba bych prohrál :)

Jakmile vidis, ze to na co lidi pouzivaji tisice az miliony radku kodu jde pouzit par set nebo mozna nizkych tisic, a udelat to zaroven jednodussi, rychlejsi, citelnejsi, tak prehodnotis.

Jestli v programovani existuje silver bullet, pak bych bych vsadil hodne na to, ze to bude jednoduchost (simplicity).