Wie soll ich mit Lisp anfangen? [geschlossen]

48

Ich programmiere seit Jahren und arbeite mich durch verschiedene Iterationen von Blub (BASIC, Assembler, C, C ++, Visual Basic, Java, Ruby in keiner bestimmten Reihenfolge von "Blub-ness") und möchte lernen Lispeln. Ich habe jedoch viel Schwung, was mit begrenzter Zeit (Familie, Vollzeitjob usw.) und einem angenehmen Glück mit meinem aktuellen Blub (Java) verbunden ist.

Meine Frage ist also, dass ich jemand bin, der wirklich gerne Lisp lernen möchte. Was wären die ersten Schritte, um ein gutes Ergebnis zu erzielen, das die Überlegenheit von Lisp in der Webentwicklung demonstriert ? Vielleicht verpasse ich den Punkt, aber so würde ich zunächst die Anwendung meines Lisp-Wissens sehen.

Ich denke "benutze Dialekt A, benutze IDE B, folge den Anweisungen auf Seite C, frage deinen Verstand nach Monaden mit Ratgeber D". Ich möchte nur wissen, was die Leute hier als einen optimalen Satz von Werten für A, B, C und vielleicht D ansehen. Auch einige Diskussionen über den relativen Wert des Lernens einer so mächtigen Sprache im Gegensatz zum Beispiel, ein Rail zu werden Experte.

Um ein paar Details hinzuzufügen, werde ich auf MacOS (oder einer Linux-VM) entwickeln - danke, dass keine Windows-basierten Ansätze erforderlich sind.

Notizen für diejenigen, die nur browsen

Ich werde diese Frage noch eine Weile offen halten, damit ich Feedback zu den Vorschlägen geben kann, nachdem ich sie untersucht habe. Wenn Sie gerade suchen und das Gefühl haben, etwas hinzuzufügen, tun Sie dies bitte. Ich würde mich sehr über Ihr Feedback freuen.

Interessante Links

Vorausgesetzt, Sie kommen mit einem Java-Hintergrund zu Lisp. Mit diesen Links können Sie schnell loslegen.

  1. Verwendung des La Clojure-Plugins von Intellij zur Integration von Lisp ( Videocast )
  2. Lisp für das Web
  3. Online-Version von Practical Common Lisp (c / o Frank Shearar)
  4. Land of Lisp einen (+ (+ very quirky) game based)Weg hinein, macht es aber alles so einfach
  5. Installieren Sie Clojure und Sublime 2 auf MacOS eine ausgezeichnete Startleitfaden
  6. Schauen Sie sich das Buch Clojure in Action an . Hat für mich gearbeitet.
Gary Rowe
quelle
1
Durch das Lesen von "ANSI Common Lisp" und "On Lisp" von Paul Graham.
Duros
2
On Lisp rocks (ich habe ANSI Common Lisp nicht gelesen), aber als Intro- Buch Practical Common Lisp> On Lisp. IMO zumindest. (Ich habe zuerst On Lisp gelesen, aber PCL hat mich zu CL gebracht.)
Frank Shearar
Ich habe momentan viel Spaß beim Lesen von PCL - hervorragende Fußnoten zur Geschichte der Sprache vermitteln ein Gefühl für die Community
Gary Rowe
1
Meine erste Einführung in Lisps war das Anschauen der berühmten Struktur und Interpretation von Computerprogrammen. Dann habe ich Rich Hickeys Clojure für Java-Programmierer gesehen. Ich würde diese Videos als gute Einführung empfehlen.
WuHoUnited

Antworten:

18

Dies steht wahrscheinlich im Widerspruch zu den Empfehlungen der meisten Menschen, meidet jedoch zunächst Emacs, es sei denn, Sie wissen es bereits. Besonders, wenn Sie an moderne IDEs / Editoren gewöhnt sind.

