Je sais que ce sont des dialectes de la même famille de langues appelée LISP, mais quelles sont exactement les différences? Pourriez-vous donner un aperçu, si possible, couvrant des sujets tels que la syntaxe, les caractéristiques, les fonctionnalités et les ressources.
Ils ont tous beaucoup en commun:
(function-name arg1 arg2)
Caractéristiques distinctives communes de LISP:
Caractéristiques distinctives de Clojure:
[]
et cartes {}
utilisé en standard en plus des listes standard ()
- en plus de l'utilité générale des vecteurs et des cartes, certains pensent que c'est une innovation qui rend généralement plus lisibleCaractéristiques distinctives du régime:
Les gens ci-dessus ont raté quelques choses
LISP commun a également des vecteurs et des tables de hachage. La différence est que Common LISP utilise # () pour les vecteurs et aucune syntaxe pour les tables de hachage. Le schéma a des vecteurs, je crois
LISP commun a des macros de lecture, qui vous permettent d'utiliser de nouveaux supports (tout comme Racket, un descendant de Scheme).
Scheme et Clojure ont des macros hygiéniques, par opposition à celles non hygiéniques de LISP commun
Toutes les langues sont modernes ou ont de vastes projets de rénovation. LISP commun a obtenu de vastes bibliothèques au cours des cinq dernières années (grâce principalement à Quicklisp), Scheme a des implémentations modernes (Racket, Chicken, Chez Scheme, etc.), et Clojure a été créé relativement récemment
LISP commun a un système OO intégré, bien qu'il soit assez différent des autres systèmes OO que vous auriez pu utiliser. Notamment, il n'est pas appliqué - vous ne pas avoir pour écrire OO code.
Les langues ont des philosophies de conception quelque peu différentes. Le schéma a été conçu comme un dialecte minimal pour comprendre le modèle d'acteur; il est devenu plus tard utilisé pour la pédagogie. LISP commun a été conçu pour unifier la myriade de dialectes LISP qui avaient vu le jour. Clojure a été conçu pour la simultanéité. En conséquence, Scheme a la réputation d'être minimal et élégant, Common LISP d'être puissant et indépendant du paradigme (fonctionnel, OO, peu importe), et Clojure de favoriser la programmation fonctionnelle.
N'oubliez pas les différences LISP-1 et LISP-2.
Le schéma et Clojure sont LISP-1:
Cela signifie que les noms de variables et de fonctions résident dans le même espace de noms.
LISP commun est LISP-2:
La fonction et les variables ont des espaces de noms différents (en fait, CL a de nombreux espaces de noms).