Souhaitez-vous utiliser un dialecte LISP pour un programme de production?
Absolument
Quel genre de programme et pourquoi?
Lisp est un langage dynamique à usage général. Aujourd'hui, il a les mêmes difficultés de base que les autres langages dynamiques à usage général qui ne sont pas publiés par Microsoft: threads natifs, intégration GUI, fonctionnement déterministe du GC et petites empreintes de mémoire.
Les threads natifs sont réalisés par LispWorks et SBCL, je crois. Peut-être d'autres? Je n'ai pas enquêté complètement.
LispWorks et Franz Common Lisp - produits commerciaux - s'intègrent dans l'interface graphique à des degrés de réussite. N'ayant pas le $$ pour les acheter, je ne sais pas comment ça marche. Je pense qu'ils fonctionnent assez bien ...
Une opération GC déterministe peut être effectuée (elle est effectuée en Java avec un certain niveau de succès), mais je ne sais pas si les systèmes Lisp existants (maintenus) ont du code pour le faire.
Je crois que la petite empreinte mémoire est atteinte par certains Lisps.
Mon point de base est que Common Lisp est techniquement prêt à fabriquer des systèmes de production. Et c'est le cas .
La grande majorité des développeurs sont flippés par (en choisir un) les langages dynamiques, les macros, les parenthèses, le manque d'IDE préféré, la mauvaise expérience au collège, peu d'emplois, puis ne l'utilisent pas.
Personnellement, je sauterais sur la construction d'un système de production à part entière en Common Lisp à partir de zéro dans un environnement d'équipe.
edit: Je n'ai pas vraiment répondu pourquoi Lisp par opposition aux autres langues.
Dans mon expérience Lisp - pas significatif, mais beaucoup plus que «bonjour le monde» - j'ai trouvé que la langue était extrêmement utilisable après les premières douleurs de «Argh new language». La majorité de la langue s'assemble de manière très régulière et assez évidente, je ne trouve pas vraiment d'autres langues comme celle-ci. Cela tient en partie à la fusion d'expressions et d'instructions. Une partie de cela est le type de données de la liste principale. Une partie de cela est le système de type. Une partie de cela est le système macro. Ne vous méprenez pas, cependant, il y a des points douloureux. Mais ils ne me frappent pas autant au visage que les points douloureux des autres langues.
Un exemple simpliste est la routine de longueur de liste de Python. L'approche Python consiste à appeler len(mysequence)
. Mais, si on y réfléchit, une longueur est une propriété d'une séquence. C'est donc mysequence.len()
une idée plus appropriée. Lisp supprime essentiellement cette distinction syntaxique. (length thing)
est à la fois la syntaxe d'appel de fonction et la syntaxe de méthode. Bien sûr, certaines personnes trouvent cela frustrant et veulent la différence syntaxique. Je préfère avoir la régularité.
edit2: J'ai converti la partie de ma thèse MS qui s'exécute sur le bureau en Common Lisp et ça a été un plaisir de travailler jusqu'à présent.