Lisp für Anfänger

  • Ersteller Ersteller Dexter1997
  • Erstellt am Erstellt am
D

Dexter1997

Gast
Hallo Freunde der Sonne!

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. Außerdem gibt es da noch Clojure, mit dem Unterschied, dass Clojure objektorientiert ist und die Java-Bibs nutzen kann.

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?

Welche Variante ist für Anfänger empfehlenswert?
Welchen Interpreter sollte man benutzen?

Ich muss dazusagen, dass ich Linux benutze. Ich glaube auch, dass das eine Frage ist, die wahrscheinlich eher die Veteranen der Computerwelt anspricht. Naja, mal schauen. Ich danke für Antworten!
 
Also Java, Javascript und C++ in einen Topf zu werfen ... da blutet mein Herz und dafür gehörst du gesteinigt!

btt: Interessiert dich lisp im speziellen oder hast du Gefallen an funktionalen Programmiersprachen gefunden? Mit haskell gibt es eine etwas modernere Variante und mit F# sogar eine Variante mit .net, wobei F# viele Aufweichungen des funktionalen Ansatzes ermöglicht und so zwar modern wirkt, aber sich nicht ganz funktional anfühlt.

Wenn du kein konkretes Ziel hast, dann empfehle ich dir, dir mal Vorlesungen und Übungen von Universitäten anzugucken, die Lisp lehren (Beispiel). In den Vorlesungen kriegst du selbst im Selbststudium viel Wissen mit, was du in den zugehörigen Übungen anwenden kannst, ohne dass du dir selbst Aufgaben ausdenken musst. Außerdem wird in den ersten Vorlesungen meist erwähnt, was du für Werkzeuge für einen Einstieg brauchst :)
 
Ich habe sie insofern in einen Topf geworfen, dass sie allesamt syntaxmäßig auf C basieren, und letzenendes alle auf der imperativen Denkweise beruhen. Und das ist ja wohl nicht falsch.

Danke für die Tipps ansonsten.
 
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.
 
Zurück
Oben