Möchte jetzt mal Lisp lernen
-
- 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
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).


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
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?Leonidas hat geschrieben:Kann man versuchen, dich zu Scheme zu bekehren?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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: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?
Dazu verwendet man üblicherweise Emacs und führt dann den Code mittels "Evaluate Form" aus.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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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
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
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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 aussma 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.

Sowas war auch für BitC geplant, bevor es eingestampft wurde.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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice