Omezená dědičnost (je něco lepšího než OOP?)

PJ

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #210 kdy: 12. 09. 2015, 21:04:47 »
Citace od: Mirek Prýmek kdy 11. 09. 2015, 19:41:35
Citace od: gamer kdy 11. 09. 2015, 19:26:28
Samozřejmě že jde napsat Wolfenstein 3D v Haskellu. Stejně jako jde napsat webserver v bashi. Fungovat to bude, ale je to spíš jen takové myšlenkové cvičení, prakticky se funkcionální jazyky ve vývoji her neprosazují.
A důvody k tomu můžou být různé - třeba to, že každý programátor začíná imperativně nebo objektově.
Nie kazdy.

Zaciatok programovania na MIT je s Lispom (Scheme):
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/
Myslim, ze ked to ma MIT, tak to budu mat aj dalsie univerzity.

S Haskellom zacina najmenej 13 univerzit vratane Oxfordu:
https://wiki.haskell.org/Haskell_in_education#Haskell_as_a_first_language


Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #211 kdy: 12. 09. 2015, 21:07:06 »
Citace od: PJ kdy 12. 09. 2015, 21:04:47
Zaciatok programovania na MIT je s Lispom (Scheme) [...] S Haskellom zacina najmenej 13 univerzit vratane Oxfordu:
Myslis, ze na MIT a Oxford chodi lidi, kteri nikdy v nicem neprogramovali? :)

PJ

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #212 kdy: 12. 09. 2015, 21:38:30 »
Odpoviem protiotazkou: Myslis, ze na informaticke smery MFF/CVUT/VUT chodia ludia, co v nicom neprogramovali? (Ja myslim, ze ano, aj ked ich je mensina)

Inak tu je dalsich par, kde sa zacina funkcionalne:
http://www.quora.com/Which-universities-teach-their-first-CS-course-in-a-functional-programming-language
Je tam aj India, takze z pohladu mnozstva to ma sancu.

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #213 kdy: 12. 09. 2015, 21:40:36 »
Citace od: PJ kdy 12. 09. 2015, 21:38:30
Ja myslim, ze ano, aj ked ich je mensina
Mas pravdu, opravuju to tvrzeni z "kazdy programator" na "vetsina programatoru" ;)

Kit

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #214 kdy: 12. 09. 2015, 21:43:17 »
Citace od: Mirek Prýmek kdy 12. 09. 2015, 21:07:06
Citace od: PJ kdy 12. 09. 2015, 21:04:47
Zaciatok programovania na MIT je s Lispom (Scheme) [...] S Haskellom zacina najmenej 13 univerzit vratane Oxfordu:
Myslis, ze na MIT a Oxford chodi lidi, kteri nikdy v nicem neprogramovali? :)

Dodnes mě mrzí, že jsem nezačínal s Lispem, ale s Pascalem. O to krutější byl přechod na OOP.


BoneFlute

  • *****
  • 2 155
Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #215 kdy: 12. 09. 2015, 22:52:40 »
Citace od: gamer kdy 12. 09. 2015, 20:13:01
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ě.

No, já jsem to řešil tak, že jsem měl scénu, ta měla tiky, a v každém tiku jednotlivé objekty udělaly změny na scéně co potřebovali. Na konci tiku se vždycky uplatnili změny, a ty se zapsali zpět do scény. A tak se to opakovalo.

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).

Jako fungovalo to parádnicky, a asi ani v mutable prostředí bych to nedělal jinak.

Je možné, že jsem si to moc zjednodušil a na nějaké über-extra-mega složité hře bych narazil, ale zatím si to nemyslím, a k negativním zkušenostem druhých jsem skeptický.

BoneFlute

  • *****
  • 2 155
Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #216 kdy: 12. 09. 2015, 23:01:38 »
Citace od: gamer kdy 12. 09. 2015, 20:13:01
Citace od: BoneFlute kdy 12. 09. 2015, 13:54:56
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é.

No musíš hlídat všechno. Protože všechny objekty máš mutable. To znamená nevíš dne a hodiny, kdy ti někdo nepřepíše. Klasickej problém:

a = getAccount
b = getBalance a
setBalance a b+1

ti v mutable a v immutable světě bude fungovat různě. Ale to snad nemusím vysvětlovat.

gamer

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #217 kdy: 12. 09. 2015, 23:12:38 »
Citace od: BoneFlute kdy 12. 09. 2015, 22:52:40
No, já jsem to řešil tak, že jsem měl scénu, ta měla tiky, a v každém tiku jednotlivé objekty udělaly změny na scéně co potřebovali.

Moment, tohle je imperativní přístup s mutable objekty, co mi uchází? Nebo jsi jako parametr do funkce předal celou scénu a z funkce dostal novou scénu?

gamer

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #218 kdy: 12. 09. 2015, 23:16:11 »
Citace od: BoneFlute kdy 12. 09. 2015, 23:01:38
No musíš hlídat všechno. Protože všechny objekty máš mutable. To znamená nevíš dne a hodiny, kdy ti někdo nepřepíše.

