Pourquoi Lisp ?
Avant toute chose, Lisp est un dialecte, c'est-à-dire une famille de langages de programmation, plutôt qu'un seul. Ainsi, il existe de nombreux Lisps différents, et en fait il est même très simple de construire le tien pour tes besoins (tu peux d'ailleurs apprendre sur Symfunc, même si tu es un débutant qui ne sait pas programmer !).
Ressources connues
- Beating the averages, par Paul Graham. (archive)
- What did Alan Kay mean by, "Lisp is the greatest single programming language ever designed"?, par Alan Kay. (archive)
Arguments pour selon Symfunc
- Langage simple, élégant.
- Excellentes performances des différentes implémentations.
- La grande liberté et la créativité qu'il permet.
- Les S-expressions permettent d'écrire simplement des macros.
- Sur-ensemble strict des autres langages de programmation: il est possible d'évaluer un code dans un autre langage tel que Python ou PHP, mais la présentation textuelle plutôt qu'en AST ne permet pas de le gérer facilement et il est obfusqué. Il n'est pas possible sans outils supplémentaires d'accéder facilement au compilateur pour un langage qui n'est pas comme Lisp.
- Lisp a une correspondance 1-1 avec les idées si l'on code correctement (style Symfunc), si bien qu'il n'y a pas besoin de connaître de patron de conception: i.e. plutôt que coder le problème à résoudre en respectant les règles du langage, le langage s'adapte au problème à résoudre.
- Possibilité de modifier un programme à chaud sans le redémarrer (zero downtime).
- Possibilité d'inspecter et générer du code source Lisp en Lisp facilement, ce qui permet d'automatiser une grande partie de la rédaction du code.
Arguments habituels contre et notre réponse
Nous les avons tellement entendus répétés comme des mantras que c'en est devenu comique :
- Les parenthèses : C'est vraiment un critère, sérieusement...?
- Si Lisp était si bien, tout le monde l'utiliserait : Non, cf. l'argument d'Alan Kay sur "l'optimisation cosmique". Il y a plein de bonnes idées qui ont mis des siècles à être adoptées.
- Lisp n'est pas typé : En Lisp tu peux tout faire, même typer. Ce n'est pas forcément trivial selon le dialecte, mais cela ne gêne pas du tout un cultivateur. Il y a aussi des fonctionnalités de Lisp qui ne peuvent pas être typables (en tout cas il n'existe à notre connaissance pas de technique universellement admise), comme par exemple le résultat d'une évaluation de code).
- Personne ne code en Lisp : Il y a déjà des contributeurs Symfunc.
- Les meilleurs développeurs ou entreprises n'utilisent pas Lisp : En es-tu sûr ?
- Avec Lisp il est difficile de trouver un emploi : Ça tombe bien, ce n'est pas le but de Symfunc. De plus, les entreprises veulent pouvoir remplacer les développeurs, comme des pièces interchangeables. Puisque Lisp permet d'adapter le langage au problème plutôt que coder le problème dans le langage, alors il est nécessaire que la construction soit correctement documentée; puisque cela revient en quelque sorte pour un nouveau développeur à apprendre un nouveau langage, plutôt que coder d'une seule manière standardisée à l'instar du "Zen Python" par exemple. Les entreprises préfèrent pouvoir remplacer les employés facilement quitte à ce que les programmes soient verbeux car ils sont des assemblages de bouts réutilisables; plutôt qu'un langage dédié et naturel qui permet d'exprimer clairement les idées car elles ont des objectifs court-termistes dus à des contraintes de rentabilité immédiate.
- Il n'y a pas d'écosystème Lisp : Sur Symfunc nous en avons fabriqué un.
- Lisp est trop dur à apprendre par rapport à un autre langage : Non, nous avons essayé avec plusieurs personnes sur Symfunc.