Ich spreche aus Erfahrung. Ich habe versucht, mit Emacs zu beginnen, aber gleichzeitig die Sprache UND den Editor lernen zu müssen, hat mich wirklich frustriert (zumal Emacs sich so von anderen Tools unterscheidet). Am Ende war ich mit PLT Scheme (jetzt Racket) beschäftigt, das mit einer vergleichsweise einfachen plattformübergreifenden IDE, einem zentralen Paket-Repository und hervorragenden Dokumenten (einschließlich eines Tutorials für Fortgeschrittene, das speziell auf die Webentwicklung abzielt ) ausgestattet ist. Nachdem ich Lisp in den Griff bekommen hatte, kehrte ich zu Emacs zurück und holte EL / CL über Practical Common Lisp und Xahs Elisp Guide ab. Grundsätzlich, wie ich es sehe, müssen Sie ein Lisp kennen, bevor Sie Emacs effektiv einsetzen können, und Sie müssen Emacs kennen, um mit CL / Elisp sehr effektiv zu sein. Dies bedeutet, dass Sie entweder das Schema abrufen oder Common Lisp zuerst mit einem anderen Editor (wahrscheinlich LispWorks Personal) lernen können.

Wenn du Emacs bereits kennst, dann ist Elisp der natürliche Schritt (obwohl es mir ein Rätsel ist, wie du Emacs verwenden würdest, ohne dass ich Elisp zuerst kenne).

YMMV natürlich, das ist genau das, was mir geholfen hat.

Da es sich bei Ihrem aktuellen Blub um Java handelt, könnten Sie wahrscheinlich eine Menge Meilen mit Clojure , Armed Bear oder Kawa erzielen . Ich habe keinen von ihnen selbst ausprobiert, da ich kein Java-Typ bin, aber Clojure wird ausdrücklich von anderen Lispers empfohlen, die ich kenne. Es scheint, als ob die Fähigkeit, Ihre aktuelle VM und IDE beizubehalten, beim Lernprozess hilfreich sein könnte.

Inaimathi
quelle
Als ich anfing, hatte ich bereits Grundkenntnisse in Emacs. Emacs hat eine sehr steile Lernkurve!
Frank Shearar
+1, weil meine bisherigen Erfahrungen mit Emacs weniger als wundervoll waren (das hindert mich nicht daran, es wissen zu wollen und Lisp eingebaut zu haben - wie Thorbjorn betont hat - bedeutet, dass ich mein Lisp-Wissen in meiner täglichen Arbeit einsetzen kann)
Gary Rowe
3
@ Thorbjørn Ravn Andersen - Hab das gemacht. Zweimal. Trotzdem habe ich ständig CUA-Verknüpfungen verwendet (die in Emacs standardmäßig deaktiviert sind). Das Schlimmste war, meinen Editor mit einem versehentlichen Schnitt und einer beabsichtigten Kopie ( C-x C-c) zu schließen. Ich liebe Emacs zu Tode, und so ziemlich leben in es jetzt, aber erkennen , dass auf den ersten, Sie kämpfen Jahre Muskelgedächtnis sage Ihnen C-sist Save, nicht , Searchund dass Undoist C-z. Ich werde diese Art von Frustration nicht jemandem empfehlen, der Lisp lernen möchte. Lerne zuerst die Sprache, merke, dass du sie liebst, und kämpfe dann mit einem klaren Ziel gegen deine Hände.
Inaimathi
1
@ Inaima, auch Macht kommt mit einem Preis, und die Emacs-Bindungen vor CUA so schuld IBM :) Auch Strg-C + Strg-V ist nicht CUA :)
1
@Geoffrey van Wyk - PLT ist am Anfang großartig, aber es gibt einige Grenzen, denen Sie nach einer Weile begegnen, die mich dazu veranlassten, auf CL / Emacs umzusteigen, sobald ich mich zurechtgefunden hatte. YMMV. Ich habe vor einiger Zeit eine Zuschreibung gemacht, wenn Sie an Details interessiert sind. Langnostic.blogspot.com/2010/09/… Soweit die LispWorks-Frage; Ich muss glauben, dass sie sich an große Teams (wo das Unternehmen die Werkzeuge kauft) oder Berater (die normalerweise genug verdienen, um den Preis zu rechtfertigen) richten. Ich bin mir nicht sicher, wie es für sie funktioniert, aber es ist nicht der Ansatz, den ich gewählt hätte.
Inaimathi
10

Nun, Sie können zwei Vögel schlagen , indem Sie SICP lesen : Einer lernt LISP (ich meine, Schema ist ein Dialekt von Lisp) und der andere gibt einen großartigen Einblick in das Programmieren.

Srinivas Reddy Thatiparthy
quelle
1
+1 für den Link - ein schneller Scan durch scheint zu zeigen, dass er sehr detailliert ist, aber in seiner Herangehensweise auch eher trocken (akademisch lesen). Ich bin ein großer Fan von "The Experts Voice", wenn es darum geht, Text zu lesen, aber es scheint eine gute allgemeine Referenz zu sein.
Gary Rowe
10

