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 ... 251 252 [253] 254 255 ... 618
3781
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 15. 09. 2015, 11:24:35 »
Ano, ale to je imperativní programování, díky neznámým závislostem mezi objekty nelze automatizovaně výpočet paralelizovat a dokazovat, což FP by mělo umožňovat. Ten if je samozřejmě extrém, ale na něm se ukáže, zda myslíte funkcionálně, či imperativně. Funkcionální programování vyžaduje oprostit se od pojmu čas, a tedy vás to osvobodí do jisté míry, od nutnosti zabývat se pořadím zpracování, výsledek matematické funkce závisí jen na vstupních hodnotách, nikoliv na pořadí zpracování funkcí ...
A to by mě teda docela zajímalo.

První námitka: Podle mě můžu definovat trojici {a,b,c}, která odpovídá ifu. Takže máme ten kýžený výběr z trojic. Pokud to tak nejde, chtěl bych vidět nějakou pořádnou argumentaci.

Co jsou "neznámé závislosti", nevím. Pořadí vyhodnocení můžu u ifu měnit jako u jakékoliv jiné fce.

3782
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 15. 09. 2015, 10:41:47 »
Protože if je činnost, nikoliv funkce. Chápete-li ji funkcionálně, tedy jako přiřazení, je to přiřazení příliš široce definované. Předem nevíte s čím budete pracovat, její definice je příliš široká a univerzální. Tím se ztrácí výhoda FP programování.
To je teda pěkná blbost.

3783
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 15. 09. 2015, 10:26:16 »
if a while jsou prvky imperativního programování. Je to stejný prohřešek, jako roubovat OOP do Lispu.
While jo. Ale proč propánajána if? To jako "správně funkcionálně" mám každý if vyhodit ven jako samostatnou funkci? Proč, prokrýlepána?

3784
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 15. 09. 2015, 09:35:32 »
To je podstata problému. Na vině je funkcionální notace a na ní naroubovaná imperativní notace jako if, while a podobně. Pokud někdo objeví notaci, která bude vypadat přirozeně, FP se rozšíří.
Tomuhle nerozumím, jaké "naroubované if, while"?! Co je na existující notaci špatného? A co je na ní "nepřirozeného"? Například zápis funkcí jako samostatných entit pomocí pattern matchingu mi teda přijde tisíckrát srozumitelnější než různě vnořené ify a smyčky...

Naděje vkládané do FP, ale mohou být liché, protože se v této technologii nerealizují a hlavně neudržují rozsáhlé reálné projekty běžící desítky let. Každý program do 100 řádků vypadá elegantně a je krásný. Horší je to, když už má těch řádků více. Vyjadřovací schopnosti programovacích jazyků nejsou na úrovni textu prózy, ale na úropvni čtení básní, proto i struktura textu je důležitá. A FP jazyky ji mají přímo katastrofální.
Tak to třeba pro Erlang není vůbec pravda.

3785
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 14. 09. 2015, 21:31:06 »
(krom výpočetně náročných věcí, ale s GPU to prý taky nějak umí)
Co, GPU, ale bindingy Rka! ;) https://plus.google.com/+JohnCook/posts/dp8sN7B4bzS

3786
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 14. 09. 2015, 21:27:55 »
Nejaky tip na video kurzy/prednasky?
Nestačí learnyouahaskell.com + cvičně si něco napsat? :) Videa přímo o Haskellu neporadím (nedělám v něm, jenom mě tak baví se na něho občas kouknout - taky po večerech :) ), ale docela mě baví videa z tohodle channelu: https://www.youtube.com/channel/UC_QIfHvN9auy2CoOdSfMWDw

to asi platí i o LISPu, ty jejich makra jsou prý velmi schopné
Asi jo, ale když já ty závorky prostě nemůžu, krvácí mi z toho oči ;) Pravděpodobně stejně silnej, nebo o něco málo slabší makrosystém má Elixir: http://elixir-lang.org/getting-started/meta/macros.html

