Má smysl učit se Erlang?

jenda

Re:Má smysl učit se Erlang?
« Odpověď #15 kdy: 10. 11. 2014, 13:00:50 »
Kdyz jsem to resil loni na projekt, ktery se bohuzel nekonal, tak ERLAN vysel nejrychlejsi
v tomto testu :

https://github.com/ericmoritz/wsdemo

tesne na paty mu slapal golang v betaverzi, kteryzto je muj favorit, ale vyuziti v cesku taky mensi nez male ...




Kiwi

Re:Má smysl učit se Erlang?
« Odpověď #16 kdy: 10. 11. 2014, 13:15:49 »
A ta potřeba je kde a jaká konkrétně ? Patrně to bude něco velkého, když je to potřeba jako sůl.

Račte si nastudovat principy funkcionálního programování a jejich výhody: http://lmgtfy.com/?q=Advantages%20of%20functional%20programming

Každé paradigma má nějaké své výhody a nevýhody (u funkcionálního je to typicky pomalost a paměťová náročnost). Proto je dobré seznámit se se všemi, něco si v tom zkusit a pak nemít pocit, že jsi objevil svatý grál, který vyřeší všechny problémy (počítačového) světa, když si přečteš o něčem pro tebe novém.

Pokud jde o Erlang, jistě je to zajímavý jazyk a pokud v normálním světě platí "kolik jazyků znáš, tolikrát jsi člověkem", tak v tom počítačovém to platí dvojnásob. Neboli pokud nevíš roupama co by, proč se na něj nemrknout, zkazit tím nic nemůžeš. I kdybys v tom v životě pak už nikdy nic neprogramoval, alespoň se naučíš myslet trochu jiným způsobem a vidět problémy trochu jinak, než jaký je mainstream.

P.S.: Míchání různých paradigmat nikdy přehlednosti programu nepřidává. To pak z těch jazyků vzniká takový dort Pejska a Kočičky - s jedinou mně známou výjimkou, a tou je LISP. Tolik k poznámce, že by to současné programování potřebovalo jako sůl.

Kolemjdoucí

Re:Má smysl učit se Erlang?
« Odpověď #17 kdy: 10. 11. 2014, 13:23:32 »

Teorii k tomu mám nastudovanou již od dob VŠ. Myslel jsem že se k tomu dozvím něco fundamentálního z praxe, když už jste to ráčil otevřít a zase nic.

perceptron

Re:Má smysl učit se Erlang?
« Odpověď #18 kdy: 10. 11. 2014, 13:28:04 »
Citace
A ta potřeba je kde a jaká konkrétně ?
reaktivne programovanie

immutability + funkcionalko => thread safety for free, aj v obj orient prog



SB

Re:Má smysl učit se Erlang?
« Odpověď #19 kdy: 10. 11. 2014, 16:14:35 »
...I kdybys v tom v životě pak už nikdy nic neprogramoval, alespoň se naučíš myslet trochu jiným způsobem a vidět problémy trochu jinak, než jaký je mainstream...

Tak toto je úplně klíčová věta celé diskuse - jazyků je mraky (většina z nich jsou bezvýznamné, zbastlené sračky), v případě potřeby je možno se kterémukoliv poměrně rychle naučit. Ale způsob myšlení, ten se učí těžko, dlouho a ne každý to zvládne, zato možná zjistíte, že (dnes nadužívané) imperativní paradigma nemusí být tím nejlepším.


Re:Má smysl učit se Erlang?
« Odpověď #20 kdy: 10. 11. 2014, 16:23:07 »
A ta potřeba je kde a jaká konkrétně ? Patrně to bude něco velkého, když je to potřeba jako sůl.
To přímo souvisí s malou poptávkou po Erlangu, jelikož při vší úctě asi jenom p. Prýmek ví kde takovou poptávku mají.
Ale vždyť jsme to tady probírali už x-krát. Nejvíc nabídek je na mainstreamové technologie. A firmy volí mainstreamové technologie proto, že snadno (->levně) seženou lidi a snadno je i vykopnou.

Že je nějaká technologie mainstreamová neznamená, že je nejlepší, to by nejlepší OS musely být Windows.

Každý si prostě může zvolit mezi dvěma cestami: buď bude programátor v PHP, C++ nebo javě = houska na krámě, nebo se stane specialistou na něco, co jenom tak někdo neumí = bude na trhu velmi ceněný a přestože těch nabídek nebudou tisíce, budou za velmi slušných podmínek, protože prostě bude mít svou cenu.

