Je comprends tout à fait ta comparaison.
Cela dit le designer a intérêt à prendre ne compte les contraintes de la vraie vie, imagine la maquette d'une voiture, la voiture peut être belle mais pas aérodynamique pour 2 sous et consommer 3 tonnes d'essences.
Mais effectivement on ne peut pas faire que critiquer Lisaac. Celà dit je trouve intéressant de soulever certains points de comparaison avec les langages "modernes" actuels. Rien ne montre effectivement qu'il n'est pas possible de cibler une machine virtuelle en Lisaac. Mais faut y penser dès le début si c'est un réel objectif (je ne crois pas que ca soit le cas de toute façon) : une machine virtuelle impose des contraintes (jeu d'instruction, gestion mémoire, gestion des droits, etc.) que le langage doit prendre en compte et des fonctionnalités qui peuvent/doivent être exposées.
La 2ème question à se poser c'est la pertinence de certains choix fait dans Lisaac, notamment le côté "simple" de la grammaire permettant d'augmenter facilement les constructions syntaxique (simuler une boucle for while ou un autre truc innovant). C'est joli, bandant... oui mais pourquoi Java ou C# ne propose pas ce genre de chose ? (c'est pas une nouveauté en soit)
Ce qui peut paraître séduisant en premier abord et vu comme une qualité dans un objectif "universitaire" peut être un boulet dans la vraie vie. Regardons le C++ : mine de rien ont peut reproduire la syntaxe de pleins d'autres langages uniquement avec le système de macro (j'ai même vu du Lisp en macro C++... et pourquoi pas du Lisaac, soyons fou ;) ). On en arrive à des constructions en C++ qui sont sûrement bandantes pour le hacker qui l'a codé, mais qui sont imbittable par le commun des mortels, et j'en vois tous les jours.
En limitant à l'aide de mots clés (for while foreach, etc.) les constructions les plus courantes, on limite certes la concision et l'expressivité, mais on améliore aussi la compréhension du code par une autre personne. C'est probablement ce qui a fait une partie du succès de Java. Beaucoup d'autres simplifications également. Ce qui apparaît comme des contraintes pour un "universitaire" est en fait un atout dans la vraie vie. Lever ces contraintes comme le propose Lisaac élimine une qualité essentielle d'un code source. Et dans le mondre du libre on devrait être attaché à cet aspect.
Une machine virtuelle c'est pareil. En apparance c'est une érésie, les perfs s'en ressentent largement. Seulement les avantages sont aujourd'hui beaucoup plus important que les inconvénients (sécurité, portabilité, productivité, etc.) dans beaucoup de scénarios d'utilisation.
Tout ca pour dire que je ne suis pas contre avoir des langages "de recherche", "universitaire". Mais l'objectif devrait pourtant être le même : améliorer les langages offerts aux utilisateurs, répondre à leurs besoins.
Bon j'ai encore fait dérivé le sujet mais j'espère que tu trouveras ca plus intéressant comme discussion ;)
[^] # Re: C'est trop compliqué !
Posté par TImaniac (site web personnel) . En réponse au journal Des langages de haut niveau. Évalué à 1.
Cela dit le designer a intérêt à prendre ne compte les contraintes de la vraie vie, imagine la maquette d'une voiture, la voiture peut être belle mais pas aérodynamique pour 2 sous et consommer 3 tonnes d'essences.
Mais effectivement on ne peut pas faire que critiquer Lisaac. Celà dit je trouve intéressant de soulever certains points de comparaison avec les langages "modernes" actuels. Rien ne montre effectivement qu'il n'est pas possible de cibler une machine virtuelle en Lisaac. Mais faut y penser dès le début si c'est un réel objectif (je ne crois pas que ca soit le cas de toute façon) : une machine virtuelle impose des contraintes (jeu d'instruction, gestion mémoire, gestion des droits, etc.) que le langage doit prendre en compte et des fonctionnalités qui peuvent/doivent être exposées.
La 2ème question à se poser c'est la pertinence de certains choix fait dans Lisaac, notamment le côté "simple" de la grammaire permettant d'augmenter facilement les constructions syntaxique (simuler une boucle for while ou un autre truc innovant). C'est joli, bandant... oui mais pourquoi Java ou C# ne propose pas ce genre de chose ? (c'est pas une nouveauté en soit)
Ce qui peut paraître séduisant en premier abord et vu comme une qualité dans un objectif "universitaire" peut être un boulet dans la vraie vie. Regardons le C++ : mine de rien ont peut reproduire la syntaxe de pleins d'autres langages uniquement avec le système de macro (j'ai même vu du Lisp en macro C++... et pourquoi pas du Lisaac, soyons fou ;) ). On en arrive à des constructions en C++ qui sont sûrement bandantes pour le hacker qui l'a codé, mais qui sont imbittable par le commun des mortels, et j'en vois tous les jours.
En limitant à l'aide de mots clés (for while foreach, etc.) les constructions les plus courantes, on limite certes la concision et l'expressivité, mais on améliore aussi la compréhension du code par une autre personne. C'est probablement ce qui a fait une partie du succès de Java. Beaucoup d'autres simplifications également. Ce qui apparaît comme des contraintes pour un "universitaire" est en fait un atout dans la vraie vie. Lever ces contraintes comme le propose Lisaac élimine une qualité essentielle d'un code source. Et dans le mondre du libre on devrait être attaché à cet aspect.
Une machine virtuelle c'est pareil. En apparance c'est une érésie, les perfs s'en ressentent largement. Seulement les avantages sont aujourd'hui beaucoup plus important que les inconvénients (sécurité, portabilité, productivité, etc.) dans beaucoup de scénarios d'utilisation.
Tout ca pour dire que je ne suis pas contre avoir des langages "de recherche", "universitaire". Mais l'objectif devrait pourtant être le même : améliorer les langages offerts aux utilisateurs, répondre à leurs besoins.
Bon j'ai encore fait dérivé le sujet mais j'espère que tu trouveras ca plus intéressant comme discussion ;)