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

Stran: 1 ... 49 50 [51] 52 53 ... 101
751
všem díky za odpovědi, asi tedy Python. A díky za link na astromik.org, vypadá to inspirativně ;-)
Python pro toto stačí, a kdyby to mělo být nativně kompilovatelné, tak C++(14), Go nebo Swift. Možná ještě Rust, ten je ale okrajový. C# je sice pro vývoj i běh v pohodě, ale zbytečně vyžaduje těžkotonážní instalaci. Java je na Linuxu nad ARM tragédie.

752
Hardware / Re:Notebook pre Java Vyvojara
« kdy: 01. 10. 2016, 14:36:39 »
Ahojte, aky notebook by ste odporucili Java developerovi? Moje kriteria su asi len 16gb ram, vykonny procesor a 15" display ... celkom klasika u javistov je macbook no nemam s nim este skusenost (windowsak) ... moji dvaja hlavni kandidati su MacPro 15" a Dell xps 15
MacBook, jak zmiňují jiní, je hodně dobrá volba, ale s koupí je dobré počkat aspoň měsíc, Apple v říjnu přestaví nové modely.

753
Studium a uplatnění / Re:Studium JavaEE v dobe JS kniznic
« kdy: 29. 09. 2016, 15:43:30 »
Odkial ziskavate znalosti? Mate nejake specialne stranky ktore poskytuju nejake online kurzy, knihy, youtube kanaly? Alebo len google?
Pro přehled stačí Wikipedie (goroutines, libev*, epoll, kqueue a spousta jiných technologií), kde se dají najít příslušné další odkazy. Internet v podstatě bohatě stačí, od oficiálních stránek po různé blogy.

754
Studium a uplatnění / Re:Studium JavaEE v dobe JS kniznic
« kdy: 29. 09. 2016, 15:14:44 »
Ahojte, vsimam si pracovne ponuky a po com je v sucastnosti dopyt, a pride mi to tak, ze pocet ponuk pre java vyvojarov uz nie je tolko ako niekedy,a zacinaju sa presadzovat technologie a Node.js a podobne ... Preto moja otazka znie, ci sa oplati v dnesnej dobe este ucit javu, alebo sa radsej zamerat na nieco ine? Ak ano kde zacat? Vsimol som si ine prispevky ohladom javy no uz su starsie, a zaujimali by ma ake su momentalne trendy v jave, nech sa neucim neaktualne veci :) Diki

Čistě subjektivně: Nejlepší je naučit se (pochopit), jak různé technologie fungují, bez ohledu na jazyk. Např. zmíněný node.js nějakým způsobem zpracovává I/O a je dobré pochopit, jak to funguje "pod pokličkou" a v čem je výhoda. Podobné technologie/knihovny/frameworky totiž existují i pro Javu, C++ apod. a vše to stejně využívá nízkoúrovňové knihovny a služby jádra. Člověk se tak dostane k pochopení epoll, kqueue apod. Následně je dobré prozkoumat, jak se v tomto ohledu liší třeba Go (goroutiny) atd. Syntax jazyka a znalost základní knihovny jsou důležité, ale to člověk pochopí snadno a rychle. Proto je lepší se nejřív (nebo možná spíše souběžně) zaměřit na obecnější postupy a technologie, než jen jeden (jakkoliv rozšířený) jazyk. S Javou se člověk asi neztratí, ale zanlost Go, libev(ent), databází atd. rozšíří obzory a zvýší vhodnost kandidáta na množství pozic.

755
Vývoj / Re:Map vs. FlatMap
« kdy: 28. 09. 2016, 16:59:28 »
Tak třeba flatMap ve Swiftu je i u Optional a chová se jako >>= (je to flatten.map). Java to má myslím taky tak.
Scala určitě. Ale to je tím, že Optional je intuitivně seznam o 0<=n<=1 prvcích. Docela bych trval na tom, že "každý" programátor chápe flatMap jako mapování přes nějakou kolekci a ne jako úplně obecný bind - tj. "zřetězení v monadickém typu".

Můžeš se zkusit průměrného programátora zeptat, jestli když v javascriptu asynchronní fci na načítání něčeho přes HTTP vracející future předává url, jestli je to podle něj flatMap. Vsadím boty, že na tebe bude koukat jako na blázna ;)

