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 - BoneFlute

Stran: 1 ... 121 122 [123] 124 125 ... 133
1831
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 22:23:04 »
No, o výhodách mi vyprávět nemusíš ;-) Mě by spíše zajímaly nějaké problémy, nevýhody, co se v FP řeší výrazně hůř, než v mutable světě.

1832
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 22:10:18 »
Tato diskuze je velmi zajimava :).

... Ale pro mě přináší oproti FP dvě zásadní věci, umožňuje mi udržet rozhraní minimalistické (nemusím všude pracovat s celým světem) a umožňuje mi udržet svět v konzistentním stavu.

V programovani her mam zkusenosti jen s tvorbou modu pro Minecraft, je mozne, ze to jde delat i jinak (nebylo by to poprve). Ale to s minimalistickym rozhranim (minimalne v MC) proste neplati. Napr. z kazde entity mohu vytahnout instnaci sveta a delat uplne cokoliv. To je jen iluze minimalniho rozhrani, pokud stejne mohu pristupovat kamkoliv - je to stejne jako f(world) -> world ve FP. Akorat tam je to explicitne receno, ze se s tim svetem neco muze stat, zatimco pri player.setDirection(1,0,0) nepoznam, jestli to nahodou nezasahuje i do jinych casti sveta. Nebo se v "opravdovych" hrach toto takto neresi (zadne zpetne reference atp.)?

Já jsem tomu objektu nepředával celý svět, ale jen adekvátní výřez (zjednodušení, ve skutečnosti jsem to měl optimalizované ještě jinak). Například když byl objekt jakože v místnosti, tak dostal jen tu místnost. Protože za zeď nevidí, že jo. Mělo to ten efekt, že jsem to mohl paralelizovat, každá "místnost" mohla běžet samostatně. Myslím, že Prýmek tomu říkal partioning.

1833
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 21:59:54 »
Zajímalo by mě, na jaké nevýhody můžu u FP narazit. Zatím, co vím, tak že takovej Haskell je výkonově na úrovni Javy.  Což zase není tak hrozné, a možná by to chtělo nějaké lepší benchmarky. Napadá vás něco dalšího? Možná sem jen příliš velkej fanda, ale když bych se měl rozmýšlet, zda C++ nebo Haskell, tak neváhám ani okamžik (a to jsem si s C++ pár věcí napsal).

1834
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 02:17:02 »
Pokud víš o FP tolik, kolik jsi dneska ukázal, tak to, že se ti něco na FP zdá úplně uhozený není vůbec směrodatné.

Budu ignorovat osobní urážky a nebudu je vracet, i když bych mohl.

Urážky? Jaký urážky?

1835
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 02:03:32 »
Jak si to můžeš myslet, když o FP víš tak málo?

Já to nechci začínat znova... Dva lidi nezávisle (BoneFlue a implementátora Pac-Mana), dovedlo funkcionální programování k tomu, že vyrobí seznam eventů pro celou scénu a pak se ho snaží ex-post nějak aplikovat a ještě to považují za výhodu a úžasný nápad. Pro mě je to úplně uhozená představa. Nikdo to tak nedělá, i když by mohl i v imperativním přístupu prakticky zadarmo bez synchronizace.

Pokud víš o FP tolik, kolik jsi dneska ukázal, tak to, že se ti něco na FP zdá úplně uhozený není vůbec směrodatné.

Dobrou noc.

1836
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 01:47:29 »
Když přestanete tvrdit, že funkcionální programování je úplně to nejlepší na vývoj her, i když jste žádnou hru nedělali (teda BoneFlute dělal), tak přestanu reagovat. Já si to totiž nemyslím.

Jak si to můžeš myslet, když o FP víš tak málo?

1837
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 01:36:41 »
Tohle mě fakt nebaví. Dělal jsem na engine AAA hry (nebyl to Unreal) a žádná kritická sekce tam nebyla. Nechceš ji tam, zamykání stojí výkon. Není tam potřeba. Nastavení pozice je prostě metoda objektu. Nepotřebuješ k tomu scénu. Všichni (kromě funkcionálních fanatiků  ;)), to tak dělají.
Nevím proč jsem si právě vzpomněl na Larru Croft s rukou ve zdi...

