Jak zacząć od Lisp? [Zamknięte]

48

Programuję od lat, pracując nad różnymi wersjami Blub (BASIC, Asembler, C, C ++, Visual Basic, Java, Ruby w żadnej kolejności „Blub-ness”) i chciałbym się uczyć Seplenienie. Mam jednak dużo intertia, co z ograniczonym czasem (rodzina, praca na pełen etat itp.) I wygodnym szczęściem z obecnym Blubem (Java).

Moje pytanie brzmi więc, biorąc pod uwagę, że jestem kimś, kto naprawdę chciałby się uczyć Lisp, jakie byłyby pierwsze kroki, aby uzyskać dobry wynik, który pokazuje wyższość Lisp w tworzeniu stron internetowych ? Może nie rozumiem tego, ale tak początkowo widziałbym zastosowanie mojej wiedzy Lisp.

Myślę „użyj dialektu A, użyj IDE B, postępuj zgodnie z instrukcjami na stronie C, kwestionuj swoje zdrowie psychiczne po monadach korzystających z doradcy D”. Chciałbym tylko wiedzieć, co ludzie tutaj uważają za optymalny zestaw wartości dla A, B, C i być może D. Również trochę dyskusji na temat względnej korzyści z uczenia się tak potężnego języka w przeciwieństwie do, powiedzmy, stania się Railsami ekspert.

Żeby dodać trochę więcej szczegółów, będę rozwijał się na MacOS (lub Linux VM) - żadne podejście oparte na Windowsie nie będzie konieczne, dzięki.

Uwagi dla osób przeglądających według

Mam zamiar pozostawić to pytanie otwarte, aby móc wyrazić opinię na temat sugestii po ich zbadaniu. Jeśli akurat przeglądasz strony i uważasz, że masz coś do dodania, zrób to. Bardzo chciałbym poznać Twoją opinię.

Ciekawe linki

Zakładając, że przybywasz do Lisp z Java, ten zestaw linków sprawi, że szybko zaczniesz.

  1. Korzystanie z wtyczki La Clojure firmy Intellij do integracji Lisp ( videocast )
  2. Lisp dla sieci
  3. Wersja online Practical Common Lisp (pod Frank Frank Shearar)
  4. Land of Lisp to (+ (+ very quirky) game based)sposób na wejście, ale wszystko jest takie proste
  5. Zainstaluj Clojure i Sublime 2 na MacOS - doskonały przewodnik dla początkujących
  6. Spójrz na książkę Clojure in Action . Pracował dla mnie.
Gary Rowe
źródło
1
Czytając „ANSI Common Lisp” i „On Lisp” Paula Grahama.
duros
2
O skałach Lisp (nie czytałem ANSI Common Lisp), ale jako książka wprowadzająca , Practical Common Lisp> On Lisp. Przynajmniej IMO. (Przeczytałem najpierw „Lisp”, ale PCL sprawiło, że doszedłem do CL.)
Frank Shearar,
Muszę powiedzieć, że w tej chwili lubię czytać PCL - doskonałe przypisy do historii języka naprawdę dają wrażenie społeczności
Gary Rowe
1
Moim pierwszym wprowadzeniem do Lisps było obejrzenie słynnej struktury i interpretacji programów komputerowych. Potem obejrzałem Clojure dla programistów Java Richa Hickeya. Polecam te filmy jako dobre wprowadzenie.
WuHoUnited

Odpowiedzi:

18

Jest to prawdopodobnie sprzeczne z zaleceniami większości ludzi, ale unikaj Emacsa na początek, chyba że już go znasz. Zwłaszcza jeśli jesteś przyzwyczajony do nowoczesnych IDE / edytorów.