Ale asi nemá smysl se o tom hádat, každý si může tu operaci pojmenovat, jak chce.
Souhlas. Ale běžný programátor podle mě ten obecný rozměr nevidí tak dobře jako ty. Nebo spíš vůbec. Takže když to tak budeš nazývat, spíš to povede k nedorozumění než naopak.
Já to tak nenazývám, nejvíc se mi líbí >>=, dokonce jsem si pro něj vytvořil vlastní latexové makro (a pro další jako rybí operátor). Jen v podstatě říkám, na co jsem narazil v dokumentaci Swiftu u každé monády, totiž že flatMap=flatten.map, což tam beru jako konvenci.

756
Vývoj / Re:Map vs. FlatMap
« kdy: 28. 09. 2016, 16:15:19 »
Ne tak úplně, bind je flatMap, jsou to jen různá pojmenování stejné operace (stejně jako join a flatten).
Spíš flatMap je speciální případ bindu, ne?

Pod flatMap myslím každej chápe operaci nad seznamy a nic jinýho.
Tak třeba flatMap ve Swiftu je i u Optional a chová se jako >>= (je to flatten.map). Java to má myslím taky tak. Suma sumárum ne "každej" to vztahuje jen na seznamy. Ale asi nemá smysl se o tom hádat, každý si může tu operaci pojmenovat, jak chce. Mně se třeba taky víc líbí "bind", a ve Swiftu píšu flatMap (u kolekcí i jiných monád) s vědomím, že jde o bind.

757
Vývoj / Re:Map vs. FlatMap
« kdy: 28. 09. 2016, 14:48:00 »
to se mi nějak nezdá, jak se pomocí monadického rozhraní poskládá (např.) seznam?

Pokud jsem pochopil otazku, tak by mohlo vysvetlit tohle:
https://en.wikibooks.org/wiki/Haskell/Understanding_monads/List
možná tam je, ale já ji nevidim, možná jsem se v tom trošku ztratil
otázka by mohla být jak pomocí (>>=) a return (když už teda chcete haskell) udělám z [1] a [2] hodnotu [1,2]
Myslím, že zboj myslel spíš to, že pomocí bindu můžu hezky "simulovat" map i flatMap:

map:
Kód: [Vybrat]
Prelude> [1,2,3] >>= (\x -> [x*2])
[2,4,6]

flatMap:
Kód: [Vybrat]
Prelude> [1,2,3] >>= (\x -> [x,x])
[1,1,2,2,3,3]

filter:
Kód: [Vybrat]
Prelude> [1,2,3] >>= (\x -> if x==1 then [] else [x])
[2,3]

...ale ne naopak, čili bind je "silnější"/"obecnější" koncept.

Samozřejmě to neznamená, že by si nějaká obecná fce nad monádami vycucala z prstu, že když dostane dva listy, tak je má zřetězit, to jí samozřejmě musím nějak říct, že má udělat zrovna toto :)
Ne tak úplně, bind je flatMap, jsou to jen různá pojmenování stejné operace (stejně jako join a flatten).

758
Vývoj / Re:Map vs. FlatMap
« kdy: 28. 09. 2016, 14:07:58 »
flatMap má typ ma->(a->ma)->ma. Kde přesně je ten rozpor?
já si představuju typ t a -> (a -> m b) -> m b, jednak jste mluvil o monádě na výstupu, což IMHO znamená, že na vstupu je něco jiného, druhak Data.Foldable.foldMap (se jeví takový pohodlnější) a za třetí ten váš flatMap je dost omezený co se týče mapování samotného (a -> a), ale to je asi překlep
Ten typ, co jsem napsal, je *definice* flatMap. Join, unit a flatMap jsou přesně definované a navzájem provázané a není možné jejich typy měnit. Samozřejmě se dá vymyslet nějaká jiná užitečná funkce nad monádami, ale pak by se neměla jmenovat flatMap, protože to je pevně daný koncept, stejně jako si nemůžu říct, že "celé číslo" pro mě od teď budou všechna racionální čísla větší než π (teda říct si to můžu, ale pak se s nikým nedomluvím).
pak tedy je problém čistě ve formulaci "na výstupu"
Výstupním typem je libovolná, ale stejná monáda (např. List, Future nebo Continuation), základový typ může být jiný (jakýkoliv).