3787
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 14. 09. 2015, 20:47:06 »
Pokud to dobře chápu, tak nikoliv - cituju ze stránky problému n-body:

We are trying to show the performance of various programming language implementations - so we ask that contributed programs not only give the correct result, but also use the same algorithm to calculate that result.

Each program should model the orbits of Jovian planets, using the same simple symplectic-integrator - see the Java program.
Aha, díky. Tak buď žiju v omylu, nebo je tenhle jeden problém výjimka :)

Jde spíš o to, že pokud se mají vysokoúrovňové jazyky a zvláště FP posunout dál, budou asi muset hledat jiné cesty než kopírovat C či Javu.
Zatím to vypadá spíš tak, že mainstreamové jazyky se snaží do sebe FP nějak aspoň zčásti vcucnout. Kdyby to dopadlo tak, že by se třeba z F# stal jazyk, ve kterém by se dalo slušné psát, měl by širší základnu a slušnou podporu, takže by nikdo o Haskell, Erlang atd. zájem neměl, tak bych se třeba já ani moc nezlobil. Pořád lepší než drátem do voka dominance C++ ;)

Spíš se ale trochu bojím toho, že kvůli technickým a manažerským omezením se FP do mainstreamu dostane ve stejně vykastrované podobě jako se to stalo OOP :(

3788
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 14. 09. 2015, 20:41:52 »
proč by ale měli programovat funkcionálně? co tím získají? viz benchmark
Ten benchmark moc nevypovídá o ničem z reálného světa. Vypovídá o tom, o čem vypovídá - takže např. pokud chceš počítat fraktály, je Haskell super! A fakt chceš počítat fraktály? ;)

Co získají? V některých doménách, kam FP sedne jak prcka na nočník*, můžou získat hodně: přehledný, udržovatelný, čistý kód s malými nároky na hw a na množství programátorů. To není málo. Ale náklady jsou taky velké: nedostatek (-> cena) lidí, mladé nástroje, nevyzrálý ekosystém, u některých jazyků neexistující komerční podpora. Jestli u konkrétního projektu výhody převýší nebo nepřevýší náklady, to si holt už každý musí rozmyslet sám. Podle mě se FP může docela dobře hodit pro malý tým dobrých programátorů - dobře si to promyslí a rychle se dostanou k cíli, neztrácí čas balastem.

* co to všechno je, to ať si každý posoudí sám. Podle mě by do toho mohlo spadat víceméně všechno, kde jde o nějaké streamové a transakční zpracování, plus některé věci event-driven. Počet těchto domén bude imho narůstat - všechny ty internety, IoTy a tak...

3789
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 14. 09. 2015, 18:47:42 »
vybrat jeden konkrétní algoritmus původně použitý v Javě a pak chtít po implementátorech ve všech možných i nemožných jazycích ten algoritmus používat mi přijde zrovna třeba pro funkcionální jazyky jako dost velký podraz.
v CLBG* to není algoritmus, spíš problém, ne? Algoritmy jsou afaik různé. Když už v tom hledat nějaký podraz, tak že jsou to víceméně výpočetní problémy - třeba takový Erlang v nich vyloženě nemá šanci, takže dopadá špatně i když je to jinak skvělý jazyk.

* to je skoro jak LGBT :))

3790
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 14. 09. 2015, 17:17:37 »
Jinak celkově debatu nechápu. Porovnávají se tu dvě řešení: s eventy a bez, a jedno z nich "se považuje" za funkcionální. Co komu brání napsat v imperativním přístupu řešení s eventy a získat tím také výhodu změn scény a tedy možnost vzniku kolizí pouze na jednom místě? IMHO ani jedno z prezentovaných řešení nijak nesouvisí s paradigmatem jazyka, v kterém ho budete implementovat.
To vzniklo tak, že gamer si myslí, že řešení s eventy je jediné možné a pořád dokola to opakoval, i když byl opakovaně upozorněn, že jediné možné není :)

