Quelles sont les différences entre Clojure, Scheme / Racket et Common Lisp?

Je sais que ce sont des dialectes de la même famille de langage appelés lisp, mais quelles sont exactement les différences? Pourriez-vous, si possible, donner un aperçu des sujets tels que la syntaxe, les caractéristiques, les fonctionnalités et les ressources.

Les personnes ci-dessus ont manqué quelques choses

  1. 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. Scheme a des vecteurs, je crois

  2. Common Lisp a des macros de lecture, qui vous permettent d’utiliser de nouveaux crochets (comme le fait Racket, un descendant de Scheme).

  3. Scheme et Clojure ont des macros hygiéniques, par opposition aux non hygiéniques de Lisp commun

  4. Toutes les langues sont modernes ou ont de vastes projets de rénovation. Common Lisp a obtenu de nombreuses bibliothèques au cours des cinq dernières années (grâce principalement à Quicklisp), Scheme a quelques implémentations modernes (Racket, Chicken, Chez Scheme, etc.) et Clojure a été créé relativement récemment

  5. Common Lisp a un système OO intégré, bien qu’il soit assez différent des autres systèmes OO que vous avez peut-être utilisés. Notamment, il n’est pas appliqué – vous n’avez pas besoin d’écrire du code OO.

  6. Les langues 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 est devenu plus tard utilisé pour la pédagogie. Common Lisp a été conçu pour unifier les innombrables dialectes Lisp. Clojure a été conçu pour la concurrence. En conséquence, Scheme a la réputation d’être minimaliste et élégant, Common Lisp étant puissant et paradigme-agnostique (fonctionnel, OO, peu importe) et Clojure de favoriser la functional programming.

N’oubliez pas les différences entre 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.

Lisp commun est Lisp-2:
La fonction et les variables ont des espaces de noms différents (en fait, CL possède de nombreux espaces de noms).

Gimp est écrit dans Scheme 🙂

En fait, la plupart des logiciels que certaines personnes pensent pouvoir écrire en C ++ ont probablement été faits sous le parapluie Lisp, il est difficile de distinguer les pommes dorées du groupe. Le fait que C ++ ne soit pas toujours populaire, il semble seulement être populaire aujourd’hui en raison d’une histoire de mises à jour. Pour la seconde moitié du siècle, C ++ n’a même pas utilisé le multithreading, c’est là que Python est aujourd’hui un abri de code de bogue non testé et inutile. Un peu plus vite et maintenant nous assistons à une augmentation de la functional programming, plus comme s’adapter ou mourir. Je pense que Java a raison en ce qui concerne la partie adaptable.

Scheme a été conçu pour simplifier le langage Lisp, qui était sa seule intention, sauf qu’il n’a jamais vraiment été pris en compte. Je pense que Clojure fait quelque chose de similaire pour simplifier Scheme pour la JVM rien de plus. Tout comme tous les autres langages JVM, ils ne font que gonfler l’expérience utilisateur, mais ils simplifient l’écriture de textes standard dans Java.