Dexter1997 schrieb:
Ich interessiere mich seit kurzem für Lisp. Nun habe ich schon herausgefunden, dass es ein "Einheitslisp" nicht gibt, sondern verschiedene Varianten, wobei Scheme und Common Lisp am häufigsten erwähnt wurden.
Ja.
Common Lisp ist sozusagen ein Standard der sich aus den traditionellen Lisp-Sprachen gebildet wurde, ums mal vereinfacht auszudrücken.
Common Lisp folgt an vielen Stellen noch sehr dem imperativen Muster.
Scheme ist da schon deutlich Funktionaler geprägt. Wobei der eigentliche Schwerpunkt bei
Scheme in dem Minimalismus liegt.
Scheme selbst bringt sehr wenig mit aber es lässt sich sehr viel damit implementieren (inkl. eigenes OOP so man möchte).
Scheme ist ebenfalls standardisiert. Und zwar im
Revisited Report of
Scheme inzwischen in Version 7 herausgekommen. Kurz R7RS genannt:
http://trac.sacrideo.us/wg/raw-attachment/wiki/WikiStart/r7rs.pdf
Dann gibt es noch ein Scheme-Derivat namens
Racket (
https://racket-lang.org/ ). Es weist einige Inkompatibilitäten zu Scheme auf, ist aber sonst sehr sehr ähnlich.
Racket selbst ist auch nicht nur eine Sprache, sondern vor allem eine Umgebung um auch neue Sprachen zu entwickeln. So kann man damit u.a. auch R7RS-Programme ausführen. Außerdem gibt es eine statisch getypte Variante.
Dexter1997 schrieb:
Außerdem gibt es da noch Clojure, mit dem Unterschied, dass Clojure objektorientiert ist und die Java-Bibs nutzen kann.
Richtig ist, dass
Clojure auf der JVM ausgeführt wird und auch Java-Klassen/Bibliotheken verwenden kann. Ansonsten ist
Clojure eine funktionale Sprache die dafür auch ihre eigenen Datentypen mitbringt.
Ich kenne mich eher mit C-Sprachen wie Java, Javascript, C, C++ usw. aus, nicht so sehr mit rein funktionalen. Wie sollte man als Lisp-Anfänger am besten anfangen?
Dexter1997 schrieb:
Welche Variante ist für Anfänger empfehlenswert?
Welchen Interpreter sollte man benutzen?
Ich würde da am ehesten zu
Racket raten. Das bringt auch eine IDE mit und ist sehr gut dokumentiert (gibt sogar deutschsprachiges Material). Außerdem gibt es schon eine Menge Bibliotheken zu den verschiedensten Anwendungsbereichen sowie gute Anfängertutorials (
Racket wird auch in der Ausbildung an Universitäten eingesetzt; vornehmlich in den USA aber auch hier in Deutschland).
Auf der
Racket-Homepage findest Du auch fast alles, was Du wissen musst bzw. was es an Material gibt bzw. Verweise darauf. Racket dürfte sogar schon bei der Linux-Distribution Deiner Wahl dabei sein. Bei Debian ist es auf jeden Fall dabei. Ansonsten lässt es sich aber auch relativ problemlos kompilieren (falls das nicht klappt, nochmal nachfragen).
Zu
Common Lisp gibt es ein recht gutes Einsteigerbuch von Peter Seibel namens Practical Common Lisp:
http://www.gigamonkeys.com/book/
Ansonsten sei auf
https://www.cliki.net/ verwiesen. Die Quelle zu
Common Lisp schlechthin.
Empfohlene Umgebung:
SBCL-Compiler +
emacs +
slime +
Quicklisp
Wenn Du in der Java-Welt zuhause bist, kann aber auch
Clojure interessant sein. Dadurch hast Du zudem Zugriff auf unzählige Bibliotheken (mehr als in den beiden anderen großen Lisp-Varianten). Außerdem hat es seine Stärken in der Entwicklung von threaded Programmen.
Die Homepage
https://clojure.org/ ist sicher ein guter Ausgangspunkt. Ansonsten gibts als IDEs auch Eclipse-Plugins (
Clockwise) sowieso von irgendein der Jetbrains-IDEs wirds auch schon länger unterstützt.