Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Mirek Prýmek

Stran: 1 ... 108 109 [110] 111 112 ... 618
1636
Vývoj / Re:Co si myslíte o OOP?
« kdy: 24. 12. 2018, 10:08:04 »
int nakafunkce(...) { return ERR_NOT_SUPPORTED;}
Na jakoukoli zprávu, ne na zprávu "nakafunkce".

1637
Pozpatku uvazovat naucit se akorat.
Mistře Yodo?

1638
Su poskytovatelia vpn, ktori neukladaju logy a ani timestamps.
Jenom takový skromný dotaz: jak to víš?

1639
Vývoj / Re:co si myslite o oop?
« kdy: 24. 12. 2018, 00:40:33 »
Je to stejně “krkolomné” jako ve Smalltalku.
Ve Smalltalku je to, pokud se nepletu, na dva řádky. Můžeš ukázat tu implementaci v Javě? Je taky na dva řádky?

1640
Vývoj / Re:co si myslite o oop?
« kdy: 24. 12. 2018, 00:10:08 »
To je v zásadě pravda.
Ne, není to pravda. Bacsa mixuje úroveň jazyka (volání metody vs. předání dat) a jeho implementaci (konkrétní implementace předání dat vs. nějaké to vyhledávání ve virtuální tabulce, ASM CALL apod.)

To, že sémantiku předávání zpráv můžu za nějakých podmínek implementovat pomocí volání metody, neznamená, že je to totéž. Volat můžu jenom metody, které předem znám (jsou v tabulce metod), data můžu předávat jakákoliv a žádnou tabulku k tomu nepotřebuju.

Docela rozumný kompromis je použít oboje - mít tabulku metod, ale zároveň i nějaký fallback, který můžu využít ke zpracování neznámých zpráv (např. Python IIRC).

1641
Vývoj / Re:co si myslite o oop?
« kdy: 24. 12. 2018, 00:03:44 »
Volá se funkce podle nějakého ABI, konkrétní implementace závisí na jazyce, ale umí to třeba i Java.
Jak v Javě napíšeš třídu, na které když zavoláš jakoukoli - tj. i v době překladu neznámou metodu, tak ti vrátí string "Sorry, I do not understand"?

Pokud to jde (nevím), tak nějak extrémně krkolomně. Přitom tohle by měl být základ skutečného OOP.

1642
Vývoj / Re:co si myslite o oop?
« kdy: 23. 12. 2018, 23:10:55 »
Mirku, ten, kdo posila tu zpravu neztraci ihned kontrolu v pripade synchronniho (blokujiciho) volani, jak jsem zminoval. Tj. Tazatel po odeslani zamrzne vyjma toho, ze je schopen prijmout odpoved na svoji odeslanou zpravu. Tazatel a odpovidatel se muzou koordinovat pomoci unikatniho klice (correlation id), ktere svazuje request a response k sobe.
Já teď nevím, o čem mluvíš. Jestli o "mainstream OOP", "původním OOP", actor modelu nebo nějaké své představě. Pokud o actor modelu, tak nemáš pravdu hned v několika bodech.

P.S. tím mým "ztrácí kontrolu" jsem myslel, že nemůže poslat něco ve stylu ukazatel, co by mohl po doručení měnit.

Ano, kazdy agent funguje jakoby plne ve svym pocitaci, s vlastnimi zdroji, ve vlastnim vlakne. Jak moc blizko se tehle abstrakce v softwaru implementujicim agenty/actory dosahne je irelevantni. Konceptualne jsou plne izolovani.
Souhlas - jak je to implementované je irelevantní, pokud jsou splněné jisté požadavky.

Nejsem toho nazoru. Prijimaci strana musi na urcite urovni zprave rozumet, jinak by neumela data zpracovat.
A v tom se právě mýlíš. V actor modelu i "původním OOP" můžeš mít objekt, který na jakoukoli zprávu odpoví "sorry, nerozumím". Opět: v pseudoOOP implementovaném pomocí volání metod to není realizovatelné.

1643
Vývoj / Re:co si myslite o oop?
« kdy: 23. 12. 2018, 22:48:48 »
Kdyz usporadam jeho operace v kodu podle toho jak pujdou po sobe, dokonce.ten kod zacne vypadat jako synchronni. Ale presto muzu volat jeho jednotlivy 'metody'.
Přiznám se, že vůbec nejsem schopnej dešifrovat, co se snažíš sdělit :)

1644
Vývoj / Re:co si myslite o oop?
« kdy: 23. 12. 2018, 22:47:21 »
To je pravda, ale jen v rámci jednoho adresního prostoru.
Znova opakuju: v jakém smyslu je to pravda (v rámci jednoho adresního prostoru)?

1645
Vývoj / Re:co si myslite o oop?
« kdy: 23. 12. 2018, 22:45:58 »
Tak těmto definicím vyhovuje PHP docela dobře, tedy alespoň v mých aplikacích.
To není definice, jenom znínění dvou vlastností, které jsou podstatné pro ten protipříklad.

Jinak formální definice actor modelu existují (i velmi formální) a každý si může ověřit, jestli je ta která implementace OOP splňuje nebo ne.

1646
Vývoj / Re:co si myslite o oop?
« kdy: 23. 12. 2018, 22:09:40 »
Volani funkce a synchronni poslani zpravy, tj. zaslani pozadavku a obdrzeni odpovedi, jsou skutecne totez, pokue je to v ramci programovaciho jazyka.
Tak já zkusím jeden protipříklad: když se skutečně předává zpráva, tak se předávají data a 1. ten, kdo je předává nad nimi ztrácí jakoukoliv kontrolu, 2. příjemce jim nutně nemusí rozumět. Čili jde například udělat velmi snadno obecnou RPC proxy, která umí proxovat cokoli, i to, co v době jejího překladu ještě vůbec neexistuje. S voláním metod tohle udělat nejde.

Ale z pohledu actor systemu bezi kazdy agent ve svem vlakne.
Tak to asi bude dost záležet na definicích pojmů. Nemám potřebu se o ně přít ani je řešit. To, co je opravdu důležitý, je, že actors komunikují pouze pomocí předávání dat, tj. nesdílejí ani paměť, ani jiné zdroje, čili z principu nemůže nastat race condition jako u OOP, nemusí se používat žádné zběsilé zámky, kritické sekce a podobné srandy. Pořád existuje problém deadlocku kvůli možným kruhovým závislostem, ale to asi žádné extraelegantní řešení stejně nemá (aspoň já o něm nevím).

Jestli dvěma goroutinám, které si posílají zprávy pomocí kanálu někdo chce nebo nechce říkat "dvě vlákna", je mi celkem jedno. Skutečné OS vlákno to může být jenom jedno a žádná tragická performance penalty tam není (btw, stejný princip se používá i v embedded), ani žádné extrabuřthandlery ani jiný "obrovský balast".

1647
Vývoj / Re:co si myslite o oop?
« kdy: 23. 12. 2018, 19:21:55 »
Poslani synchronni zpravy a volani funkce je to same.
V jakém smyslu?

Nebo preferujete asynchronni posilani zprav, kazdy obekt s vlastnim vlaknem, handlerem a obrovskym balastem navic?
Není potřeba vlastní vlákno. Nevím, co si mám představit pod handlerem. Jaký "obrovský balast"?

1648
Vývoj / Re:co si myslite o oop?
« 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.

1649
Vývoj / Re:co si myslite o oop?
« 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.

1650
Vývoj / Re:co si myslite o oop?
« 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 :)

Stran: 1 ... 108 109 [110] 111 112 ... 618