Když je někdo odborník na nějakou jánevím speciální radiační ochranu, tak taky asi nenajde tisíce nabídek na jobs.cz a přesto (právě proto) ho ti, kdo ho opravdu budou potřebovat, vyváží zlatem.

Re:Má smysl učit se Erlang?
« Odpověď #21 kdy: 10. 11. 2014, 16:28:10 »
v případě potřeby je možno se kterémukoliv poměrně rychle naučit. Ale způsob myšlení, ten se učí těžko, dlouho a ne každý to zvládne, zato možná zjistíte, že (dnes nadužívané) imperativní paradigma nemusí být tím nejlepším.
K tomu bych ještě dodal, že Erlang je velmi jednoduchý jazyk, který se kdokoli naučí za dva dny. Když si místo Erlangu vybere Elixír, tak za den. Naučit se používat funkcionální obraty pak zabere třeba týden. Ale to opravdový nakouknutí do toho, k čemu je to vlastně všechno dobrý a jaký to dává smysl, to už je otázka spíš měsíců, než si to člověk zažije a ocení. Takže závěr: pokud do toho půjdeš, tak nespěchej :)

Kolemjdoucí

Re:Má smysl učit se Erlang?
« Odpověď #22 kdy: 10. 11. 2014, 16:59:14 »
immutability + funkcionalko => thread safety for free, aj v obj orient prog

Takže ta sůl je immutability a thread safety ? Nebo jak tomu mám rozumět ?

možná zjistíte, že (dnes nadužívané) imperativní paradigma nemusí být tím nejlepším.

Paradigmat znám několik, ale vždy k tomu byla nějaká praktická motivace, např. pro vznik objektového programování. U funkcionálního mě to dosud připomíná prodej teplé vody, proto jsem si myslel že se dozvím něco praktického a ono nic.

Ale vždyť jsme to tady probírali už x-krát.

Tohle je to vyřešeno, souhlasím s Vámi.

Re:Má smysl učit se Erlang?
« Odpověď #23 kdy: 10. 11. 2014, 17:08:41 »
Paradigmat znám několik, ale vždy k tomu byla nějaká praktická motivace, např. pro vznik objektového programování. U funkcionálního mě to dosud připomíná prodej teplé vody, proto jsem si myslel že se dozvím něco praktického a ono nic.
No když napíšeš program a on ti sám od sebe prakticky lineárně škáluje aniž bys musel řešit nějaké mutexy, kritické sekce a pak to nedejmatkopřírodo ještě debugovat, tak to má něco do sebe :)

Druhej přínos je pak třeba to, že v Erlangu se program skládá z malých modulů, které mezi sebou komunikují asynchronně a až na naprostý výjimky nesdílí stav, takže se jednak nezblázníš z toho, že musíš v hlavě držet obrovský moloch, a pak taky se práce dá docela snadno dělit mezi různé týmy, protože jazyk sám o sobě tě donutí používat dobře definovaná rozhraní.

Další věc ja pattern matching, to je extrémně návyková věc - když programuju v Pythonu, tak si bez toho připadám jak bezrukej :)

Takových přínosů to má spousty, ale těžko se to vysvětluje, dokud to nezkusíš.

Tohle je to vyřešeno, souhlasím s Vámi.
Mohli bysme si prosím tykat? Si připadám jako blbec, když mi někdo vyká :)

Kolemjdoucí

Re:Má smysl učit se Erlang?
« Odpověď #24 kdy: 10. 11. 2014, 17:18:40 »
No když napíšeš program a on ti sám od sebe prakticky lineárně škáluje aniž bys musel řešit nějaké mutexy, kritické sekce a pak to nedejmatkopřírodo ještě debugovat, tak to má něco do sebe :)

Druhej přínos je pak třeba to, že v Erlangu se program skládá z malých modulů, které mezi sebou komunikují asynchronně a až na naprostý výjimky nesdílí stav, takže se jednak nezblázníš z toho, že musíš v hlavě držet obrovský moloch, a pak taky se práce dá docela snadno dělit mezi různé týmy, protože jazyk sám o sobě tě donutí používat dobře definovaná rozhraní.

Další věc ja pattern matching, to je extrémně návyková věc - když programuju v Pythonu, tak si bez toho připadám jak bezrukej :)

Takových přínosů to má spousty, ale těžko se to vysvětluje, dokud to nezkusíš.