Mówię z doświadczenia; Próbowałem zacząć od Emacsa, ale nauka języka i edytor jednocześnie mnie bardzo frustrowały (zwłaszcza, że ​​Emacs tak bardzo różni się od innych narzędzi). Skończyło się na tym, że zacząłem go rzucać, zaczynając od PLT Scheme (teraz Racket), który zawiera stosunkowo proste IDE międzyplatformowe, scentralizowane repozytorium pakietów i wspaniałe dokumenty (w tym pośredni samouczek przeznaczony specjalnie do tworzenia stron internetowych ). Po tym, jak opanowałem Lisp, wróciłem do Emacsa, zbierając EL / CL poprzez Practical Common Lisp i Xah's Elisp Guide. Zasadniczo, tak jak ja to widzę, musisz znać Lisp, zanim będziesz mógł skutecznie używać Emacsa, i musisz znać Emacsa, aby być bardzo efektywnym w CL / Elisp. Oznacza to, że możesz albo wybrać Schemat, albo najpierw nauczyć się Common Lisp za pomocą innego edytora (prawdopodobnie osobiście LispWorks).

Jeśli już znasz Emacsa, to tak, Elisp jest naturalnym krokiem (chociaż to, jak chciałbyś korzystać z Emacsa, nie wiedząc, że Elisp jest pierwszy, jest poza mną).

YMMV oczywiście pomogło mi właśnie to.

Ponieważ twoim obecnym blubem jest Java, prawdopodobnie możesz uzyskać wiele kilometrów z Clojure , Armed Bear lub Kawa . Sam nie próbowałem żadnego z nich, nie będąc facetem Javy, ale Clojure jest szczególnie polecany przez innych Lisperów, których znam. Wygląda na to, że umiejętność utrzymania bieżącej maszyny wirtualnej i IDE może pomóc w procesie uczenia się.

Inaimathi
źródło
Miałem już podstawową znajomość emacsa, kiedy zaczynałem. Emacs ma bardzo stromą krzywą uczenia się!
Frank Shearar
+1, ponieważ moje poprzednie doświadczenia z Emacsem były mniej niż cudowne (nie powstrzymuje mnie to od chęci poznania go i wbudowania Lisp - jak zauważył Thorbjorn - oznacza, że ​​mogę wykorzystać moją wiedzę Lisp w mojej codziennej pracy)
Gary Rowe,
3
@ Thorbjørn Ravn Andersen - Did that. Dwa razy. Nadal ciągle używam skrótów CUA (domyślnie wyłączonych w Emacsie). Najgorsze było zamknięcie mojego edytora przypadkowym wycięciem + zamierzoną kopią ( C-x C-c). Kocham Emacs na śmierć, a prawie na żywo w nim teraz, ale uświadomić sobie, że w pierwszych latach, jesteś walki pamięci mięśniowej mówi ci C-sto Save, nie Searchi że Undojest C-z. Nie polecę tego rodzaju frustracji komuś, kto zamierza nauczyć się Lisp. Naucz się najpierw języka, zdaj sobie sprawę, że go kochasz, a następnie zacznij walczyć rękami z wyraźnym celem.
Inaimathi
1
@Inaima, moc ma swoją cenę, a wiązania Emacsa poprzedzają CUA, więc obwiniają IBM :) Również Ctrl-C + Ctrl-v nie jest CUA :)
1
@Geoffrey van Wyk - PLT jest świetny na początek, ale po pewnym czasie napotykasz pewne ograniczenia, które sprawiły, że przeszedłem na CL / Emacs, kiedy miałem już orientację. YMMV. Napisałem jakiś czas temu, jeśli jesteś zainteresowany szczegółami langnostic.blogspot.com/2010/09/... Jeśli chodzi o pytanie LispWorks; Muszę wierzyć, że atakują duże zespoły (gdzie firma kupuje narzędzia) lub konsultantów (którzy zwykle robią tyle, by cena była uzasadniona). Nie jestem pewien, jak im się to udaje, ale nie takie podejście wybrałbym.
Inaimathi,
10

Cóż, możesz trafić w dwa ptaki czytając SICP ; Jeden uczy się LISP (mam na myśli, że schemat jest dialektem Lisp), a drugi jest świetnym wglądem w programowanie. Okres !!

