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 ... 138 139 [140] 141 142 ... 618
2086
Vývoj / Re:Programovanie a modne trendy?
« kdy: 01. 09. 2017, 00:19:19 »
V reálném světě auto zavezu do lakovny a vyjedu s přebarveným autem.
Silně NEdoporučuju používat analogie z reálného světa. Ještě jsem nikde nepotkal referenci na auto. Nikdy se mi nepodařilo autem odjet do práce a zároveň dát referenci manželce, aby vyzvedla děcka ze školy.

2087
Vývoj / Re:Programovanie a modne trendy?
« kdy: 01. 09. 2017, 00:09:18 »
Takže jsme se shodli na tom, že i v objektových jazycích lze programovat funkcionálně.
Jistě. I v assembleru. A BASICu. Nenapadlo by mě, že by o tom mohl někdo pochybovat.

Nemám tedy důvod přecházet na nějaký funkcionální jazyk, neboť by pro mne nepředstavoval žádnou přidanou hodnotu.
To z předchozího neplyne.

Konzervu můžu otevírat šroubovákem. Nemám tedy důvod přecházet na otvírák. Q.E.D.

Konktrétně jde o to, že funkcionální jazyk typicky nějaké vlastnosti vynucuje. Tj. jsi nějak omezen, něco nemůžeš. A pokud něco nemůžeš, máš nějakou informaci o tom, že se něco z principu nemůže stát a tedy že neco platí. Čili zkráceně: v důsledku omezení máš víc informací, víc jistoty.

Pokud programuješ FP stylem v jazyce, který žádné FP vlastnosti nevynucuje, žádnou jistotu nemáš. Máš jenom starou dobrou nejistotu.

Už jsem to tady psal víckrát: Erlang vynucuje imutabilní data => máš jistotu, že jakékoliv odkazy (reference) v jakékoliv datové struktuře vedou jenom směrem "dozadu" (ke starším datům) a i od nich dál jenom stejným směrem. Pokud máš imutabilní objekt v jiném jazyce, může obsahovat odkaz na mutabilní data => jistotu nemáš.

2088
Vývoj / Re:Programovanie a modne trendy?
« kdy: 31. 08. 2017, 23:10:39 »
proste paralelni zpracovani dat je zaprve pouze cteni dat(kde zamky nejsou potreba)
To přece obecně není pravda. Platí to jenom v případě, že mi ta vstupní data nemůže někdo mezi tím přepsat (takže bych jedním vláknem zpracovával generaci 1 a druhým generaci 2 a reducem pak sčítal hrušky s jabkama). Pokud tohle nechci dopustit, tak musím mít buď read lock, nebo imutabilní data.

a i kdyby ne, tak se rozdeluji data na casti, ktere se mohou zpracovavat paralelne(konkurencne?) ale nezasahuji do sebe navzajem. Proste polopate mate velkou mnozinu dat
Aneb o koze a o voze... Pokud mám takové množství dat, že je zpracovávám sto stroji a nejsou mezi nimi žádné vazby, tak samozřejmě funkcionální přístup uvnitř toho jednoho stroje nic nepřinese. Ale to je snad každýmu jasný a o tomhle scénáři vůbec není řeč, ne?

Narazis na vic veci naraz, streamove zpracovani vs zpracovavani velkych dat. Oboje ma sve specififka a pozadavky na ne nejsou zamenitelne.
Ne. Mluvím o tom, že funkcionální přístup "masomlejnek je když mi jde dovnitř maso a ven mletý maso" se prosazuje v čímdál větším množství oblastí. Protože prostě má určité výhody. A zase jiné nevýhody. Nikdo tady snad nikdy netvrdil, že FP je dobrý vždycky, všude, na všechno a se sovětským svazem na věčné časy, ne?

Jediný, co tady děláme, je vyvracení obvyklých výhrad proti FP, které pramení z neznalosti nebo overgeneralizace.

2089
Vývoj / Re:Programovanie a modne trendy?
« kdy: 31. 08. 2017, 22:43:16 »
Ac to zni extremne ucelove subejktivne, je to uhel pohledu.
Není to úhel pohledu. Z jedné strany tečou data dovnitř, z druhé ven. V MapReduce, Sparku, Flinku,... a bambilionech dalších.