Conrad Barski hat ein großartiges Tutorial namens Casting SPELs in Lisp (SPEL ist sein Akronym für Makros). Es handelt sich um ein einfaches Abenteuerspiel und springt direkt in Lisp-Makros. Er hat auch an einem Einführungsbuch gearbeitet, das jetzt erhältlich ist unter:

Lerne Lisp, ein Spiel nach dem anderen zu programmieren .

Und aus dem Inhaltsverzeichnis:

  • Erstellen Sie Ihren eigenen Webserver und spielen Sie damit browserbasierte Spiele

Ich weiß nicht , was das für Web impliziert Entwicklung (wie in HTML - Seiten) mit Lisp, aber. :)

Update - Ich sehe, dass jemand das Buch "Struktur und Interpretation von Computerprogrammen" erwähnte, das mich daran erinnerte, dass MIT die gesamten SICP-Videovorträge von Hal Abelson und Gerald Jay Sussman online gestellt hat . Sie haben das Buch vielleicht trocken gefunden, aber die Vorträge sind ausgezeichnet. Obwohl sie auf einem Schema basieren, vermitteln sie die grundlegenden Konzepte auch in Lisp sehr gut. Das Herunterladen und Anschauen lohnt sich.

Zyklop
quelle
8

Um eine gute Einführung in die Sprache zu erhalten, lesen Sie Peter Seibels Practical Common Lisp . Das Buch ist ausgezeichnet.

Das Einrichten von Emacs und SLIME kann für Neulinge schwierig sein, wobei die Größe von "tricky" abhängig von Ihrem Betriebssystem variiert. Wie üblich bekommt Windows das kurze Ende des Sticks, aber die Leute haben den schwierigen Teil erledigt und ihn geschrieben (SBCL, Emacs, SLIME).

Sobald dies nicht mehr möglich ist, verwies Planet Lisp auf einen Artikel, in dem kürzlich die Einrichtung von Hunchentoot und Nginx beschrieben wurde.

Betriebssystemspezifische Bearbeitung: MCLIDE ist möglicherweise ein guter Ausgangspunkt. Ich habe es installiert, hatte aber keine Gelegenheit, es tatsächlich zu verwenden, daher kann ich nichts Nützliches dazu sagen. Es sieht auf jeden Fall interessant aus!

Bearbeiten: Eclipse hat auch das Cusp- Plugin.

Frank Shearar
quelle
6

Bereits viele gute Antworten, aber wenn Sie mit einem Lisp direkt in die Webentwicklung eintauchen möchten, habe ich noch ein paar Ideen.

Clojure ist das erste Lisp, das ich gesehen habe, um wirklich ausgezeichnete Full-Stack-Web-Frameworks zu haben, die zur Hauptsendezeit bereit sind.

  • Noir ist ein solides Webframework mit Routing, Templating usw., ähnlich wie Sinatra, jedoch mit mehr Funktionen. Es wird Ring verwendet, was im Grunde Clojures Äquivalent zu Rack in Ruby ist.
  • Korma ist eine SQL-Abstraktionsbibliothek, die sehr gut zu Noir passt.
  • Pinot ist ein clientseitiges Framework, das vollständig in ClojureScript geschrieben ist.
  • Clojurescript ist ein Compiler für Clojure, der auf Javascript abzielt .

Wenn Sie es nicht bemerkt haben, habe ich nur den gesamten Webstapel abgedeckt und alles ist in Clojure geschrieben.

Ich finde, dass Clojure ein bisschen einfacher ist, als Common Lisp, mit weitaus besserer Unterstützung für Feature-Sets / Bibliotheken als Scheme.

Wenn Sie überhaupt aus einem Java-Hintergrund stammen, hat dies den zusätzlichen Vorteil, dass Sie auf der JVM ausgeführt werden können, sodass Sie bei Bedarf auf die gesamte Java-Stdlib zugreifen können.

Die verfügbare Dokumentation ist in Arbeit, ebenso wie die Frameworks selbst. Aber hier gibt es ein ziemlich gutes Tutorial .