759
Vývoj / Re:Map vs. FlatMap
« kdy: 28. 09. 2016, 12:13:15 »
@v Sorry ale nerozumím. Můžeš prosím znovu co nejsrozumitelněji naformulovat celou otázku v jednom příspěvku bez odkazů na předchozí příspěvky, ať se vyhrabeme z toho zmatku? Díky..
to nevím jestli umím :D

IMHO vrcholu srozumitelnosti jsem dosáhl, když jsem se zeptal jestli je možné implementovat tuto funkci:
f :: Monad m => m a  -> m a -> m a
tak aby f [1] [2] == [1,2]
motivace pro tento dotaz je příspěvěk zboj  27. 09. 2016, 15:24:02
(implementace f a b = join [a, b] neodpovídá zadanému datovému typu)

Hmm, řekl bych že to nejde. U listu to vypadá v pohodě, ale jak by vůbec měl vypadat očekávaný výsledek třeba na Maybe?

f (Just 1) (Just 2) = ??

Pravda, není to moc rigorózní úvaha, ale intuitivně se mi zdá, že f tak jak ho chceš naimplementovat nejde.
Aby to dávalo smysl, monáda musí být aditivní, pak stačí funkci definovat jako x++y. Tím jsme ale dost odbočili od flatMap.

Nojo, tak to je ale trochu podvod :) Ale interpretuju to tak, že na Monad f implementovat nejde, na MonadPlus jo.
Jistě, bez nějaké dodatečné struktury konkatenace smysluplně definovat nejde. Taky jsem nikdy netvrdil, že něco takového je možné a popravdě moc ani smysl té původní otázky nechápu. Vzhledem k nedávnému vývoji této diskuze asi nedorozumění způsobil zmatek ohledně typu flatMap (viz výše).

760
Vývoj / Re:Map vs. FlatMap
« kdy: 28. 09. 2016, 12:09:52 »
flatMap má typ ma->(a->ma)->ma. Kde přesně je ten rozpor?
já si představuju typ t a -> (a -> m b) -> m b, jednak jste mluvil o monádě na výstupu, což IMHO znamená, že na vstupu je něco jiného, druhak Data.Foldable.foldMap (se jeví takový pohodlnější) a za třetí ten váš flatMap je dost omezený co se týče mapování samotného (a -> a), ale to je asi překlep
Ten typ, co jsem napsal, je *definice* flatMap. Join, unit a flatMap jsou přesně definované a navzájem provázané a není možné jejich typy měnit. Samozřejmě se dá vymyslet nějaká jiná užitečná funkce nad monádami, ale pak by se neměla jmenovat flatMap, protože to je pevně daný koncept, stejně jako si nemůžu říct, že "celé číslo" pro mě od teď budou všechna racionální čísla větší než π (teda říct si to můžu, ale pak se s nikým nedomluvím).

761
Vývoj / Re:Map vs. FlatMap
« kdy: 28. 09. 2016, 11:52:46 »
@v Sorry ale nerozumím. Můžeš prosím znovu co nejsrozumitelněji naformulovat celou otázku v jednom příspěvku bez odkazů na předchozí příspěvky, ať se vyhrabeme z toho zmatku? Díky..
to nevím jestli umím :D

IMHO vrcholu srozumitelnosti jsem dosáhl, když jsem se zeptal jestli je možné implementovat tuto funkci:
f :: Monad m => m a  -> m a -> m a
tak aby f [1] [2] == [1,2]
motivace pro tento dotaz je příspěvěk zboj  27. 09. 2016, 15:24:02
(implementace f a b = join [a, b] neodpovídá zadanému datovému typu)

Hmm, řekl bych že to nejde. U listu to vypadá v pohodě, ale jak by vůbec měl vypadat očekávaný výsledek třeba na Maybe?

f (Just 1) (Just 2) = ??