Tak asi to teda vypadá, že jsou všichni pitomí a plýtvají energií zatímco by to šlo celý udělat s násobnou efektivitou :)

Doporučoval bych ti, abys do té implementace šel. Lidi ti utrhají ruce, když jim cluster spočítá to samý, akorát místo megawatthodiny spotřebuje tři kilowatthodiny. Tím jsem si celkem jistej :)

2090
Vývoj / Re:Programovanie a modne trendy?
« kdy: 31. 08. 2017, 22:26:10 »
Plyne z toho, že funkce pro stejné vstupní parametry dává stejné výstupy.
Ne, to z toho neplyne, to je tvoje DEFINICE pojmu "konstantní fce".

BTW, opět v Erlangu ani Scale tohle neplatí. A pokud se nemýlím, tak ani v Clojure. Ono vůbec těch jazyků, kde to platí striktně, moc není.

Lepší ilustraci toho, jak pitomé jsou generalizace ohledně FP, jsi podat nemohl :)

(Otázka "a co z toho plyne?" pořád zůstává, akorát už asi ani nechci slyšet odpověď, protože jediný, co tady demonstruješ, je, že i v "OOP jazyce" se dá programovat funkcionálním stylem, což není pro nikoho žádný překvápko. Je to stejný jako že i céčku se dá psát objektově. I v assembleru. I když budeš zadávat ed-em stroják, můžeš programovat funkcionálně, objektově, strukturovaně, špagetově... Myslíš, že to někoho překvapuje nebo o co go?)

2091
Vývoj / Re:Programovanie a modne trendy?
« kdy: 31. 08. 2017, 22:12:10 »
Proc se chcete vzdavat vyhody dostatecnosti tohoto zjednoduseneho modelu(a zni plynouci mensi energeticke narocnosti) na ukor korektnosti ale vetsi (energeticke) narocnosti?
To je legitimní otázka. Zkus si prostudovat, jak fungují masivně paralelní processing sytémy typu Hadoop, Spark, Flink. A zkus se potom zamyslet, proč se tam většinou používají immutable data a transformace bez vedlejších efektů.

Samozřejmě existují problémy, které je výrazně efektivnější řešit in situ. Tvrdil někdo opak?

Na ten první problém použiješ funkcionálně laděný přístup, na ten druhý klasický přístup. Kde je problém?

2092
Vývoj / Re:Programovanie a modne trendy?
« kdy: 31. 08. 2017, 22:05:02 »
Funkce jsou ve FP přece také konstanty.
No a to jsme přesně u těch pitomých generalizací. Co má znamenat, že "funkce je konstanta"? A co z toho má plynout?

V Erlangu můžu kód hotreloadovat, takže při prvním zavolání fce se mi spustí nějaký kód a při druhém nějaký úplně jiný. Je pak ta fce konstanta? Já nevím. A opět: je mi to celkem jedno :)

Pochopitelné je hlavně to, že i v tak krátkém programu se dá udělat chyba.
...zatímco v ne-FP programu se chyba udělat nedá. Potvrzuje NaN programátorů z "5"ti.

Sorry jako, na tenhle dadaismus už nějak nemám náladu, měj se :)

2093
Vývoj / Re:Programovanie a modne trendy?
« kdy: 31. 08. 2017, 21:54:00 »
Pointa je v tom, že kdybych se držel jen těch dvou zmíněných bodů a nevyužíval doplňujících featur, tak nic kloudného nenaprogramuji
Opakuji: Erlang z těch "doplňujících featur" má dvě - nepodstatné, které sílu jazyka výrazně nemění.

a ani nemám šanci pochopit, co napsal jiný programátor. Navíc syntaxe, která je velmi odlišná od strukturovaných jazyků, to chápání cizího programu ještě zhoršuje.
Fakt?

Kód: [Vybrat]
defmodule Greeter do
  def hello(name) do
    "Hello, " <> name
  end
end

iex> Greeter.hello("Sean")
"Hello, Sean"

