- netreba riesit synchronizaciu
- staci jedna instancia konkretnej reprezentacie pre celu aplikaciu
- je to bezpecne davat to aj do API alebo neznamym programatorom
Hlavne prvy bod vedie v dnesnej dobe, ked sa riesi paralelizacia.
Immutable je nové falešné náboženství slibující vyřešit všechny vaše problémy, podobně jako před lety náboženství OOP, jenže opět nevyřeší.
Suhlas; ze vyriesi vsetky problemy som sa ani nesnazil tvrdit.
Immutable se náramně hodí na read-only sdílené data. V momentě kdy je třeba sdílené data modifikovat, je immutable ještě horší než tradiční synchronizace, při výměně instance za novou verzi vzniká špatně debugovatelný tradiční problém read-modify-write.
Ako casto je treba mat modifikovatelne zdielane data mimo I/O? Teda v Jave a Swingu so swingbindingom to treba je, ale Haskellisti so svojimi pure funkciami by skor nesuhlasili.
Na problém s paralelismem a API není immutable nutné, stejný efekt má prostá kopie objektu.
To som pisal v minulom prispevku, ze sa uklonujes k smrti. Tak je navrhnuty aj "vyborny" java.util.Date. Ked chcem API s datumami a nechcem si tahat ako zavislost Joda time, tak musim kazdy Date "z vonku" naklonovat. Rovnako to plati aj u Date posielaneho von, ak je to sucast mojho stavu.
Je preto Date nejaky lepsi ohladne problemov s read-modify-write? Ja si myslim, ze nie, dokonca je aj preto horsi.
- netreba riesit synchronizaciu
- staci jedna instancia konkretnej reprezentacie pre celu aplikaciu
- je to bezpecne davat to aj do API alebo neznamym programatorom
Hlavne prvy bod vedie v dnesnej dobe, ked sa riesi paralelizacia.
Ja viem na co to je, ale 90% pripadov? Kolko % javistov niekedy riesila synchronizaciu, ked vacsina aj tak lepi servlety v springu, alebo apky v androide? Je to uzitocne, ale iba na velmi specificke pripady. Nie je to ani prirodzene v zmysle oop. Zober si instanciu cloveka. Chces povedat, ze pribral. Vytvoris kvoli tomu noveho cloveka s inou vahou?
Aj appky v Androide miestami potrebuju synchronizaciu. Preto si myslim, ze ju riesil kazdy, aj ked nie kazdy si to uvedomil - niekto nasekal race conditiony.
V Jave sa bezne novy clovek kvoli zmene nevytvori; v inych programovacich jazykoch ano. Myslim, ze je len otazkou casu, co sa aj Java posunie k niecomu funkcionalnejsiemu a bude sa tam bezne vytvarat iny clovek.