Fórum Root.cz
Práce => Studium a uplatnění => Téma založeno: ghost 09. 11. 2014, 15:00:19
-
Poslední dobou zjištuji, že vývoj různých aplikací typu CRM a podobné mě jaksi neuspokojuje. Rád bych se vyhnul obloukem lepení webovek v PHPku a podobným věcem. Chci se profesně posunout někam jinam (neříkám že chci být striktně jen programátor) má smysl učit se Erlang (Elixir případně jiný jazyk)? Je po lidech v ČR se znalosti tohoto jazyka vůběc nějaká poptávka?
-
V ČR je to v řádu jedinců. Zkus něco jiného.
-
Máš pro něj nějaké využítí? Pokud ne, je zbytečné se ho učit. Až ho budou někde chtít, tak jim řekni, že se ho za jejich peníze klidně naučíš. Pokud nechceš být programátor, tak už to vůbec nechápu. Celkově lepení webů je někde na úrovni prodavačky, takže pokud se mu chceš úplně vyhnout, dává to smysl. Ale rozhodně se můžeš začít učit něco pořádného místo Erlang.
-
U nas se Erlang pouziva v backendech. V proof of concept benchmarkach vysel jako nejlepsi pomer vykon/doba_vyvoje
Jednou tu byl i kluk na malou Webku, kterou mel napsat v Chigabossu, ale nedal to.
Proc te Erlang zajima?
Mohu zjistit jestli jeste zajem bude.
-
Zajímám se o něj proto, protože mě zaujalo to co jsem o něm četl na webu zejména o distribuovaných systémech. Vím, že existují i jiné jazyky nicméně pochybuji, že s Prologem by byla situace lepší něž se Erlangem.
-
Java nebo C++ je super volba. Umí to úplně všechno a až to nebude stačit, můžeš zkusit i Erlang. Nebo dělej admina a Erlang měj jako takové přilepšení pro sebe.
-
Chci se posunout (...) . No divej, zkus si co nejpresnej definovat KAM se chces posunout. Vazne.
-
Pro tazatele: bylo tu už minimálně jednou podobné vlákno, zkus pohled, asi nemá smysl se opakovat. Kdyžtak se pak můžeš doptat na něco, co tam nebylo.
V ČR je to v řádu jedinců.
To těžko můžeš vědět, kolik lidí v kolika firmách dělá v Erlangu, páč to je typicky backendová záležitost použitá pro konkrétní domény, takže to těžko můžeš vědět, kolik lidí v něm dělá.
Samozřejmě to nejsou desetitisíce a statisíce, aby to probublalo do pracovních agentur.
-
Experimenty se moc nepočítají. Dotaz zněl jasně a to na poptávku a poptávka není.
-
Experimenty se moc nepočítají. Dotaz zněl jasně a to na poptávku a poptávka není.
Nejde o experimenty. Pokud teda GoodData nebo Honeywell nepovazujes za experimentatory...
Poptavka neni v tisicich a neni na jobs-serverech. Ale to je taky vec, o ktere se tady uz diskutovalo, nema smysl to opakovat.
-
I kdyby to nemělo přímou pracovní aplikaci, je to docela hezký způsob jak se naučit nějaké funkcionální principy, které by současné programování potřebovalo jako sůl...
-
Zajímám se o něj proto, protože mě zaujalo to co jsem o něm četl na webu zejména o distribuovaných systémech. Vím, že existují i jiné jazyky nicméně pochybuji, že s Prologem by byla situace lepší něž se Erlangem.
Jake mas tedy z psanim Webu a Web aplikaci zkusenosti ?
Troufas si zkusit malou aplikaci v http://www.chicagoboss.org/ ?
-
Ja bych rekl, jazyk se neuc, pokud vylozene nemas zajem neco v tom delat (a poptavka velka asi nebude), ale myslim, ze je fajn si precist dizertaci autora Erlangu: http://www.erlang.org/download/armstrong_thesis_2003.pdf (http://www.erlang.org/download/armstrong_thesis_2003.pdf)
-
funkcionální principy, které by současné programování potřebovalo jako sůl...
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í.
-
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
-
Kdyz jsem to resil loni na projekt, ktery se bohuzel nekonal, tak ERLAN vysel nejrychlejsi
v tomto testu :
https://github.com/ericmoritz/wsdemo (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 ...
-
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.
-
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.
-
A ta potřeba je kde a jaká konkrétně ?
reaktivne programovanie
immutability + funkcionalko => thread safety for free, aj v obj orient prog
-
...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.
-
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.
-
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 :)
-
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.
-
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á :)
-
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)
-
(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?
-
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.
-
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
-
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 (http://akka.io/) ve Scale? O něco podobného se rovněž snaží Microsoftí projekt Orleans (http://blogs.msdn.com/b/dotnet/archive/2014/04/02/available-now-preview-of-project-orleans-cloud-services-at-scale.aspx).
-
Jak už psal kolega perceptron, co třeba Akka (http://akka.io/) 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 :(
-
nikdy nemůže mít garbage collector tak jednoduchý jako Erlang
Výhody plynoucí jednoduchosti z GC v mnoha aplikacích může potopit povinnost immutable. Zrovna práce s pamětí je již od roku 1985 čím dál tím větší brzda, tedy bude zajímavé sledovat zda se Erlang ujme nebo neujme.
ten se bohužel taky zatím neujal tak, jak jsem doufal, že se ujme :(
Ujme se to, co uzná evoluce za vhodné a budoucnost nikdo nezná :)
-
http://erlang.org/pipermail/erlang-questions/2014-November/081570.html
-
Výhody plynoucí jednoduchosti z GC v mnoha aplikacích může potopit povinnost immutable.
mozete to rozpracovat podrobnejsie?
----------
imho erlang ako taky sa uz vehementne neujme, ale veci z neho pochadzajuce (actor model a pod.) su napr. v scala / java svete v dost velkom hype, najma kvoli tej skalovatelnosti a nonblocking. [az do takej miery, ze stari erlangisti pobehuju a kricia, ze toto tu uz mali pred X * 10 rokmi]
-
mozete to rozpracovat podrobnejsie?
Masivní kopírování paměti z důvodu immutable principu + jednodušší GC může být méně výkonné než mutable princip + složitější GC. Polopaticky režie s kopírováním může být větší než režie s algoritmicky složitějším GC. Rozsoudí to budoucnost.
-
může být méně výkonné [...] může být větší než režie
Nejde moc o vykon ve smyslu nejakeho poctu operaci za jednotku casu. V takovych testech funkcionalni jazyky vetsinou nejsou na spici (i kdyz treba haskell je na tom docela slusne) a ani k tomu nejsou designovane. Spis jde o to, ze erlangovsky GC se muze za urcitych podminek chovat "prijemneji" - protoze nemusi delat world freeze a prestoze (prave proto ze) je jednoduchy, muze bez nejakyho vetsiho harakiri fungovat inkrementalne, takze cely system se pak muze chovat treba predvidatelneji a nezpusobuje neprijemna prekvapeni...
Dalsi vec je, jakym zpusobem se obvykle problemy v danem jazyce resi a jak obvykle vypadaji aplikace v danem jazyce napsane. Treba Java jako takova je rychla, v umelych testech hrubeho vykonu si vede az prekvapive dobre, ale treba kdyz se podivam na Logstash, tak jenom pro spusteni si sezere nejakych 100 nebo kolik MB pameti - a to jde prosim o jednoduche zpracovani zprav, zadna velka veda. Tezko rict, proc to tak je, ale je to tak :) Z tohodle pak prameni ty vecny spory, jestli je Java rychla nebo ne... Pravdu maji obe strany :)
-
V ČR je to v řádu jedinců. Zkus něco jiného.
Strcil bych (vlastni) ruku do ohne za to, ze to bude vic nez jen par jedincu ...
PS: I am GoodData Employee
-
V ČR je to v řádu jedinců. Zkus něco jiného.
Strcil bych (vlastni) ruku do ohne za to, ze to bude vic nez jen par jedincu ...
PS: I am GoodData Employee
A mohl bych se zeptat co vse v GoodData v Erlangu programujete?
-
Slysel jsem, ze zrovna GD v erlangu pripravili implementaci jednoho nejmenovaneho db systemu. Rad bych toto reseni pouzil v jednom projektu. Je mozne nejak/zdarma/za uplatu ziskat licenci/zdrojaky/etc?
-
Nejde moc o vykon ve smyslu nejakeho poctu operaci za jednotku casu. V takovych testech funkcionalni jazyky vetsinou nejsou na spici (i kdyz treba haskell je na tom docela slusne) a ani k tomu nejsou designovane.
Podle čeho soudíte, že Haskell je na tom slušně?
-
Nejde moc o vykon ve smyslu nejakeho poctu operaci za jednotku casu. V takovych testech funkcionalni jazyky vetsinou nejsou na spici (i kdyz treba haskell je na tom docela slusne) a ani k tomu nejsou designovane.
Myslel jsem si, že jedním z mála praktického využití funkcionálních jazyků obecně je podpora automatické paralelizace a ta je hlavně o výkonu. Nyní se dozvídám že k tomu nejsou designované, to mě tedy zklamalo.
tak jenom pro spusteni si sezere nejakych 100 nebo kolik MB pameti
Soudruzi z NDR holt měli v případě Javy zvláště slabou pětiletku.
-
Myslel jsem si, že jedním z mála praktického využití funkcionálních jazyků obecně je podpora automatické paralelizace a ta je hlavně o výkonu. Nyní se dozvídám že k tomu nejsou designované, to mě tedy zklamalo.
Pokud budes psat koder videa, nebudes ho psat v Erlangu, pokud nejsi uplne padly na hlavu. Takovehle veci vzdycky bude lepsi psat v cecku, fortranu apod. Takhle to bylo mysleno.
Jinak "vykon" neni zadne jedno cislo. Neco jineho je propustnost, neco jineho latence, responsibilita, predvidatelnost, garance zpracovani do urcite doby atd. atd.
-
btw ten logstash vyzera byt taky nafuknuty, lebo to je prakticky ruby nad jvm