Zcela nepochopitelné! :)))

Prosímtě, ujasni si, jestli mluvíš o FP nebo o Haskellu. Navíc mluvit obecně o FP je samo o sobě dost vošajstlich, protože ty jazyy z téhle rodiny jsou tak odlišné, že společně pro ně neplatí skoro nic. Ani ty dvě věty, co tě tak rozlítily :))

Tím chci sdělit, že znalost matematiky pro úspěšné programování ve fukcionálních jazycích je podmínkou nutnou, nikoli však postačující.
Není o nic nutnější než u C nebo Pythonu.

2094
Vývoj / Re:Programovanie a modne trendy?
« kdy: 31. 08. 2017, 21:47:34 »
V tom se mýlíš. Do konstruktoru takového konstantního objektu můžeš injektovat různé závislosti a jako celek se to pak chová funkcionálně podle toho, jak to celé sestavíš. Výstup je pak funkcí vstupu.
Konstanta je od toho, že je konstantní, tj. po dobu svého života se nemění. A je úplně jedno, jak ji vytvořím.

Kód: [Vybrat]
const x = muj_skvely_konstruktor(moje_jeste,lepsi,parametry)
je u mě pořád konstanta. Jestli u tebe ne, hádat se o to nebudu, je mi to jedno, jak tomu cheš říkat, OOP stylem se samými takovými objekty stejně nic nenaprogramuješ. Jenom budeš (špatně a zbytečně krkolomně) imitovat funkcionální styl.


2095
Vývoj / Re:Programovanie a modne trendy?
« kdy: 31. 08. 2017, 21:38:59 »
Například v tom není ani zmínka o monádách, výjimkách, namespacech, curryfikaci, strážích a dalších vymoženostech, kterými funkcionální jazyky oplývají.
A co má být? Různé jazyky mají různé featury. Pořád nějak nechápu pointu.

Z toho, cos napsal, má třeba Erlang jenom výjímky a stráže, což ani jedno není nijak FP-specifické a kdyby to Erlang neměl, vůbec nic by se nestalo, jenom by se v tom některé věci psaly trochu ukecaněji.

2096
Vývoj / Re:Programovanie a modne trendy?
« kdy: 31. 08. 2017, 21:14:18 »
Jsem rád že se mnou souhlasíš, ale mnoho vývojářů se tím vůbec neřídí a naopak tvrdí, že takový objekt nedává smysl.
No je to prostě konstanta, čili nic světoborného. OOP stylem pomocí samých konstant nic rozumně nenaprogramuješ. FP stylem ano. V tom je ten rozdíl.

2097
Vývoj / Re:Programovanie a modne trendy?
« kdy: 31. 08. 2017, 19:47:40 »
Imutabilní data se dají bez problémů používat i v OOP
Což všichni víme a nikdo netvrdil opak, takže úplně nedává smysl to konstatovat :)

2098
Vývoj / Re:Programovanie a modne trendy?
« kdy: 31. 08. 2017, 19:46:32 »
to na skutečné FP zjevně nestačí.
Z čeho je to zjevné?

ale když je název funkce na půl řádku, tak je to prostě opruz. Kdo má takovou hatmatilku číst?
Vůbec nevím, co myslíš. Jaké názvy na půl řádku? Proč? Kde?

Ajo, ty myslíš org.springframework.aop.framework.AbstractSingletonProxyFactoryBean! Tak to jo, s tím se dá souhlasit, to se číst nedá ;)

2099
Vývoj / Re:Programovanie a modne trendy?
« kdy: 31. 08. 2017, 11:27:36 »
Spolupracoval jsem nedávno na jednom projektu v Elixiru
Skvěle! ;) V ČR?

, ale např. pro embedded věci, což je má doména, je nechutně náročný a tedy naprosto nevhodný.
Na takové použití nikdy nebyl zamýšlen, takže to je jako konstatovat, že kancelářský papír se nehodí na šití balónů :)


