Ich weiß, dass es sich um Dialekte derselben Sprachfamilie handelt, die Lisp genannt wird, aber was genau sind die Unterschiede? Könnten Sie nach Möglichkeit einen Überblick über Themen wie Syntax, Merkmale, Funktionen und Ressourcen geben?
120
Antworten:
Sie alle haben viel gemeinsam:
(function-name arg1 arg2)
Gemeinsame Lisp-Besonderheiten:
Clojure Besonderheiten:
[]
und Karten,{}
die zusätzlich zu den Standardlisten als Standard verwendet werden()
- zusätzlich zur allgemeinen Nützlichkeit von Vektoren und Karten glauben einige, dass dies eine Innovation ist, die die Lesbarkeit allgemein verbessertBesonderheiten des Schemas:
quelle
Die Leute oben haben ein paar Dinge verpasst
Common Lisp hat auch Vektoren und Hash-Tabellen. Der Unterschied besteht darin, dass Common Lisp # () für Vektoren und keine Syntax für Hash-Tabellen verwendet. Schema hat Vektoren, glaube ich
Common Lisp verfügt über Lesermakros, mit denen Sie neue Klammern verwenden können (ebenso wie Racket, ein Nachkomme von Scheme).
Scheme und Clojure haben hygienische Makros im Gegensatz zu den unhygienischen von Common Lisp
Alle Sprachen sind entweder modern oder haben umfangreiche Renovierungsprojekte. Common Lisp hat in den letzten fünf Jahren umfangreiche Bibliotheken erhalten (hauptsächlich dank Quicklisp), Scheme hat einige moderne Implementierungen (Racket, Chicken, Chez Scheme usw.) und Clojure wurde vor relativ kurzer Zeit erstellt
Common Lisp verfügt über ein integriertes OO-System, das sich jedoch erheblich von anderen OO-Systemen unterscheidet, die Sie möglicherweise verwendet haben. Bemerkenswert ist , wird es nicht durchgesetzt - Sie müssen nicht haben zu OO - Code zu schreiben.
Die Sprachen haben etwas andere Designphilosophien. Das Schema wurde als minimaler Dialekt zum Verständnis des Akteurmodells konzipiert. es wurde später für die Pädagogik verwendet. Common Lisp wurde entwickelt, um die unzähligen Lisp-Dialekte zu vereinen, die entstanden waren. Clojure wurde für Parallelität entwickelt. Infolgedessen hat Scheme den Ruf, minimal und elegant zu sein, Common Lisp ist mächtig und paradigmenunabhängig (funktional, OO, was auch immer) und Clojure bevorzugt funktionale Programmierung.
quelle
Vergessen Sie nicht die Unterschiede zwischen Lisp-1 und Lisp-2.
Schema und Clojure sind Lisp-1:
Das bedeutet, dass sich sowohl Variablen- als auch Funktionsnamen im selben Namespace befinden.
Common Lisp ist Lisp-2:
Funktion und Variablen haben unterschiedliche Namespaces (tatsächlich hat CL viele Namespaces).
quelle
Gimp ist in Schema geschrieben :)
Tatsächlich wurde eine Menge Software, von der einige Leute glauben, dass sie in C ++ geschrieben ist, wahrscheinlich unter dem Dach von Lisp erstellt. Es ist schwierig, die goldenen Äpfel aus dem Haufen herauszusuchen. Tatsache ist, dass C ++ nicht immer populär war, es scheint nur heute wegen einer Geschichte von Updates populär zu sein. In der zweiten Hälfte des Jahrhunderts nutzte C ++ nicht einmal Multithreading, sondern Python ist heute eine Sackgasse nutzlosen, nicht getesteten Buggy-Klebercodes. Ein wenig schneller und jetzt sehen wir einen Anstieg der funktionalen Programmierung, es ist eher wie anpassen oder sterben. Ich denke, Java hat es richtig gemacht, was den Anpassungsteil betrifft.
Das Schema wurde entwickelt, um die Lisp-Sprache zu vereinfachen. Dies war die einzige Absicht, außer dass sie sich nie wirklich durchsetzte. Ich denke, Clojure macht etwas Ähnliches, um das Schema für die JVM zu vereinfachen, nichts weiter. Es ist genau wie jede andere JVM-Sprache nur dazu da, die Benutzererfahrung zu verbessern, nur um das Schreiben von Boilerplates in Java Land zu vereinfachen.
quelle