La communauté Lisp est fragmentée, mais tout le reste l'est aussi.
-
Pourquoi y a-t-il tant de distributions Linux ?
-
Pourquoi y a-t-il tant de variantes de BSD ? OpenBSD, NetBSD, FreeBSD, ... même Mac OS X.
-
Pourquoi y a-t-il tant de langages de script ? Ruby, Python, Rebol, TCL, PHP, et d'innombrables autres.
-
Pourquoi y a-t-il tant de shells Unix ? sh, csh, bash, ksh, ... ?
-
Pourquoi y a-t-il autant d'implémentations de Logo (>100), Basic (>100), C (innombrables), ...
-
Pourquoi y a-t-il autant de variantes de Ruby ? Ruby MRI, JRuby, YARV, MacRuby, HotRuby ?
-
Python peut avoir un site principal, mais il existe plusieurs implémentations légèrement différentes : CPython, IronPython, Jython, Python pour S60, PyPy, Unladen Swallow, CL-Python, ...
-
Pourquoi existe-t-il le C (Clang, GCC, MSVC, Turbo C, Watcom C, ...), le C++, le C#, le Cilk, l'Objective-C, le D, le BCPL, ... ? ?
Laissez certains d'entre eux atteindre la cinquantaine et voyez combien de dialectes et d'implémentations il y a alors.
Je suppose que Lisp est diversifié, parce que chaque langage est diversifié ou devient diversifié. Certains commencent avec une seule implémentation (Lisp de McCarthy) et après cinquante ans, vous avez un zoo. Common Lisp a même commencé avec de multiples implémentations (pour différents types de machines, systèmes d'exploitation, avec différentes technologies de compilation, ...).
De nos jours, Lisp est une famille de langages et non une seule langue. Il n'y a même pas de consensus sur les langues qui appartiennent ou non à cette famille. Il peut y avoir quelques critères à vérifier (expressions s, fonctions, listes, ...), mais tous les dialectes Lisp ne supportent pas tous ces critères. Les concepteurs du langage ont expérimenté avec différentes caractéristiques et nous avons obtenu de nombreux langages, plus ou moins semblables à Lisp.
Si vous regardez Common Lisp, il y a environ trois ou quatre vendeurs commerciaux actifs. Essayez de les rassembler derrière une seule offre ! Cela ne marchera pas. Ensuite, vous avez un tas d'implémentations open source actives avec des objectifs différents : l'une compile en C, une autre est écrite en C, l'une essaie d'avoir un compilateur rapide et optimisé, une autre essaie d'avoir un terrain intermédiaire avec la compilation native, une autre vise la JVM ... et ainsi de suite. Essayez de dire aux mainteneurs d'abandonner leurs implémentations !
Scheme compte environ 100 implémentations. Beaucoup sont mortes, ou presque. Au moins dix à vingt sont actives. Certains sont des projets de loisir. Certains sont des projets universitaires, d'autres des projets d'entreprises. Le site les utilisateurs ont des besoins divers . L'un a besoin d'une GC en temps réel pour un jeu, un autre a besoin d'une intégration en C, un autre n'a besoin que de constructions simples à des fins éducatives, etc. Comment dire aux développeurs d'éviter de pirater leur implémentation.
Il y a ensuite ceux qui n'aiment pas Commmon Lisp (trop gros, trop vieux, pas assez fonctionnel, pas assez orienté objet, trop rapide, pas assez rapide, ...). Certains n'aiment pas Scheme (trop académique, trop petit, ne s'adapte pas, trop fonctionnel, pas assez fonctionnel, pas de modules, les mauvais modules, pas les bonnes macros, ...).
Puis quelqu'un a besoin d'un Lisp combiné à Objective-C, alors vous avez Nu. Quelqu'un pirate un Lisp pour .net. Puis vous obtenez un Lisp avec de la concurrence et des idées nouvelles, alors vous avez Clojure.
C'est l'évolution de la langue au travail . C'est comme l'explosion cambrienne (lorsque de nombreux nouveaux animaux sont apparus). Certains mourront, d'autres continueront à vivre, d'autres encore apparaîtront. À un moment donné, certains dialectes apparaissent et reprennent l'état de l'art (Scheme pour tout ce qui concerne la programmation fonctionnelle en Lisp dans les années 70/80 et Common Lisp pour tout ce qui ressemble à MacLisp dans les années 80) - ce qui entraîne la disparition de certains dialectes pour la plupart (à savoir Standard Lisp, InterLisp et autres).
Common Lisp est l'alligator des dialectes Lisp. C'est un très vieux modèle (cent millions d'années) avec peu de changements, il a l'air un peu effrayant, et de temps en temps il mange quelques jeunes...
Si vous voulez en savoir plus, L'évolution de Lisp (et le correspondant à diapositives) est un très bon début !
27 votes
C'est parce que quand ils parlent, ils ne comprennent pas ce qu'ils se disent. ;)
2 votes
Je ne pense pas que ce soit dû à l'âge. C est aussi vieux, mais il a une norme.
28 votes
C est loin d'être aussi vieux ! Lisp a 50 ans et C a presque 40 ans. Ces 10 premières années ont été difficiles !
4 votes
Le C a une norme et de nombreuses variantes qui développent des extensions de celle-ci. Ensuite, il y a C++, C#, Objective C, C--, BitC, D, ...
3 votes
LISP a également des normes. Il existe deux normes principales (Scheme et CL).
3 votes
Cette question devrait être marquée comme "wiki communautaire", car il s'agit d'une question sur la culture de la programmation, plutôt que d'une question sur la programmation.
1 votes
Pascal, Perl, Java, C#, Python, Ruby, C et C++ sont tous Dialectes d'Algol . En regardant cette liste, je dirais que c'est plus fragmenté que Lisp.
0 votes
Java, Python et Ruby sont en gros langages à implémentation unique . Ils ne se fragmentent pas pour la même raison que, par exemple, le terminal Gnome ne se fragmente pas. De même, Python est de facto une fragmentation de Ruby. Mais comme ils ne partagent pas beaucoup de syntaxe, ils sont considérés comme des choses différentes. En fait, ce sont tous deux des dialectes Lisp distants ! Python et Ruby participent donc à la fragmentation de Lisp. De plus, Java fait partie de la fragmentation du C. Il y a beaucoup de compilateurs C avec leurs propres dialectes. Ensuite, il y a C++, ObjC, ... ... et Java en est aussi une ramification évidente.
0 votes
@Kaz - Python a été créé des années avant Ruby. En fait, les deux sont des ramifications de Perl, bien qu'il y ait aussi une certaine influence des lisp.