phoe
phoe
16
#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.

  • Najlepsze
  • Wszystkie komentarze
phoe
phoe Autor
2
@TurboMirek: φ ( ͡° ͜ʖ ͡°)
T.....k
T.....k
@phoe: jak mu mówić ?
vilard
@TurboMirek: fi ( ͡° ͜ʖ ͡°)
T.....k
T.....k
@vilard: @phoe: fi jak co ?
T.....k
T.....k
@phoe: Ale fi jak kąt, funkcja czy strumień ?( ͡° ͜ʖ ͡°)
i.....k
i.....k
@phoe: kraklisp? Co to takiego?
phoe
phoe Autor
1
i.....k
i.....k
@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?
phoe
phoe Autor
1
@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
i.....k
i.....k
@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ą :).
phoe
phoe Autor
1
@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.
i.....k
i.....k
@phoe: To co najbardziej mi się podoba w Clojure to świetne niezmienne typy danych, czego chyba w CL nie ma, zgadza się?
phoe
phoe Autor
1
@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
i.....k
i.....k
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.
phoe
phoe Autor
1
@informatyk15000k: Haskella? a skąd ( ͡° ͜ʖ ͡°)
gdy programujesz w Haskellu, to Haskell jest Bogiem; gdy programujesz w Lispie, Bogiem jesteś Ty.
phoe
phoe Autor
1
@informatyk15000k: elisp bardzo mocno przypomina CLa, jak pisałem wyżej; nauka elispa i CLa razem może być całkiem przydatna.
i.....k
i.....k
@phoe: Możesz polecić jakąś dobrą książkę albo dłuższy manual?
i.....k
i.....k
@phoe: No i jeszcze implementację, bo z tego co pamiętam jest ich wiele.
phoe
phoe Autor
1
@informatyk15000k: Practical Common Lisp.
poza tym #lisp-pl na Freenode powie Ci dużo więcej; ja lecę na kolację więc odpowiem potem.
i.....k
i.....k
Haskella? a skąd ( ͡° ͜ʖ ͡°)


@phoe: Chodzi mi o to, że system typów rozgranicza funkcje bez efektów od tych "pure".