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.
120
Réponses:
Ils ont tous beaucoup en commun:
(function-name arg1 arg2)
Caractéristiques distinctives de Common Lisp:
Caractéristiques distinctives de Clojure:
[]
et cartes{}
utilisés en standard en plus des listes standard()
- en plus de l'utilité générale des vecteurs et des cartes, certains pensent qu'il s'agit d'une innovation qui rend généralement plus lisibleCaractéristiques distinctives du schéma:
la source
Les personnes ci-dessus ont raté quelques choses
Common Lisp 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
Common Lisp a des macros de lecture, qui vous permettent d'utiliser de nouveaux crochets (comme le fait Racket, un descendant de Scheme).
Scheme et Clojure ont des macros hygiéniques, par opposition aux macros non hygiéniques de Common Lisp
Toutes les langues sont soit modernes, soit ont de vastes projets de rénovation. Common Lisp 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
Common Lisp a un système OO intégré, bien qu'il soit assez différent des autres systèmes OO que vous pourriez avoir utilisés. Il est notamment pas appliquée - vous n'avez à écrire du code OO.
Les langages ont des philosophies de conception quelque peu différentes. Scheme a été conçu comme un dialecte minimal pour comprendre le modèle d'acteur; il a ensuite été utilisé pour la pédagogie. Common Lisp a été conçu pour unifier la myriade de dialectes Lisp qui ont vu le jour. Clojure a été conçu pour la concurrence. 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.
la source
N'oubliez pas les différences Lisp-1 et Lisp-2.
Scheme et Clojure sont Lisp-1:
cela signifie que les noms de variables et de fonctions résident dans le même espace de noms.
Common Lisp est Lisp-2: la
fonction et les variables ont des espaces de noms différents (en fait, CL a de nombreux espaces de noms).
la source
Gimp est écrit en Scheme :)
En fait, certains logiciels pensent que certains logiciels pourraient être écrits en C ++ a probablement été fait sous l'égide de Lisp, il est difficile de choisir les pommes d'or du groupe. Le fait est que le C ++ n'a pas toujours été populaire, il ne semble l'être qu'aujourd'hui en raison de l'historique des mises à jour. Pendant la moitié du siècle, le C ++ n'a même pas utilisé le multithreading, c'est là que Python est aujourd'hui un cloaque de code buggy glue inutile et non testé. Avancez un peu plus vite et maintenant nous assistons à une augmentation de la programmation fonctionnelle, c'est plus comme adapter ou mourir. Je pense que Java a raison en ce qui concerne la partie adaptation.
Scheme a été conçu pour simplifier le langage Lisp, c'était sa seule intention sauf qu'il n'a jamais vraiment pris de l'ampleur. Je pense que Clojure fait quelque chose de similaire, c'est-à-dire de simplifier Scheme pour la JVM, rien de plus. C'est comme tous les autres langages JVM juste là pour gonfler l'expérience utilisateur, uniquement pour simplifier l'écriture standard dans Java Land.
la source