Est-ce que LISP est toujours pratiqué / utilisé dans le monde actuel ou est-ce un langage hérité
Oui, mais vous devez savoir où regarder. Les personnes qui utilisent LISP n'ont pas tendance à crier trop fort à ce sujet, mais il existe quelques exemples de startups très en vue l'utilisant à bon escient au cours des 20 dernières années. Il est également très populaire auprès des petites entreprises en Europe.
Quel est le dialecte le plus utilisé?
C'est une question valable, mais ce n'est pas facile à répondre. Il se peut également que la réponse ne soit pas particulièrement utile: de nombreuses implémentations ayant un objectif spécifique, elles sont mieux choisies si elles s’adaptent à votre problème particulier plutôt que sur la base de la portée de son utilisation. Au lieu de cela, je vais vous parler un peu de vos options et vous pourrez décider vous-même.
LISP est une famille de langues et chacune de ces langues possède une famille de dialectes et de mises en œuvre. En gros, les dialectes se divisent en deux camps "LISP" et "Schemes".
LISP: Jusqu'à récemment, le LISP commun était roi. C'était une tentative d'unifier tous les LISP disparates et, sans être méchant, c'était le "C ++" du LISP. C'est-à-dire que c'était une langue ÉNORME . Il y avait tout. Clojure est apparu au cours des dernières années. Clojure est un LISP qui s'exécute sur la machine virtuelle Java et tente de s'enraciner dans une philosophie de programmation fonctionnelle. Traditionnellement, les autres LISP étaient strictement multi-paradigmes. Clojure est intéressant car il tire à la fois le meilleur et le pire de LISP et de la JVM. Il y a encore beaucoup de verbosité dans les langages basés sur Java et ils ont été assez simples et faciles avec la syntaxe, ce qui a beaucoup de boutons et de boutons pour différentes choses, mais ils en ont vraimentidées intéressantes sur les types de données, en particulier certaines des manières pratiques qu’elles ont trouvées d’appliquer des idées issues de la programmation fonctionnelle.
Schémas: Les schémas sont un sous-ensemble strict de LISP. Scheme a été inventé par Steele et Sussman et, au début de sa vie, il était connu pour son utilisation dans le cours de conférence MIT Computing 101. Le schéma est défini dans le "Rapport révisé sur le schéma de langage algorithmique (RnRS)". Oui: ils ont une blague de maths dedans. Scheme est un langage standardisé, contrairement aux autres LISP. Cela aide grandement à la portabilité entre les mises en œuvre, mais ce n'est pas une solution miracle. Les efforts de normalisation ont eu tendance à être conservateurs et les innovations dans les implémentations, en particulier autour d'éléments tels que les modules, ont eu tendance à être disparates. Il existe également une série de SRFI (Scheme Requests For Implementation) similaires au processus RFC de l'IETF. Les gens l'utilisent pour normaliser de petites choses au besoin.
Les schémas diffèrent des LISP par le fait qu’ils ont un ensemble d’exigences rigoureuses qu’ils doivent satisfaire, l’une d’elles étant «l’optimisation des appels en aval» qui contribue à rendre la récursivité efficace. Par conséquent, les styles de programmation récursifs sont beaucoup plus populaires dans Scheme que dans LISP. Scheme est, aussi sans être méchant, comme le "C" de LISP. C’est-à-dire qu’il s’agit d’une petite langue et que vous êtes censé pouvoir tout garder en tête en même temps.
Il existe actuellement deux familles de régimes: celles basées sur la 5ème version (R5RS) et celles basées sur la 6ème version (R6RS). La complexité de R6RS était bien supérieure à celle de ses prédécesseurs et de nombreuses implémentations de R5RS ont donc choisi de la ignorer, en espérant que R7RS sera plus similaire à R5RS que R6RS. Le processus de normalisation de R7RS est en cours et a tenté d’intégrer à la fois les désirs des développeurs de R5RS et ceux du peuple R6RS en normalisant une langue de base réduite dans leur premier groupe de travail, puis en chargeant un deuxième groupe de travail de normaliser les fonctionnalités plus larges. Cela permettra au langage d'avoir des implémentations efficaces et utiles à la fois sur le matériel embarqué minuscule et sur des machines plus performantes.
Maintenant je serai plus précis:
PicoLisp est un LISP vraiment très cool. C'est minuscule! Son auteur l’a écrit pour lui-même et, si je comprends bien, il en vit depuis les années 1980. Si jamais vous avez l'occasion d'assister à une conférence de lui, alors vous devriez le faire: il est vraiment intéressant et connaît vraiment son contenu et vous n'obtiendrez même pas le moindre reniflement de quoi que ce soit qui soit ordinaire ou ennuyeux.
Je ne connais pas bien les implémentations de Common Lisp, je ne les commenterai donc pas davantage.
Guile est le schéma officiel de GNU.
Racket est un programme R6RS, mais récemment, il semble avoir élargi le réseau et tente "de servir de plate-forme pour la création, la conception et la mise en œuvre de langages".
Le poulet se veut un programme pratique. Il est basé sur R5RS et compile jusqu’à C. Cela s’avère être un avantage vraiment très important car il est absolument trivial d’utiliser les bibliothèques C existantes. Par conséquent, Chicken est probablement le schéma le plus utile pour remplacer Perl, Python, Ruby, etc., en tant que langage de script quotidien. Plusieurs personnes l'utilisent exclusivement pour tous leurs besoins depuis plusieurs années. Il a un REPL interactif ainsi qu'un compilateur. La communauté (sur la liste de diffusion et sur IRC) est compétente, amicale et serviable.
Recherchez une implémentation avec beaucoup de modules: cela montre que c'est largement utilisable et signifie qu'il y a probablement quelque chose qui aide à la tâche à accomplir.
Recherchez une implémentation avec un compilateur ou, à tout le moins, quelque chose qui ne soit pas strictement basé sur IDE ou REPL. Un grand nombre d'implémentations conçues pour l'enseignement sont très difficiles à utiliser pour les scripts à usage général.
Je recommanderais le poulet comme c'est ce que j'utilise. Je l'ai utilisé dans mes projets personnels et je l'utilise (et je l'utilise actuellement) de manière professionnelle.
Je ne veux pas investir d'effort excessif dans quelque chose si c'est totalement obsolète - je l'apprendrais encore s'il était professionnellement "mort", mais seulement dans une perspective académique ...
Scheme n'est pas professionnellement mort, mais vous devrez peut-être déployer des efforts considérables pour l'utiliser dans ce contexte. Quelque chose comme Chicken est bien plus qu’un travail académique et il peut facilement couvrir la quasi-totalité des bases des langues de haut niveau que vous utilisez actuellement.