Für Redakteure: Wenn Sie mit vim vertraut sind, können Sie vim mit SLIMV verwenden. Wenn Sie Emacs mögen, ist Emacs / SLIME in Ordnung. Es gibt ziemlich gute Eclipse- und NetBeans-Unterstützung für Clojure (oder wie mir gesagt wurde), aber ich verwende im Allgemeinen TextMate (obwohl Sublime Text 2 schnell mein bevorzugter Editor wird). Ich weiß, dass ich ein wenig Lisp-Magie verpasse, ohne eine stärker integrierte Umgebung zu verwenden, aber ich freue mich, ⌘-Tab zu drücken, um zwischen meinem Editor und REPL zu wechseln. Ihr Kilometerstand kann variieren.

Wenn Sie ein Buch haben möchten, das Ihnen den Anfang macht, empfehle ich Programming Clojure von Stuart Halloway und Aaron Bedra. Die 2. Ausgabe ist gerade von PragProg erschienen , ist also auf dem neuesten Stand.

Fröhliches Lisping!

Jason Lewis
quelle
Vielleicht möchten Sie Leiningen
Gary Rowe
5

Ein anderer Kommentator, Inaimathi , hat dieses Buch vor ein paar Tagen empfohlen: Der kleine Schemer

Erhielt es heute und ich kann als jemand, der über eine sehr umfangreiche Bibliothek von über viele Jahre erworbenen Programmbüchern verfügt, sagen, dass ich möglicherweise nur ein Kapitel gelesen habe, aber auf jeden Fall eine gebundene Version davon brauche. Es liest sich wie das Tao Te Ching, viele kleine Schnipsel göttlicher Weisheit in Bezug auf die Sprache. Es mag Scheme heißen, aber ursprünglich hieß es "The Little LISPer", die Sprachen auf der Ebene, die es behandelt, sind ausreichend ähnlich, um als eine unterrichtet zu werden.

Es ist kein fortgeschrittener Text, sondern hat die Mission, die Prinzipien der Sprache zu vermitteln und wofür es wirklich ist, wie man so denkt. Ich glaube, es wäre ein ausgezeichneter Starter für LISP.

NB. Die Programmierer-Kompetenzmatrix erwähnt dieses Buch tatsächlich in der höchsten Kompetenzstufe der Dinge, nach denen gesucht werden soll. (siehe Abschnitt Bücher)

Orbling
quelle
4

Ein sehr guter Einstieg in Lisp ist der Emacs-Editor, mit dem Sie so gut wie alles neu definieren können. Sie möchten, dass der 'e'-Schlüssel die Uhrzeit einfügt. Schreiben Sie einfach ein kleines Lisp-Snippet, um den String zu generieren und an den e-Schlüssel zu binden. Getan.

Auf diese Weise können Sie auch tatsächlich das NUTZEN, was Sie in einer täglichen Umgebung gelernt haben, wenn Sie tagsüber einen einfachen Editor verwenden.


quelle
+1 für den Ratschlag "Nutze was du lernst". Ich bin ein Intellij-Fan für den Tagesjob, aber in unserer sehr eingeschränkten Softwareumgebung kann ich vielleicht meine Pfoten auf Emacs ablegen.
Gary Rowe
3

Wenn Sie auf einem Mac entwickeln, können Sie Clozure CL ausprobieren . Es wird mit einer IDE geliefert, die Emacs-kompatible Tastatureingaben enthält, und es gibt eine Brücke zu Objective C, über die Sie Cocoa-Anwendungen schreiben können.

Außerdem habe ich Practical Common Lisp gelesen, aber auch Successful Lisp als hilfreich empfunden.

Schließlich wird etwas Geduld von Ihrer Seite belohnt. Produktivität und kleine Siege werden ziemlich schnell kommen, aber der große Gewinn kann eine Weile dauern.

Larry Coleman
quelle
2

Ich habe eine Kopie von ANSI Common Lisp hier an meinem Schreibtisch. Ich nehme es alle paar Jahre auf und gehe ein paar Kapitel durch, dann bleibe ich bei ein paar Übungen und es rutscht in der Prioritätenliste runter. Das sagt dir wahrscheinlich mehr über mich als das Buch. Das Buch scheint völlig kompetent zu sein ...

Glenatron
quelle
Vielleicht gibt Ihnen das Durchlesen der Antworten und Kommentare zu dieser Frage den Anstoß, auf ein höheres Ziel hinzuarbeiten. Machen Sie einen Sprung in den PCL-Link und teilen Sie uns Ihre Meinung mit ...
Gary Rowe