Jen pro pořádek, já si kritickou sekcí představuju místo, kde může dojít ke konfliktům = dva paňácové berou stejný pomeranč. Zámky jsou v immutable nutné možná méně než v mutable světě. Chápeme se doufám dobře.

1838
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 01:30:57 »
Mě fakt baví, jak nechápete podstatu problému. Funkcionálním přístupem s generováním eventů jste tam přidali kompexitu navíc. Netriviální kompexitu navíc, kterou musíte řešit. A podle mě rozumně vyřešit nejde, ty eventy budou kolizní a nemáte deterministický algoritmus na řešení kolizí. Single thread imperativním přístupem žádné eventy nevznikají, nemusím je vůbec řešit. Nezajímají mě. Multi thread imperativním přistupem taky žádné eventy nevzníkají. Nezajímají mě. Musím řešit navíc synchronizaci přístupu ke sdíleným objektům. Mám to ale pořád docela dobře pod kontrolou, protože o tom, co a kdy se bude paralelizovat, rozhoduju já. Za mě je lepší můj způsob. Ale klidně si to dělejte jinak, když se vám to zdá dobré.
Podstata problému je, že neumíš počítat (prosím neber to osobně). Ta komplexita je ve FP mnohem menší. Máš nad tím mnohem menší kontrolu. Synchronizaci přístupu musíme řešit oba, ale tobě to půjde hůř (a nebo jsi šikovný programátor, což mi ale nepomůže).

Já bych to tady uzavřel. Dokavad nesplatíš "dluhy", tak za mě nemá smysl pokračovat:

Ukaž mi, jak změníš pozici pomeranče, když budeš mět jen ten pomeranč. Klidně v Javě. Ale musíš mět jen pomeranč, to je podmínka!

Jakoby ty kolize byly jen díky tomu, že to je napsáno immutable. Ve skutečnosti je to takhle velice šikovné, protože se mi ty kolize setřesou na jedno místo, žádná mi neunikne, a mohu volit strategii. Ukaž, jak by jsi to dělal mutable, a snaž se, aby to bylo fakt lepší ;-)

Vidiš to. Já bych naopak řekl, že je na tom krásně vidět, jak těžké je opustit mutable svět a začít přemýšlet funkcionálně.

Na tom, co jsi udělal, nic funkcionálního není. Spojuje to nevýhody imperativního a funkcionálního přistupu dohromady. Pracovat ve všech funkcích s celou scénou je totální fail. Formálně je to funkcionální, prakticky je to ale hybrid, imperativní přístup jsi násilně narouboval do funkcionálního světa. Výsledek není dobrý.
Respektuji tvůj názor, ale nemám důvod s ním souhlasit. Jsem bohužel dost tvrdohlavý, a bez argumentů se mnou nehneš ;-)

1839
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 01:17:10 »
A jak si myslíš, že se to normálně dělá?
No, já si sem docela pevně jist, že normálně se to dělá tak, že se vezme scéna, a ten pomeranč se na té scéně umístí kam je třeba. A obávám se, že v tomto vesmíru to prostě jinak nejde. Jo, samozřejmě jsou kolem toho různé omáčky, to je jasné. S Unrealengine sice nemám zkušenosti, ale typoval bych, že tam taky bude nějaká kritická sekce, kam se ten Actor, nebo jak to mají pojmenované, doputuje, a to se pak promítne do scény.

1840
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 01:11:57 »
To jsi nastavil objektu pomeranc atribut pos na 1,2,3. To není změna pozice.
Nesplnil jsi zadání.
Zkus znova.

A jak si myslíš, že se to normálně dělá? Objekt drží informaci o své poloze a jen jemu se to nastavuje:
https://docs.unrealengine.com/latest/INT/API/Runtime/Engine/GameFramework/AActor/SetActorLocation/index.html
Nebo v Unreal Engine taky nesplnili zadání a mají to předělat podle tvých představ?

V Unreal Engine taky netvrdí, že:
Ve funkci, která mění pozici pomeranče, opravdu nepotřebuju celou scénu, stačí mi ten pomeranč.

1841
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 01:09:08 »
Řešení s eventy má jako nevýhodu nedeterminismus, rozhodnout které eventy jsou ty pravé není vůbec triviální úloha. Já tohle vůbec dělat nemusím.
Ale musíš, musíš. A mnohem víc netriviálně.
Mě fakt baví, jak gamer vykládá, jakej je strašnej problém synchronizace eventů, ale když se ho zeptáš, jak by to dělal on, tak odpoví "kdo dřív přijde...". Synchronizovat eventy stylem "kdo dřív přijde" je fakt strašnej problém :)))