Ne nemusím hlídat všechno. Hlídám jen objekty sdílené mezi vlákny. Když sdílím pomeranče, hlídám pomeranče. Když nesdílím citrony, tak je ani nemusím hlídat.

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #219 kdy: 12. 09. 2015, 23:17:51 »
Citace od: gamer kdy 12. 09. 2015, 23:16:11
Ne nemusím hlídat všechno. Hlídám jen objekty sdílené mezi vlákny. Když sdílím pomeranče, hlídám pomeranče. Když nesdílím citrony, tak je ani nemusím hlídat.
A musíš hlídat, že pomeranče nemají někde schovaný odkaz na citrony.

BoneFlute

  • *****
  • 2 155
Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #220 kdy: 12. 09. 2015, 23:23:49 »
Citace od: gamer kdy 12. 09. 2015, 23:12:38
Citace od: BoneFlute kdy 12. 09. 2015, 22:52:40
No, já jsem to řešil tak, že jsem měl scénu, ta měla tiky, a v každém tiku jednotlivé objekty udělaly změny na scéně co potřebovali.

Moment, tohle je imperativní přístup s mutable objekty, co mi uchází? Nebo jsi jako parametr do funkce předal celou scénu a z funkce dostal novou scénu?
No, ve skutečnosti jsem to dělal pomocí zástupných commandů, ale ten princip, ať si to nekomplikujem je ten, že jsem funkci předal celou scénu, a vrátil novou.


Citace od: gamer kdy 12. 09. 2015, 23:16:11
Citace od: BoneFlute kdy 12. 09. 2015, 23:01:38
No musíš hlídat všechno. Protože všechny objekty máš mutable. To znamená nevíš dne a hodiny, kdy ti někdo nepřepíše.

Ne nemusím hlídat všechno. Hlídám jen objekty sdílené mezi vlákny. Když sdílím pomeranče, hlídám pomeranče. Když nesdílím citrony, tak je ani nemusím hlídat.
No dobře. Teoreticky nemusíš hlídat všechno. Prakticky, když jsem to nehlídal, tak jsem nedotáhl projekt do konce.

gamer

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #221 kdy: 12. 09. 2015, 23:25:12 »
Citace od: Mirek Prýmek kdy 12. 09. 2015, 23:17:51
A musíš hlídat, že pomeranče nemají někde schovaný odkaz na citrony.

V tom případě sdílím i citrony. A FP mi nijak nepomůže, sychronizaci citronů musím i v FP řešit stejně jako sychronizaci pomerančů, pokud jde s citronem přes pomeranč provádět nějaká akce.

gamer

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #222 kdy: 12. 09. 2015, 23:32:07 »
Citace od: BoneFlute kdy 12. 09. 2015, 23:23:49
No, ve skutečnosti jsem to dělal pomocí zástupných commandů, ale ten princip, ať si to nekomplikujem je ten, že jsem funkci předal celou scénu, a vrátil novou.

Na tom je krásně vidět, jak tě funkcionální omezení dotlačilo do prakticky asi nejhoršího řešení. Neber to jako kritiku, ta úloha ve funkcionálním přístupu nemá žádné dobré řešení :). Co je na tom zásadně špatně:

1) Funkce by měla pracovat jen s daty, která opravdu potřebuje. Ty předáváš celou scénu, i když s ní funkce provede jen nějakou omezenou operaci. Vůbec nevíš, co se kde zpracovává za data.

2) Nejde to paralelizovat. Jednotlivé funkce musíš spouštět sekvenčně.

3) Vytvářet kvůli každé jedné izolované změně novou scénu je neefektivní.

Kdybys to napsal rovnou imperativně, bylo by to přehlednější, rychlejší a udržovatelnější.

BoneFlute

  • *****
  • 2 155
Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #223 kdy: 12. 09. 2015, 23:35:05 »
Citace od: gamer kdy 12. 09. 2015, 23:25:12
Citace od: Mirek Prýmek kdy 12. 09. 2015, 23:17:51
A musíš hlídat, že pomeranče nemají někde schovaný odkaz na citrony.

V tom případě sdílím i citrony. A FP mi nijak nepomůže, sychronizaci citronů musím i v FP řešit stejně jako sychronizaci pomerančů, pokud jde s citronem přes pomeranč provádět nějaká akce.
A není to naopak? Že v této jediné věci ti FP moc nepomůže, zatímco ve všem ostatním ano? Zkus si přečíst naše příspěvky. Vždyť ty vůbec nereflektuješ co popisujem.

gamer

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #224 kdy: 12. 09. 2015, 23:40:59 »
Citace od: BoneFlute kdy 12. 09. 2015, 23:35:05
A není to naopak? Že v této jediné věci ti FP moc nepomůže, zatímco ve všem ostatním ano? Zkus si přečíst naše příspěvky. Vždyť ty vůbec nereflektuješ co popisujem.

V čem mi pomůže? Že nejde rozumně udělat změnu ve scéně? Zkuste si přečíst, co píšu já.