Wpis z mikrobloga

Cześć! Zastanawiam się jak to jest z podejściem funkcyjnym w ramach platform, które znane są głównie z podejścia imperatywnego. Wydaje mi się, że choćby w takiej Javie (czy też raczej JVM) dużo dobrego zrobiło wprowadzenie takich języków jak Scala i Clojure.
Jeśli chodzi o .Net to podobna jest sytacja z promowanym swego czasu przez Microsoft - F#.

Zastanawiam się jak wiele osób w jakikolwiek sposób zostało skłonionych do tego by spróbować swoich sił w #programowaniefunkcyjne dlatego że na ich platformie pojawiły się właśnie języki wspomagające ten paradygmat?

A dziś ciekawi mnie co osoby używające głownie #python myślą o takim wynalazku jak hylang:

https://github.com/hylang/hy

Dostępność takiego "Lispa na Pythona" (nie pierwszego zresztą) jest dla Was jakąś zachętą do spróbowania innego paradygmatu?

#programowanie
  • 8
Ja uderzyłem w Scale mając background Javowy i głownie przez to że była dość bliska temu co juz znałem. Wcześniej pokazali mi Haskella ale nie zaiskrzyło, dopiero po latach w Scali byłem w stanie docenić ten język.
via Wykop Mobilny (Android)
  • 2
@secret_passenger: w Javie to funkcyjnie używa się streamów z Javy 8.

Na Scalę był hype, ale obecnie to zabawka dla znudzonych (chociaż fanboje bronią jej). Prawdziwe zastosowanie ma nadal w Spark i Akka. Tutaj podejście funkcyjne ma się dobrze.

W Clojure nie widziałem żadnego projektu komercyjnego. W sumie to ciekawe bo to chyba najbardziej funkcyjne na JVM. Wiesz coś więcej?

Jak ktoś chce się bawić z funkcyjnym to idzie w Haskell.
@Krever: O! A móglbyś napisać bardziej szczegółowo co dla Ciebie było taką zachętą? Podobne narzędzia? To że ekosystem znałeś? Możliwość korzystania z wielu bibliotek?

@mk321: no streamy to są jakieś funkcyjne smaczki, ale mi chodzi bardizej o to, że kod w Javie napisany całkowicie w duchu funkcyjnym staje się dla innych osób "dziwny", bo idzie pod prąd pewnych założeń (mutowalność obiektów chociażby). to jest zerwanie z pewną stosowaną w Javie,
@secret_passenger: dostępność na pewno ma znaczenie, ale też dziedzina problemów jest inna i paradygmat niejako "przegrał".
Jest popularny tam gdzie się tego uczy (MIT, tam uczą compsci na Scheme).
Stamtąd pochodził (długa historia) system Genera ( https://en.wikipedia.org/wiki/Genera_(operating_system) ) na Lisp Machines, były do tego specjalne procesory. Pokładano w tym paradygmacie nadzieje odnośnie rapid development (program tworzący program ze specyfikacji), ai (MIT ai lab).
Po drodze James Gosling stworzył Gosling Emacs, itd.
@cosmopolitan: z Lisp Machines zetknąłem się jakiś czas temu i była to dla mne spora niespodzianka (już nie dziwię się teraz skąd wziął się ten dziwny pomysł Sun-a by zrobić procesoru rozumiejące bytekod Javy).

Masz rację, sporo rzeczy się pozmieniało. Jakaś cząstka programowania funkcyjnego jaka jest dostępna dla developerów JVM/.Net wydaje się większości ludzi wystarczać. samo "programowanie funkcyjne" rozumie się bardzo prosto - jako funkcje bez efektów ubocznych, do tego jakieś
@secret_passenger: Mnie się podoba ten hylang, który linkowałeś.
Mógłbyś go zintegrować z Emacs, żeby był równorzędny i żeby się dało wywoływać w dwie strony: lisp -> hy oraz hy -> lisp. :-)

A tak bardziej poważnie - jakoś specjalnie nie siedzę w funkcyjnych, ale można sobie w nich np. projecteuler porozwiązywać, polecam.

Kiedyś jeszcze erlang mocno stał poza telco (ejabberd, dzisiaj jest choćby rabbitmq).
Z pomysłów na większe projekty nie pomogę,