Musím řešit jen ten pomeranč, kterej jedinej je napříč vlákny. U mutable musím hlídat úplně všechno. To mi přijde jako dost velké usnadnění. (A to jsme ještě nevytáhly nástroje a zatím se bavíme jen o výhodách daných principy.)
Nemusím hlídat všechno, u mutable taky řeším jen ten pomeranč, který jde napříč vlákny. Nic jiného synchronizovat nemusím. Je to úplně stejné.
Čím by si podložil své tvrzení? Nebo je to jen tvůj pocit?
Težko srovnávat, protože velké funkcionální hry neexistují. Ani žádný významný herní engine není funkcionální. Existují jen menší hry, napsané jako hobby projekty. Ale budiž, musíme si vystačit s tím. Můžeš začít třeba tady:
http://stackoverflow.com/questions/9755882/are-functional-programming-languages-suitable-for-graphics-programmingAutor Ironclad: Steam Legions popisuje svoje zkušenosti, vytrhnu z kontextu jen tohle:
You need to be careful about performance
Mutability is useful in games
Zajímavé věci se dají dočíst i tady:
http://prog21.dadgum.com/23.htmlJe to od člověka, který udělal funkcionálního Pac-Mana. I když se jedná o velmi jednoduchou hru, byl donucen k nedobrým řešením. Protože nemůže rozumně během výpočtu měnit herní scénu, řeší změny scény až ex-post na základě eventů ({ate_dot,Coordinates}, ate_fruit). To je problém, protože může vygenerovat eventy, které jsou vzájemně v kolizi. Ex-post potom musíš řešit, co dělat, když jdou nějaké eventy proti sobě. U Pac-Mana s pár eventy to ještě asi bude řešitelné, ale nedokážu si to představit u větší hry, kde budou tisíce různých eventů, které můžou vznikat ve všech možných kombinacích. Dá se to vyřešit tak, že budu seznam už existujících eventů předávat do každé funkce a na základě toho pak rekonstruovat aktuální scénu, ale to je už úplně uhozené.
Můžeš argumentovat, že je to vlastně super, všechny výpočty dělám s konstatní scénou, která se nemění, takže to můžu perfektně paralelizovat. Jenomže imperativně můžu udělat to samé, můžu to paralelizovat úplně bez sychronizace, pokud neměním scénu. Prakticky to takhle ale nikdo nedělá, i když může. Není to dobrý přístup.
Pak ještě napsal takové obecné shrnutí o funkcionálním programování:
http://prog21.dadgum.com/54.html