Funkcionální programování je mimo akademickou sféru mrtvě narozené dítě a těch pár algoritmů které jde rozepsat do "bezpečných vícevláken" to nezachrání. Synchronizace vláken je a bude problém v jakémkoliv jazyce na světě a je to marginální záležitost oproti synchronizaci cache mezi jádry, pro ty slabší za jak dlouho se zápis do paměti v jednom jádru projeví v ostatních jádrech.
Erlang je super, jeden z nejjednodušších jazyků...
Taková trochu srdeční záležitost - Erlang je jazyk, na kterém jsem se naučil funkcionální programování...
Ale stejně například v porovnání s Haskell je Erlang opravdu jednoduchý... :-)
Zde je krásní úvod http://vimeo.com/3112113
Jo, jo, Erlang je prostě boží :)
Mě hodně bavil tenhle tutoriál: http://learnyousomeerlang.com/
Nevím kde bereš tu jistotu. Ne že by se tomu programátor úplně vyhnul, ale psát multijádrovou a multithreadovou aplikaci např. v Haskellu je řádově jednodušší než např. v C/C++, Pythonu nebo Javě. Díky referenční transparentnosti se nemusí o synchronizaci u ne-IO kódu programátor vůbec starat a běh na více jádrech je jen otázkou parametru překladače bez nutnosti program jakkoli upravovat.
Co se týče komerční úspěšnosti funkcionálních jazyků, tak ano, je výrazně menší než u imperativních. Na druhou stranu ty "úspěšné" jako Ruby, Python, Scala nebo nově C++11 hojně využívají funkcionální paradigmaty (uzávěry, lambda fce, generátory seznamů apod.)
Zajimavy nazor pod Carmackovym clankem o funkcionalnim stylu v C++:
I'm very glad my university taught Haskell in the first year (alongside Oberon, which I'm less glad about). I'd been programming in C++ for 5 years beforehand, and had spent a year working on commercial games, but learning Haskell changed the way I thought about programming quite dramatically.
a taky bych z te diskuze pridal dosti provokativni (i kdyz posledni veta v prvnim odstavci rika mnohe):
I became an OO maniac because at that time I believed that OOL was going to save the software world. It took me more than eight years to discover otherwise and realise that people were not becoming more productive even with the best OO languages.Then it all became clear. The solution is not objects... there are too many tedious interfaces that must be understood to even write a single line of code.
I cannot see languages like C++, Java, or PERL taking us to the stars. Object-oriented programming is not the answer. I can truly say this because I've been involved in object-oriented programming since the beginning. It does not increase productivity. It does not give better results.
On i takovej John Carmack je proti panu Raxovi velkej bridil:
http://www.altdevblogaday.com/2012/04/26/functional-programming-in-c/
Zalezi samozrejme na tom, k cemu by Clojure melo slouzit - me napriklad vyhovuje, ze programy jsou prekladany do bajtkodu a potom se na ne pousti JIT, mam k dispozici knihovny s API, ktere znam (Java) a napriklad hodit clojure na web server (pod nim Tomcat) neni vubec problem (to ale asi nebude problem ani s CL, nezkousel jsem).
Clojure je velmi podobne LISPu (ma i makro system podobny CL), ovsem asi nejvetsi zmenou je transakcni pamet, nemenne datove typy, pouziti agentu a vubec vlastne filozofie "identit" a "stavu".
Pokud by se jednalo o vyuku - hmm. osobne bych volil Scheme, ale to je ciste vec osobnich preferenci/pocitu, nez vysledek nejakeho vyzkumu (s CL by studenti asi mohli byt vyjukani :)
Precitajte si http://clojure.org/rationale a urobte si nazor sam :)