Wird LISP in der heutigen Welt noch praktiziert / verwendet oder ist es eine Legacy-Sprache?
Ja, aber Sie müssen wissen, wo Sie suchen müssen. Leute, die LISP verwenden, neigen nicht dazu, zu laut darüber zu schreien, aber es gibt eine Handvoll Beispiele für einige bekannte Startups, die es in den letzten 20 Jahren mit großer Wirkung eingesetzt haben. Es ist auch bei kleinen Unternehmen in Europa sehr beliebt.
Was ist der am häufigsten verwendete Dialekt?
Dies ist eine gültige Frage, die jedoch nicht einfach zu beantworten ist. Die Beantwortung dieser Frage ist möglicherweise auch nicht besonders hilfreich: Viele Implementierungen haben einen bestimmten Schwerpunkt. Daher sollten Sie sie am besten auswählen, wenn sie zu Ihrem speziellen Problem passen, anstatt auf der Grundlage, wie häufig sie anderweitig verwendet werden. Stattdessen erzähle ich Ihnen ein wenig über Ihre Möglichkeiten und Sie können selbst entscheiden.
LISP ist eine Familie von Sprachen und jede dieser Sprachen hat eine Familie von Dialekten und Implementierungen. Im Großen und Ganzen fallen Dialekte in zwei Lager: "LISPs" und "Schemes".
LISPs: Bis vor relativ kurzer Zeit war Common LISP König. Es war ein Versuch, alle unterschiedlichen LISPs zu vereinheitlichen, und ohne unfreundlich zu sein, war es das "C ++" von LISP. Das heißt, es war eine RIESIGE Sprache. Es hatte alles. In den letzten Jahren ist Clojure erschienen. Clojure ist ein LISP, der auf der Java Virtual Machine ausgeführt wird und versucht, sich in einer funktionalen Programmierphilosophie zu verankern. Traditionell waren andere LISPs streng multiparadigmatisch. Clojure ist interessant, weil es sowohl das Beste als auch das Schlechteste von LISP und der JVM liefert. Es gibt immer noch einen Großteil der Ausführlichkeit von Java-basierten Sprachen, und die Syntax war ziemlich frei und einfach, sodass es viele Knöpfe und Schaltflächen für verschiedene Dinge gibt, aber einige davon sind wirklich vorhandeninteressante Ideen rund um Datentypen, insbesondere einige der praktischen Möglichkeiten, um Ideen aus der funktionalen Programmierung anzuwenden.
Schemata: Schemata sind eine strikte Untermenge von LISPs. Das Schema wurde von Steele und Sussman erfunden und war in jungen Jahren für den MIT Computing 101 Lecture Course bekannt. Das Schema ist im "Revised ^ n Report on the Algorithmic Language Scheme (RnRS)" definiert. Ja, sie haben einen Mathe-Witz drin. Schema ist eine standardisierte Sprache in einer Weise, die andere LISPs nicht sind. Dies trägt erheblich zur Portabilität zwischen Implementierungen bei, ist jedoch keine Wunderwaffe. Die Standardisierungsbemühungen waren eher konservativ, und Innovationen bei den Implementierungen, insbesondere in Bezug auf Module, waren eher unterschiedlich. Es gibt auch eine Reihe von SRFIs (Scheme Requests For Implementation), die dem RFC-Prozess der IETF ähneln. Die Leute verwenden es, um kleine Dinge nach Bedarf zu standardisieren.
Schemata unterscheiden sich von LISPs darin, dass sie eine Reihe von strengen Anforderungen erfüllen müssen. Eine davon ist die "Tail-Call-Optimierung", mit deren Hilfe die Rekursion effizienter wird. Daher sind rekursive Programmierstile in Scheme viel beliebter als in LISP. Schema ist, auch ohne unfreundlich zu sein, wie das "C" von LISP. Das heißt, es ist eine kleine Sprache und Sie sollten in der Lage sein, alles auf einmal im Kopf zu behalten.
Derzeit gibt es zwei Systemfamilien: die auf der 5. Version (R5RS) und die auf der 6. Version (R6RS) basierenden. Die Komplexität von R6RS war weitaus größer als die seiner Vorgänger, und so haben sich viele R5RS-Implementierungen dafür entschieden, es zu überspringen, in der Hoffnung, dass R7RS R5RS ähnlicher sein wird als R6RS. Der R7RS-Standardisierungsprozess ist derzeit im Gange und hat versucht, sowohl die Wünsche der R5RS-Implementierer als auch die der R6RS-Leute zu berücksichtigen, indem eine kleine Basissprache in ihrer ersten Arbeitsgruppe standardisiert und dann eine zweite Arbeitsgruppe beauftragt wurde, die größeren Funktionen zu standardisieren. Auf diese Weise kann die Sprache sowohl auf winziger eingebetteter Hardware als auch auf leistungsfähigeren Computern effizient und nützlich implementiert werden.
Jetzt werde ich genauer sein:
PicoLisp ist eine wirklich coole LISP. Es ist winzig! Der Autor hat es für sich selbst geschrieben und, so wie ich es verstehe, lebt er seit den 1980er Jahren davon. Wenn Sie jemals die Gelegenheit haben, an einem Vortrag von ihm teilzunehmen, sollten Sie es tun: Er ist wirklich interessant und kennt sich mit seinen Dingen aus, und Sie werden nicht einmal den geringsten Hauch von Mainstream oder Langeweile bekommen.
Ich bin nicht mit Common-Lisp-Implementierungen vertraut, daher werde ich sie nicht weiter kommentieren.
Guile ist das offizielle GNU-Schema.
Racket ist ein R6RS-Schema, aber in letzter Zeit scheint es das Netz erweitert zu haben und versucht, "als Plattform für die Erstellung, das Design und die Implementierung von Sprachen zu dienen".
Huhn soll ein praktisches Schema sein. Es basiert auf R5RS und wird bis C kompiliert. Dies stellt einen wirklich, wirklich wichtigen Vorteil dar, da es absolut trivial ist, vorhandene C-Bibliotheken zu verwenden. Daher ist Chicken wahrscheinlich das nützlichste Schema, um Perl, Python, Ruby usw. als alltägliche Skriptsprache zu ersetzen. Es gibt mehrere Leute, die es seit mehreren Jahren exklusiv für alle ihre Bedürfnisse verwenden. Es hat eine interaktive REPL sowie einen Compiler. Die Community (sowohl auf der Mailingliste als auch im IRC) ist kompetent, freundlich und hilfsbereit.
Suchen Sie nach einer Implementierung mit vielen Modulen: Dies zeigt, dass sie allgemein einsetzbar ist und dass wahrscheinlich etwas dabei hilft, die Aufgabe zu lösen.
Suchen Sie nach einer Implementierung mit einem Compiler oder zumindest etwas, das nicht ausschließlich auf IDE oder REPL basiert. Viele der Implementierungen, die für den Unterricht entwickelt wurden, sind für allgemeine Skripterstellung sehr schwierig zu verwenden.
Ich würde Chicken empfehlen, da ich es verwende. Ich habe es in meinen persönlichen Projekten verwendet und ich habe es professionell verwendet (und benutze es derzeit).
Ich möchte nicht übermäßig viel Aufwand in etwas investieren, wenn es völlig veraltet ist - ich würde es immer noch lernen, wenn es professionell "tot" wäre, aber nur mit einer akademischen Perspektive ...
Schema ist nicht beruflich tot, aber Sie müssen möglicherweise einige Anstrengungen unternehmen, um es in diesem Kontext zu verwenden. So etwas wie Hühnchen ist weit mehr als ein akademisches Unterfangen. Es kann fast alle Grundlagen von Hochsprachen abdecken, die Sie derzeit verwenden.