Srinivas Reddy Thatiparthy
źródło
1
+1 dla linku - szybkie skanowanie wydaje się pokazywać, że jest bardzo szczegółowe, ale także dość suche (czytaj akademickie) w swoim podejściu. Jestem wielkim fanem „głosu ekspertów” podczas czytania tekstu, ale wydaje się, że jest to dobre ogólne odniesienie.
Gary Rowe,
10

Conrad Barski ma świetny samouczek o nazwie Casting SPELs w Lisp (SPEL to jego skrót od makr). Polega na stworzeniu prostej gry typu Przygoda i wskakuje bezpośrednio do makr Lisp. Pracował również nad książką wprowadzającą, która jest teraz dostępna pod adresem:

Naucz się programować Lisp, jedna gra na raz .

I ze spisu treści:

  • Utwórz własny serwer internetowy i używaj go do grania w gry przeglądarkowe

Nie wiem jednak, co to oznacza dla rozwoju sieci (jak na stronach HTML) przy użyciu Lisp. :)

Aktualizacja - widzę, że ktoś wspomniał o książce „Struktura i interpretacja programów komputerowych”, która przypomniała mi, że MIT umieścił online, całe wykłady wideo SICP Hal Helsona i Geralda Jaya Sussmana . Być może książka była sucha, ale wykłady są doskonałe. Chociaż są oparte na Schemacie, nadal bardzo dobrze znają podstawowe koncepcje również w Lisp. Warto pobrać i obejrzeć.

cyklop
źródło
8

Aby uzyskać dobre podstawowe wprowadzenie do języka, przeczytaj Practical Common Lisp Petera Seibela . Książka jest doskonała.

Konfigurowanie emacsa i SLIME może być trudne dla początkujących, gdzie „trudne” różni się wielkością w zależności od systemu operacyjnego. Jak zwykle Windows dostaje krótką końcówkę, ale ludzie wykonali trudną część i napisali ją (SBCL, Emacs, SLIME).

Kiedy to się stanie, Planet Lisp odniosła się do artykułu opisującego ostatnio konfigurację Hunchentoot i nginx.

Edycja specyficzna dla systemu operacyjnego: MCLIDE może być dobrym miejscem na rozpoczęcie. Zainstalowałem go, ale nie miałem okazji go użyć, więc nie mogę powiedzieć nic użytecznego. Z pewnością wygląda interesująco!

Edycja: Eclipse ma również wtyczkę Cusp .

Frank Shearar
źródło
6

Mam już wiele świetnych odpowiedzi, ale zakładając, że chcesz zagłębić się w tworzenie stron internetowych za pomocą Lisp, mam jeszcze kilka pomysłów.

Clojure jest pierwszym Lispem, w którym widziałem naprawdę doskonałe frameworki internetowe z pełnym stosem, które są gotowe na najwyższy czas.

  • Noir to solidny framework internetowy z routingiem, szablonami itp., Podobny do Sinatry, ale nieco bogatszy w funkcje. Używa Pierścienia, który jest w zasadzie odpowiednikiem Clackure Rack w Ruby.
  • Korma to biblioteka abstrakcji SQL, która bardzo dobrze łączy się z Noir.
  • Pinot to platforma po stronie klienta napisana całkowicie w języku ClojureScript, która prowadzi nas do:
  • Clojurescript to kompilator dla Clojure, którego celem jest Javascript.

Jeśli nie zauważyłeś, właśnie opisałem cały stos sieci i wszystko jest napisane w Clojure.

Uważam, że Clojure jest nieco łatwiej zacząć od Common Lisp, ze znacznie lepszym zestawem funkcji / obsługą bibliotek niż Scheme.

Jeśli w ogóle pochodzisz z języka Java, ma on tę dodatkową zaletę, że działa na JVM, co zapewnia dostęp do całego pakietu stdlib Java, gdy jest on potrzebny.

Dostępna dokumentacja jest w toku, podobnie jak same ramy. Ale tutaj jest całkiem niezły tutorial .