Výborně, děkuji za vysvětlení, konečně jsem se dozvěděl praktickou motivaci. Pattern matching je skutečně něco, co se jinde dělá těžce. Až to někdy budu potřebovat, vzpomenu si na Erlang ;)

(automatické škálování, asynchronní komunikace a pod, mám hotovo 10+ let, to mě nechává klidným)

Re:Má smysl učit se Erlang?
« Odpověď #25 kdy: 10. 11. 2014, 17:25:24 »
(automatické škálování, asynchronní komunikace a pod, mám hotovo 10+ let, to mě nechává klidným)
V Erlangu je to ale "zadarmo" - tj. v tom jazyce se programuje takovym zpusobem, ze prakticky kazdy program (pokud to principielne jde) skaluje sam od sebe, aniz by na to programator musel myslet nebo to nejak osetrovat.

Tohle mas v nejakem jinem jazyce hotovo? Jak?

Kolemjdoucí

Re:Má smysl učit se Erlang?
« Odpověď #26 kdy: 10. 11. 2014, 17:48:06 »
V Erlangu je to ale "zadarmo" - tj. v tom jazyce se programuje takovym zpusobem, ze prakticky kazdy program

Samo to funguje jenom v Erlangu, to samozřejmě uznávám.

perceptron

Re:Má smysl učit se Erlang?
« Odpověď #27 kdy: 10. 11. 2014, 19:04:39 »
v jave sa kadeco da naemulovat, uz aj tie lambdy a funkcionalne zvraty dali do jazyka / stdlibu.

to vsetko odvazni developeri pouzivaju od nepamati, ale otazka je, nakolko je to je konkretna implementacia pochopitelna, priamociara a vysvetlitelna

to krasne vidiet na akke v jave vs. scale, kde to nielen patern matching posuva na iny level


Radek Miček

Re:Má smysl učit se Erlang?
« Odpověď #28 kdy: 10. 11. 2014, 19:45:04 »
V Erlangu je to ale "zadarmo" - tj. v tom jazyce se programuje takovym zpusobem, ze prakticky kazdy program (pokud to principielne jde) skaluje sam od sebe, aniz by na to programator musel myslet nebo to nejak osetrovat.

Tohle mas v nejakem jinem jazyce hotovo? Jak?

Jak už psal kolega perceptron, co třeba Akka ve Scale? O něco podobného se rovněž snaží Microsoftí projekt Orleans.

Re:Má smysl učit se Erlang?
« Odpověď #29 kdy: 10. 11. 2014, 23:37:08 »
Jak už psal kolega perceptron, co třeba Akka ve Scale?
Co jsem se zběžně koukal, Akka je hodně inspirovaná Erlangem, bohužel jsem neměl a nebudu mít čas si ji pořádně vyzkoušet.

Já vůbec netvrdím, že věci, které má Erlang, nemá nikdo jiný, nebo že v jiných jazycích nejdou dodělat nějakou knihovnou apod. Jistěže jdou, vždyť jsou to koneckonců všechno jazyky turingovsky kompletní že jo :) Výhoda Erlangu je v tom, že má tyhle věci přímo v základu, jako hlavní myšlenku a všechno to prochází už nějakých 28 let prověřováním v praxi, na průmyslových aplikacích - žádné akademické hračičky.

Výhoda toho, že má jazyk něco už v základu, je hlavně v tom, že to je pevné omezení, se kterým se dá počítat. Taky už jsme to tady někde probírali, že např. JVM prostě z principu věci musí očekávat všechny možné varianty práce s pamětí, takže nikdy nemůže mít garbage collector tak jednoduchý jako Erlang, kde všechny odkazy jsou jenom dopředné, protože to prostě jinak v tom jazyce nejde, takže s tím GC může počítat. V JVM to jinak jde, takže s tím GC počítat nemůže. I když si postavím nadstavbu, ve které budu pracovat s pamětí jenom dopředně, nikdy nemůžu z principu dosáhnout toho efektu, který mám v Erlangu. Může to mít praktické dopady a nemusí, ale každopádně je to rozdíl, který se do práce nějakým způsobem promítá.

Každopádně ale věcem typu Akka hodně fandím, protože si aspoň lidi zkusí stavět architekturu aplikací trošku jinak... Druhej jazyk, kterej je mi tímhle sympatickej, jo Go - ten se bohužel taky zatím neujal tak, jak jsem doufal, že se ujme :(