"Ca signifie qu'à chaque fois que tu passes à un autre projet en lisp, tu dois réapprendre un nouveau langage"
J'ai l'impression que tu viens du monde des langages descendants d'algol, genre C/C++/Java/C#. Du coup on ne comprend pas "modifier Lisp pour l'adapter au problème" de la même manière.
En Lisp, si tu ajoute une structure de contrôle ou un opérateur (par macro), ou des fonctions, elles auront le même niveau que le reste du langage. Il n'y a pas de distinction comme en Java où tu as le langage, et les bibliothèques.
Imaginons que tu veuilles rajouter le "while" que l'on retrouve dans tous les langages mainstream . En Lisp tu écriras une macro, qui aura par ex. la forme (while (var test-fin) @body). Quelle différence y aura-t'il entre ta macro et le reste des opérateurs prédéfinis comme dotimes, loop, etc? Aucune.
Par contre, le point positif c'est que la syntaxe reste la même. Du coup te familiariser avec un nouveau langage bâti sur Lisp n'est pas plus difficile qu'apprendre à utiliser une API donnée.
Concernant CLOS, d'autres ont répondu. D'ailleurs je te conseille de jeter un oeil au livre de Peter Seibel (gigamonkeys.com/book/) pour des infos sur CLOS. Ca ne te prendras pas beaucoup de temps et tu pourras voir les possibilités offertes par l'approche objet utilisée.
[^] # Re: pourquoi le lisp
Posté par Thomas . En réponse à la dépêche Sortie de SBCL 1.0. Évalué à 2.
J'ai l'impression que tu viens du monde des langages descendants d'algol, genre C/C++/Java/C#. Du coup on ne comprend pas "modifier Lisp pour l'adapter au problème" de la même manière.
En Lisp, si tu ajoute une structure de contrôle ou un opérateur (par macro), ou des fonctions, elles auront le même niveau que le reste du langage. Il n'y a pas de distinction comme en Java où tu as le langage, et les bibliothèques.
Imaginons que tu veuilles rajouter le "while" que l'on retrouve dans tous les langages mainstream . En Lisp tu écriras une macro, qui aura par ex. la forme (while (var test-fin) @body). Quelle différence y aura-t'il entre ta macro et le reste des opérateurs prédéfinis comme dotimes, loop, etc? Aucune.
Par contre, le point positif c'est que la syntaxe reste la même. Du coup te familiariser avec un nouveau langage bâti sur Lisp n'est pas plus difficile qu'apprendre à utiliser une API donnée.
Concernant CLOS, d'autres ont répondu. D'ailleurs je te conseille de jeter un oeil au livre de Peter Seibel (gigamonkeys.com/book/) pour des infos sur CLOS. Ca ne te prendras pas beaucoup de temps et tu pourras voir les possibilités offertes par l'approche objet utilisée.
J'espère avoir levé tes doutes ;-)