Wpis z mikrobloga

#lisp #commonlisp #programowanie #livecoding #tworczoscwlasna #naukaprogramowania
Mireczki i Mirkówny, zapraszam na ciąg drobnych sesji livecodingu prezentujących i uczących Common Lispa! Niniejszym zaklepuję na moją serię tag #kraklisp od nazwy grupy lisperskiej, którą reprezentuję.

Załączam pierwszy film, prezentujący w dwadzieścia minut prototypowanie małego silnika rąbania potworów przez bohaterów oraz opisujący działanie i zastosowanie do niego funkcji reduce - wszystko interaktywnie i na żywo w REPLu Common Lispa.

phoe - #lisp #commonlisp #programowanie #livecoding #tworczoscwlasna #naukaprogramowa...
  • 31
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@phoe: Znam nieźle Clojure i trochę Emacs Lispa.
Myślisz, że warto uczyć się CL? Co jest w nim lepszego niż w innych Lispach? Do jakich zastosowań nadaje się lepiej niż inne języki?
  • Odpowiedz
@informatyk15000k: podstawowa różnica to jego wieloparadygmatowość i możliwość swobodnego łączenia imperatywów, funkcyjności, obiektów i wszelkiego rodzaju innych rzeczy; oraz makra, w tym makra czytnika, które rozszerzają kompilator i w sumie sam język do obsługi wszystkiego, co programista uważa za słuszne - w tym nowych paradygmatów.
ELisp jest całkiem podobny do CLa, Clojure się świadomie wyłamał z części lispowych tradycji; uważam, że warto, bo czemu i nie. :D może i ja
  • Odpowiedz
@phoe: Akurat makra to dosyć typowa funkcjonalność w lispach :). Co do mieszania paradygmatów to mam dosyć złe doświadczenia z tym - zmaterializowane w postaci doświadczeń ze Scalą :).
  • Odpowiedz
@informatyk15000k: to wideo dość fajnie pokazuje stronę funkcyjną, ale zamiast ("Srogi Barbarzyńca" 1) może być tam dowolny obiekt, a CLOS jest akurat naprawdę *przepięknym* systemem obiektowym - chociażby metody nie należą do klas, tylko się na nich specjalizują, a to pozwala Ci dowolnie je kombinować ze sobą.

i imperatywów też nie ma się co bać, szczególnie przy konstrukcji języka programowania, który, jakby nie patrzeć, operuje na implementacji maszyny von Neumanna.
  • Odpowiedz
@informatyk15000k: pewnie, że są.

różnica jest taka, że w Clojure to język decyduje, czy wolno Ci mutować listę, czy nie; w CLu decyduje o tym programista, a wszystkie funkcje standardowe mówią Ci wprost, czy funkcja ma skutki uboczne i ewentualnie jakie.
jeśli chcesz mutować dane, to bez problemu napiszesz program w tym stylu. jeżeli nie chcesz ich zmutować, to bez problemu napiszesz program bez ani jednej mutacji. Common Lisp nie
  • Odpowiedz
a wszystkie funkcje standardowe mówią Ci wprost, czy funkcja ma skutki uboczne i ewentualnie jakie.


@phoe: Piękna sprawa - przypomina mi trochę Haskella. To jeszcze się zastanowię, bo z drugiej strony inwestycja w elispa może być bardziej praktyczna.
  • Odpowiedz