Jeśli chodzi o redaktorów ... jeśli nie masz nic przeciwko vimowi, możesz go używać z SLIMV. Jeśli lubisz emacsa, emacs / SLIME jest w porządku. Jest całkiem dobra obsługa Eclipse i NetBeans dla Clojure (a przynajmniej tak mi powiedziano), ale ogólnie używam TextMate (chociaż Sublime Text 2 szybko staje się moim edytorem). Wiem, że brakuje mi trochę magii Lisp, która nie korzysta z bardziej zintegrowanego środowiska, ale chętnie wciskam ⌘-Tab, aby przełączać się między moim edytorem a REPL; twój przebieg może się różnić.

Jeśli chcesz książka by nadać ci, polecam Programowanie Clojure Stuart Halloway i Aaron Bedra. Druga edycja właśnie wyszła z PragProg , więc jest aktualna.

Happy Lisping!

Jason Lewis
źródło
Możesz dodać Leiningen
Gary Rowe
5

Inny komentator, Inaimathi , polecił tę książkę kilka dni temu: Mały Schemer

Otrzymałem go dzisiaj i mogę powiedzieć, jako ktoś, kto ma bardzo bogatą bibliotekę książek programistycznych nabytych przez wiele lat, że mogłem przeczytać tylko jeden rozdział, ale na pewno będę potrzebował jego twardej wersji. Czyta się jak Tao Te Ching, wiele małych fragmentów boskiej mądrości dotyczących języka. Może powiedzieć „Schemat”, ale pierwotnie nazywał się „Mały LISPer”, języki na omawianym poziomie są wystarczająco podobne, aby uczyć się ich jako jednego.

To nie jest zaawansowany tekst, ale ma misję zaszczepienia zasad języka i tego, do czego tak naprawdę służy, jak tak myśleć. Wierzę, że byłby to doskonały start dla LISP.

NB. Matryca kompetencji programistów faktycznie wspomina o tej książce na najwyższym poziomie kompetencji rzeczy, których należy szukać. (patrz sekcja Książki)

Orbling
źródło
4

Bardzo miłym miejscem do rozpoczęcia korzystania z Lisp jest edytor Emacsa, w którym można go zdefiniować na nowo. Chcesz, aby klawisz „e” wstawił datę, po prostu napisz mały fragment Lisp, aby wygenerować ciąg i powiązać go z kluczem e. Gotowy.

Pozwoli ci to również faktycznie UŻYWAĆ tego, czego się nauczysz w codziennym otoczeniu, jeśli zdarzy ci się używać zwykłego edytora w ciągu dnia.


źródło
+1 za poradę „wykorzystuj to, czego się uczysz”. Jestem cwaniakiem Intellij do codziennej pracy, ale być może uda mi się złapać emacsa w naszym bardzo ograniczonym środowisku oprogramowania.
Gary Rowe,
3

Jeśli będziesz programować na komputerze Mac, możesz wypróbować Clozure CL . Wyposażony jest w IDE, które ma klawisze kompatybilne z Emacsem, i jest mostek do Objective C, dzięki czemu możesz pisać aplikacje Cocoa.

Przeczytałem także Practical Common Lisp, ale Pomyślne Lisp również było pomocne.

Wreszcie, twoja cierpliwość zostanie nagrodzona. Wydajność i niewielkie zwycięstwa nadejdą dość szybko, ale duża wygrana może chwilę potrwać.

Larry Coleman
źródło
2

Mam przy biurku kopię ANSI Common Lisp . Podnoszę go co kilka lat i przeglądam kilka rozdziałów, potem utknąłem na kilku ćwiczeniach i ześlizguje się z listy priorytetów. To chyba mówi więcej o mnie niż o książce. Książka wydaje się całkowicie kompetentna ...

glenatron
źródło
Być może przeczytanie odpowiedzi i komentarzy do tego pytania da ci impuls do pracy nad wyższym celem. Pęknij na linku PCL i powiedz nam, co myślisz ...
Gary Rowe