Pokud tam dva paňácové šahali po pomeranči, tak ten první ho dostal, a ten druhej šáhnul do prázdna (v příším tiku by se to dozvěděl). Jednoduše, kdo dřív přijde. Podobně to fungovalo když by se měl ten paňáca hejbat, a vznikla by nějaká kolize (narazil do jiného paňáci).

Ve skutečnosti je to takhle velice šikovné, protože se mi ty kolize setřesou na jedno místo, žádná mi neunikne, a mohu volit strategii.

Hmm...

1842
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 01:04:02 »
Kluci z facebooku si myslí něco jiného.

A JavaScript library for building user interfaces. To asi nebude na hry, že?
Kontext!

Ale věřím, že jsi se s tím nikdy nesetkal, takže pointa:
Prohlížeč si vytváří objektovou strukturu dokumentu, takzvaně DOM. Na každém uzlu můžeš pověsit posluchače událostí, a ty odpalovat, a dynamicky měnit strukturu jak chceš. Tedy, jestli jsem tě dobře pochopil, tak toto je tvůj, dle tebe výhodnější, přístup. React dělá mimojiné to, že si vytváří kopii DOM, a všechny změny, které se vytvářejí se nejdříve provádí na té kopii - takže je to trochu podobné tomu mému přístupu. Po té, co si všechny objekty uplatní všechny změny, které jsou potřeba, a React samozřejmě musí zohledňovat i konflikty atd, tak se ta změny teprve promítne do originálního DOM. Vtip je v tom, že ač se ti může zdát, že to přeci musí být strašně pomalé, tak zkušenost ukázala, že to lítá jak z praku (ačkoliv zvorat se to dá taky).

1843
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 00:55:42 »
Vy chcete vytvářet seznam eventů o tom, co všechno se změnilo
To chci dělat já. Jestli by to tak dělal Prýmek, ...


Já to tak dělat nechci, provádím změny rovnou ve scéně, žádný seznam nevytvářím. Kdo dřív přijde, ten dřív mele. Musím řešit sychronizaci, když mám panáky ve vláknech, tak musím políčko nejdřív zamknout, než na něj panák vstoupí.
Ale vždyť tě nikdo nenutí. Já bych to tak sice nedělal, páč mi to přijde hrozně pracný a bordeloizní, ale každému co jeho jest.


Řešení s eventy má jako nevýhodu nedeterminismus, rozhodnout které eventy jsou ty pravé není vůbec triviální úloha. Já tohle vůbec dělat nemusím.
Ale musíš, musíš. A mnohem víc netriviálně.


Obojí má svoje nevýhody.
Immutable řešení má jedinou nevýhodu. Změnu myšlení.

1844
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 00:37:52 »
Ukaž mi, jak změníš pozici pomeranče, když budeš mět jen ten pomeranč. Klidně v Javě. Ale musíš mět jen pomeranč, to je podmínka!

Kód: [Vybrat]
pomeranc.SetPos(1,2,3);
To jsi nastavil objektu pomeranc atribut pos na 1,2,3. To není změna pozice.
Nesplnil jsi zadání.
Zkus znova.

1845
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 00:35:38 »
Jakoby ty kolize byly jen díky tomu, že to je napsáno immutable. Ve skutečnosti je to takhle velice šikovné, protože se mi ty kolize setřesou na jedno místo, žádná mi neunikne, a mohu volit strategii. Ukaž, jak by jsi to dělal mutable, a snaž se, aby to bylo fakt lepší ;-)

Ne není to šikovné. V imperativním přistupu kolize vůbec nejsou, nevzniknou. Provedeš výpočet a hned ho aplikuješ na scénu.
Takže dva panácové přijdou k pomeranči. Kdo bude mít pomeranč? Nebo to není kolize?

Můžeš si nalhávat, že je lepší generovat eventy se změnami a nechat to na později ale není. Zásadně zvyšuješ komplexitu řešení.
Kluci z facebooku si myslí něco jiného.

Stran: 1 ... 121 122 [123] 124 125 ... 133