Wpis z mikrobloga

#programowanie #learnclojurewithmikroblog

Mam taki pomysł na serię wpisów na mirko z zadankami uczącymi języka clojure. Jest to dość oryginalny język - taki bardziej funkcyjny i unowocześniony LISP, jest stronka http://tryclj.com/ na której można się pobawić interpreterem, i jeśli będzie kilku chętnych będę zamieszczał opis języka i proste zadanka do zrobienia (proste, żeby nie trzeba było nic instalować - można rozwiązywać na tej stronce tryclojure).

Clojure jest fajne, bo można w kilku linijkach dużo zrobić, no i zmusza do przestawienia się na myślenie funkcyjne o programowaniu. Warto poznać inne podejście, jeśli ktoś do tej pory tylko obiektowo programował.

Na zachętę sumowanie nieparzystych elementów tablicy w clojure wygląda tak:

(reduce + (filter odd? [1 2 3 4 5 6 7 8 9 10]))
jeśli chcemy wykonać to równolegle zamiast na 1 wątku, wystarczy dodać "p" i zaciągnąć bibliotekę.

(preduce + (filter odd? [1 2 3 4 5 6 7 8 9 10]))
Clojure ma też software transacional memory (czyli można pisać wielowątkowo bez lockowania praktycznie), oraz makra jak w lispie (czyli można zmieniać składnię clojure używając clojure - większość featurów języka to po prostu biblioteki).
  • 10
  • Odpowiedz
Też jestem za, dodatkowej wiedzy nigdy za dużo :) ale ogólnie nie lubię takich języków, bo co z tego że można dużo zrobić małą ilością kodu, jak to jest nieczytelne :/
  • Odpowiedz
@Xayan: na tym polega inność, że nie jest instynktowna :) Uczyłeś się pewnie kilka lat programować imperatywnie w skłądni podobnej do języka C, a to widzisz pierwszy raz. Ale porównaj ilość miejsc, gdzie można się pomylić pisząc to, co powyżej w języku imperatywnym, i w clojure.

@Hauleth: nie umiem scheme, kiedyś próbowałem, ale odstraszyły mnie struktury danych - w clojure są bardzo sensownie zaprojektowane, i mają różne literały,
  • Odpowiedz
@tell_me_more: Scheme to tylko listy i atomy. Atomy dzielą się na symbole, literały i liczby. Wszystko tak bardzo uberminimalistycznie, co pozwala na naukę programowania, a nie pisania programów.
  • Odpowiedz
@Hauleth: ale scheme jest trochę niepraktyczne. Clojure jest bardzo praktyczne - masz dostęp do wszystkich bibliotek na JVM. A jednocześnie naprawia wiele problemów z lispami i schemami (choćby durne skróty car i cdr).
  • Odpowiedz