A i tak pozoruji, že to funkcionální paradigma není lidem úplně přirozené
Já bych nemluvil o "paradigmatu", ale o konkrétním jazyku. Pod "FP paradigma" si může představit kdo chce co chce a důsledky můžou být jakékoliv. Bavit se dá o konkrétních příkladech, proč třeba někomu nevyhovoval Elixir pro nějaké konkrétní použití. Pak to je smysluplná debata a dá se dojít ke konsensu (jako třeba u těch embedded/constrained zařízení, kde mezi náma není sporu).

A za druhé bych se taky podíval na to, komu to nevyhovuje. Jestli někdo deset let programoval OOP, tak má samozřejmě OOP modelování zažrané do mozku a FP modelování buď neumí vůbec, nebo je to pro něj bolehlav. To ale není vlastnost FP modelování, to je vlastnost toho člověka.

Mně osobně například přijde daleko přirozenější uvažovat nad tím, že když do mlínku na maso vrazím maso, tak z něj vypadne mletý maso, než uvažovat nad tím, jestli obecný čtverec je víc obecný pojem než obecný obdélník nebo naopak ;)

, skoro bych řekl, že tak jak většina lidí (bohužel dnes i většina těch počítačových) válčí s matematikou, tak válčí i s FP.
Já třeba osobně v FP nevidím tolik matematiku, jako spíš (matematickou) logiku nebo klidně i (jazykovědnou) sémantiku - u každého kusu kódu se ptám otázky typu "co je jeho účelem?", "co zná?", "co potřebuje znát?" apod.

Že je FP založené na matematice je taková polopravda - striktně vzato je to pravda a je to dobře, protože chytré hlavy pak můžou o FP programu (nebo jazyku) leccos zajímavého dokázat. Ale mně jako uživateli to může být celkem putna. Opravdu málo kdo (!) je v matice na takové úrovni, aby ty matematické kořeny FP dokázal opravdu ocenit a využít (!). My ostatní Běžní Frantové Programátoři si užíváme úplně jiné věci (jako třeba tu zmíněnou paralelizovatelnost nebo přímočarost kódu).

Jenže to funkcionální paradigma navíc není úplně přirozené ani tomu železu
To je nezpochybnitelná pravda. Na to bych ti řekl, že se nechci přizpůsobovat tomu, jak myslí stroj, chci, aby stroj pochopil, jak myslím já ;)  (neber pls doslovně - já mám taky nějakou zkušenost s embedded a přímočarost a lowlevelovitost Cčka umím taky ocenit a užít si, ne že ne)

2100
Vývoj / Re:Programovanie a modne trendy?
« kdy: 31. 08. 2017, 11:00:26 »
ale co modeluje obecná relativita nelze postihnout newtonovým modelem
No ale je potřeba si uvědomit jednu věc: kdekoli-kdykoli-kýmkoli-měnitelná data jsou takový problém, že se typicky v globálním měřítku ani v ne-FP programech nepoužívají, protože to je prostě neúnosné (~ nelze postihnout Newtonovým modelem).

Šermování turingovskou kompletností je sice hezký, ale je to klasický "v teorii je to pravda, v praxi ne", sloužící jenom k tomu, aby někdo někoho mlátil Turingem po hlavě. C++ templaty jsou údajně taky Turingovsky kompletní (údajně "náhodou", "omylem") a přesto by asi nikdo nebyl schopný v nich napsat třeba Windows nebo Word. Teoreticky to jde, prakticky je to nerealizovatelné, protože to prostě žádný smrtelník nedá.

Takže zpátky k tématu: kdekoli-kdykoli-kýmkoli-měnitelná data by v jakémkoli větším systému žádný smrtelník nedal, proto se vytváří různé bariéry (moduly, subsystémy apod.), které komunikují pomocí nějakého API. A na téhle úrovni je to co? No přece úplně to samý jako erlangovské procesy, které komunikují pomocí zpráv. Aha? Takže i v "normálním", "ne-FP" programování se používá přesně ten samý princip, akorát na jiné úrovni, v jiném měřítku. Čili machrování "nikdy jsem to nepotřeboval" je poněkud mimo mísu. Potřeboval. Akorát jsem o tom nevěděl ;)

Stran: 1 ... 138 139 [140] 141 142 ... 618