3791
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 22:19:00 »
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).
Jo, to je právě na FP hezký - protože máš stav explicitní, na jednom místě, víš dobře, co souvisí s čím, co k výpočtu potřebuješ a co nepotřebuješ. Takže můžeš krásně udělat řez na pravém místě a ty dvě (popř. víc) částí zpracovávat zvlášť. U OOP máš síť, kde je obvykle všechno spojený se vším a řez neuděláš. Čili ani nic neparalelizuješ. Leda triviálně - zkusíš to pustit ve víc vlákneš a zamykáš, zamykáš, zamykáš, čili jestli se to zrychlí nebo nezrychlí nemáš nikdy šanci odhadnout, protože nevíš, kolikrát se ty zámky potkají...

Vlastně docela podobným způsobem zjistíš i které části dat už nikdy nebudeš potřebovat a s klidem je zahodíš. Má to hodně zajímavé efekty: https://plus.google.com/+MiroslavPrymek/posts/VyNUxy5pqei

3792
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 21:01:36 »
Takže tu opět máme nebetyčný rozdíl: zatímco v FP se svět přenáší do funkce jako svět, na jednom jasně definovaném místě, což je strašně neelegantní, v ne-FP se přenáší svět do funkce všude možně ve všech možných properties všech možných objektů. Čili to druhé je minimalistické rozhraní a to první je tragédie, kvůli které se hry v FP psát nedají.

A abysme nezapomněli, ten svět se musí při každém volání funkce kopírovat!

:)))))

3793
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 13:10:57 »
(Kdyz jsme tak u toho, FP se casto "prodava" s tim, ze umoznuje vice paralelismu. To je IMHO az druhorady efekt, podobne jako strukturovane programovani muze pomoci snazsimu zapisu algoritmu a tudiz umoznuje pouzit/vyzkouset lepsi/jine algoritmy. Primarni vyhoda FP je IMHO zlepseni prehlednosti operaci s daty.)
Presne tak - prvorada vyhoda FP je, ze je tam explicitni a prehledne data flow - pokud data nekam neposles, tak je tam proste nemas k dispozici. Z toho pak plynou ruzne veci, jako napr. ze muzes rychle a presne rozhodnout, v jake casti kodu se jaka data meni a jaka zarucene nemeni, jaky kod je zavisly na jakych datech atd. Moznost paralelizace je pak dusledek tohodle.

3794
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 02:38:37 »
Je to dost smutný, neumět si přiznat, že funkcionální programování není vhodné na všechno a řešení, které z funkcionálního přístupu někdy vypadnou, nejsou dobrá.
S tím já nemám problém. Nikdy nikde jsem netrvdil, že to tak je. Jenom tvrdím, že ty důvody jsou jiné, než uvádíš ty. Protože ty důvody, které uvádíš ty, zjevně pramení z neznalosti.

To je něco úplně jiného, event systém na úrovni callbacků, pošlu event a nějaký callback ho hned zpracuje.
Čili úplně jako v Erlangu. Co mi to přípomíná? Jo, jak jsem o něco výš napsal "úplně jako s Actorem". Sorry, ale už mě to fakt přestává bavit.

Není to žádná fronta eventů na scénu, které se zpracují najednou ex-post.
Touhle fixní ideou trpíš už dlouho, nebo tě to chytlo až v tomhle vlákně? Už tady asi tisíckrát zaznělo, že to není jediná možnost. Proč si nevyndáš ty špunty z uší?!

------

Tak. A teď už mě to přestalo bavit definitivně. Pro jistotu definitivně vypínám notifikace na tohle téma :) Dobrou noc :)

3795
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 13. 09. 2015, 02:23:29 »
Jak to vůbec dopadlo s tím jeho portem Wolfensteina do Haskellu? Dotáhnul to? Nikde jsem nenašel, že ano, ale možná jsem jen špatně hledal.
To je celkem jedno, protože existuje jiná, deleko pokročilejší hra: https://wiki.haskell.org/Frag

Stran: 1 ... 251 252 [253] 254 255 ... 618