Pravda, není to moc rigorózní úvaha, ale intuitivně se mi zdá, že f tak jak ho chceš naimplementovat nejde.
ohledně Maybe, pro inspiraci bych se podíval na Data.Monoid
já nevím jestli to jde, ale objevila se tady myšlenka, že výstupní typ flatMap má být monáda a to stačí, to je v rozporu s mou představou o flatMap i s tím co (si myslím že) vím o monádách, no a tak se ptám
flatMap má typ ma->(a->mb)->mb. Kde přesně je ten rozpor?

762
Vývoj / Re:Map vs. FlatMap
« kdy: 28. 09. 2016, 11:51:26 »
@v Sorry ale nerozumím. Můžeš prosím znovu co nejsrozumitelněji naformulovat celou otázku v jednom příspěvku bez odkazů na předchozí příspěvky, ať se vyhrabeme z toho zmatku? Díky..
to nevím jestli umím :D

IMHO vrcholu srozumitelnosti jsem dosáhl, když jsem se zeptal jestli je možné implementovat tuto funkci:
f :: Monad m => m a  -> m a -> m a
tak aby f [1] [2] == [1,2]
motivace pro tento dotaz je příspěvěk zboj  27. 09. 2016, 15:24:02
(implementace f a b = join [a, b] neodpovídá zadanému datovému typu)

Hmm, řekl bych že to nejde. U listu to vypadá v pohodě, ale jak by vůbec měl vypadat očekávaný výsledek třeba na Maybe?

f (Just 1) (Just 2) = ??

Pravda, není to moc rigorózní úvaha, ale intuitivně se mi zdá, že f tak jak ho chceš naimplementovat nejde.
Aby to dávalo smysl, monáda musí být aditivní, pak stačí funkci definovat jako x++y. Tím jsme ale dost odbočili od flatMap.

763
Vývoj / Re:Map vs. FlatMap
« kdy: 28. 09. 2016, 00:08:24 »
Ve Swiftu:
Kód: [Vybrat]
[[1],[2]].flatMap{$0}
swift neznám, ale řekl bych, že ekvivalentní kód v haskellu by byl join [[1], [2]] - jenže to není odpověď na mou otázku
V tom případě doporučuju tu otázku přeformulovat, evidentně jsem ji špatně pochopil. BTW ekvivalentní není, to by bylo [[1],[2]].flatten()
pomocí syntaxe haskellu:
implementace funkce f
f :: Monad m => m a  -> m a -> m a
tak aby f [1] [2] == [1,2]

Kód: [Vybrat]
f(x,y)=join([x,y])
nebo jen pomocí flatMap
Kód: [Vybrat]
f(x,y)=[x,y]>>=id
to ovšem neodpovídá datovému typu, který jsem uvedl, v haskellu je takový kód použitelný pouze pro "List monádu"
A co má ta funkce jako obecně dělat? Monády se specifikují jen pomocí unit, join a map, z čehož se dá flatMap vždy odvodit. Konkatenace není obecně definovatelná.

764
Vývoj / Re:Map vs. FlatMap
« kdy: 27. 09. 2016, 23:32:41 »
Ve Swiftu:
Kód: [Vybrat]
[[1],[2]].flatMap{$0}
swift neznám, ale řekl bych, že ekvivalentní kód v haskellu by byl join [[1], [2]] - jenže to není odpověď na mou otázku
V tom případě doporučuju tu otázku přeformulovat, evidentně jsem ji špatně pochopil. BTW ekvivalentní není, to by bylo [[1],[2]].flatten()
pomocí syntaxe haskellu:
implementace funkce f
f :: Monad m => m a  -> m a -> m a
tak aby f [1] [2] == [1,2]

Kód: [Vybrat]
f(x,y)=join([x,y])
nebo jen pomocí flatMap
Kód: [Vybrat]
f(x,y)=[x,y]>>=id

765
Vývoj / Re:Map vs. FlatMap
« kdy: 27. 09. 2016, 21:53:30 »
Ve Swiftu:
Kód: [Vybrat]
[[1],[2]].flatMap{$0}
swift neznám, ale řekl bych, že ekvivalentní kód v haskellu by byl join [[1], [2]] - jenže to není odpověď na mou otázku
V tom případě doporučuju tu otázku přeformulovat, evidentně jsem ji špatně pochopil. BTW ekvivalentní není, to by bylo [[1],[2]].flatten()

Stran: 1 ... 49 50 [51] 52 53 ... 101