Lisp est un langage volumineux et complexe avec un runtime volumineux et complexe pour le prendre en charge. Pour cette raison, Lisp est le mieux adapté aux problèmes volumineux et complexes.
Maintenant, un problème complexe n'est pas la même chose qu'un problème compliqué . Un problème complexe est un problème avec beaucoup de petits détails, mais ce n'est pas difficile. La rédaction d'un système de réservation pour les compagnies aériennes est une entreprise complexe, mais avec suffisamment d'argent et de programmeurs, ce n'est pas difficile. Obtenez la différence?
Un problème compliqué est un problème alambiqué, un problème où la division traditionnelle pour la conquête ne fonctionne pas. Contrôler un robot, ou travailler avec des données qui ne sont pas tabulaires (langues par exemple), ou des situations très dynamiques.
Lisp est vraiment bien adapté aux problèmes où la solution doit être extensible; l'exemple classique est l'éditeur de texte emacs. Il est entièrement programmable, et donc un environnement de programmation à part entière.
Dans son célèbre livre PAIP , Norvig dit que Lisp est idéal pour la programmation exploratoire. C'est-à-dire programmer une solution à un problème qui n'est pas entièrement compris (par opposition à un système de réservation en ligne). En d'autres termes: des problèmes compliqués.
De plus, apprendre Lisp vous rappellera quelque chose de fondamental qui a été oublié: la différence entre Von Neumann et Turing. Comme nous le savons, le modèle de calcul de Turing est un modèle théorique intéressant, mais inutile comme modèle pour la conception d'ordinateurs. Von Neumann, pour sa part, a conçu un modèle de la façon dont les ordinateurs et le calcul devaient s'exécuter: le modèle de Von Neumann. Le point central du modèle Von Neumann est que vous n'avez qu'une seule mémoire et que vous y stockez à la fois votre code et vos données. Notez attentivement qu'un programme Java (ou C #, ou ce que vous voulez) est une manifestation du modèle de Turing. Vous définissez votre programme concrètement, une fois pour toutes. Ensuite, vous espérez pouvoir gérer toutes les données qui y sont jetées.
Lisp maintient le modèle de Von Neuman; il n'y a pas de frontière nette et prédéterminée entre le code et les données. La programmation en Lisp ouvre votre esprit à la puissance du modèle Von Neumann. La programmation en Lisp vous fait voir les anciens concepts sous un nouveau jour.
Enfin, étant interactif, vous apprendrez à interagir avec vos programmes au fur et à mesure que vous les développez (par opposition à la compilation et à l'exécution). Cela change également la façon dont vous programmez et la façon dont vous visualisez la programmation.
Avec cette intro, je peux enfin offrir une réponse à votre question: trouveras-tu des endroits où cela surpasse les langues «traditionnelles»?
Si vous êtes un programmeur avancé, vous avez besoin d'outils avancés. Et il n'y a pas d'outil plus avancé que Lisp. Ou, en d'autres termes: la réponse est oui si vos problèmes sont difficiles. Non autrement.