Möchte jetzt mal Lisp lernen

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Benutzeravatar
snafu
User
Beiträge: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Vor allem Common Lisp interessiert mich. Kennt da jemand gute Tutorials oder Beispiele, Open Books, ...?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Also erstmal Gratulation zur Entscheidung (oder "Einsicht", wie ein Lisper sagen würde) :) Aber als Schemer muss ich natürlich einwerfen: ihh, das hässliche Lisp :D Kann man versuchen, dich zu Scheme zu bekehren?

Gut also für Common Lisp brauchst du erstmal eine Implementation, SBCL hat sich zumindest im Bereich der Freien Software als populärste Implementation durchgesetzt (wenn auch nicht so wie GHC in Haskell, aber ähnlich). Daneben brauchst du einen Editor (aka emacs mit SLIME), weil glaub mir -- automatisch richtige Indentation und Klammer-Highlighting ist wirklich etwas was man nicht missen will, benutze als vim-User DrScheme, weil das so wichtig ist.

Was Bücher angeht: Practical Common Lisp ist für den Anfang gut, danach könnte On Lisp gut sein. Die Common Lisper in der Münchner Usergroup schwören auch auf PAIP. Dann gibt es auch noch die HyperSpec als die Referenz. Schließlich gibt es auch noch die Common Lisp Quick Reference, ein echt nett gemachtes Ding, ich habe mir vor langer Zeit Revision 34 ausgedruckt (aktuell ist 109).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
snafu
User
Beiträge: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Leonidas hat geschrieben:Kann man versuchen, dich zu Scheme zu bekehren?
Durchaus möglich. Ich habe nur noch nicht ganz erkannt, welche Vorteile Lisp gegenüber Scheme bringt. Ist es denn ein Nachteil, Scheme ohne Lisp-Kenntnisse zu lernen?
Benutzeravatar
snafu
User
Beiträge: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Gibt es eigentlich einen Aufsatz für die sbcl-Shell, ähnlich wie IPython? Mich nervt beim Probieren ein bißchen, dass keine automatische Einrückung gemacht wird.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

snafu hat geschrieben:Durchaus möglich. Ich habe nur noch nicht ganz erkannt, welche Vorteile Lisp gegenüber Scheme bringt. Ist es denn ein Nachteil, Scheme ohne Lisp-Kenntnisse zu lernen?
Scheme *ist* ein Lisp, genauso wie etwa Common Lisp, Clojure oder Arc. Common Lisp ist auch "nur" ein Lisp, es repräsentiert Lisp nicht, denn Lisp ist eine Sprachfamilie wie etwa ML (wo es Standard ML, OCaml, Caml Light und noch einige weitere gibt) oder die C-Familie (mit C, C++, Objective-C).
snafu hat geschrieben:Gibt es eigentlich einen Aufsatz für die sbcl-Shell, ähnlich wie IPython? Mich nervt beim Probieren ein bißchen, dass keine automatische Einrückung gemacht wird.
Dazu verwendet man üblicherweise Emacs und führt dann den Code mittels "Evaluate Form" aus.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Der sichtbarste Unterschied zwischen CommonLisp und Scheme ist, wie jeweils das erste Argument von (f x y) ausgewertet wird. CL kennt zwei getrennte Namensräume für Funktionsnamen und Variablennamen und weiß, dass das erste Argument ein Funktionsnamen sein muss. Scheme kennt (wie Python) nur einem Namensraum und wertet jedes Argument auf die selbe Weise aus. Durch diese (und ein paar andere) Änderung gegenüber CL ist Scheme die einfachere Sprache, ohne dadurch weniger mächtig zu sein.

CL war mal berüchtigt dafür, mit seiner knapp 1000 Seiten starken Dokumentation eine gewaltige Funktionsbibliothek mitzubringen. Inzwischen ist das aber nichts und Python, Ruby und insbesondere Java oder C# bringen deutlich größere Bibliotheken mit, die zudem auch wesentlich besser an die Bedürfnisse heutiger Probleme angepasst sind.

CL hat ein integriertes Objektsystem namens CLOS (manche sprechen das Ziehloss aus, ich fand allerdings immer, es kein Kloss) das in dem Buch "The Art of the Meta Object Protocol" beschrieben ist und ein Meilenstein der Flexibilität war. Für Scheme gibt es da keinen Standard und diverse Spielarten von Objektorientierung sind verfügbar.

Ein elegantes und modernes Lisp war übrigens Dylan (bevor man der Sprache eine Pascal-Syntax übergestülpt hat), welches ein praktikables Objektsysteme hatte, welches das Vorbild für Pythons Vererbungsstrategie ist.

Das vielleicht aktuell interessanteste (weil modernste) Lisp ist IMHO Clojure, eine Neuimplemetierung auf der Basis der JVM speziell für nebenläufige Programmierung. Vorteil der JVM ist, dass Clojure dadurch Zugriff auf einen Berg von Java-Bibliotheken hat und z.B. auf standardisierte Weise Webanwendungen erstellbar sind, die man dann in einem Java Application Server deployen kann. Es gibt übrigens auch Armed Bear CommonLisp (ABCL) sowie diverse Scheme-Dialekte für die JVM. Da ist dann aber IMHO die Java-Integration nicht so stark.

Stefan
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

sma hat geschrieben:CL hat ein integriertes Objektsystem namens CLOS (manche sprechen das Ziehloss aus, ich fand allerdings immer, es kein Kloss) das in dem Buch "The Art of the Meta Object Protocol" beschrieben ist und ein Meilenstein der Flexibilität war. Für Scheme gibt es da keinen Standard und diverse Spielarten von Objektorientierung sind verfügbar.
In meinen Scheme rocks-Slides hab ich die sogar mal aufgelistet. Dabei ist schon interessant dass die Objektsysteme von CLOS-artig, über Prototypenbasiert bis hin zu Message-Passing wie in Smalltalk reichen. Scheme sieht wie die perfekte Sprache zum Vergleich von Objektsystemen aus :)
sma hat geschrieben:Ein elegantes und modernes Lisp war übrigens Dylan (bevor man der Sprache eine Pascal-Syntax übergestülpt hat), welches ein praktikables Objektsysteme hatte, welches das Vorbild für Pythons Vererbungsstrategie ist.
Sowas war auch für BitC geplant, bevor es eingestampft wurde.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten