À propos de la JVM : il y a quand même un petit truc spécifique (enfin, il y a peut-être le même problème pour la machine virtuelle Microsoft) concernant la récursion terminale (Tail Call Optimization). Je maîtrise pas les détails techniques, mais en gros si j'ai bien compris c'est pas possible de faire ça sur la la JVM. Concrètement ça a rien de dramatique à mon avis (en gros il faut juste utiliser la forme spéciale, recur pour faire une récursion terminale si on veut éviter de surcharger la pile). Ça me semble pas une différence vitale et j'avoue que je comprends pas forcément tous les enjeux, mais j'ai vu pas mal de discussions dessus :)
Sinon, c'est pas uniquement la faute à la JVM (cela dit je crois que le problème se pose moins pour la version Javascript), mais Clojure est quand même vraiment long à démarrer, ce qui est pas très gênant pour une appli qui tourne lontemps (serveur web, GUI, ...) mais est plus embêtant pour un usage en mode ligne de commande où on n'a pas forcément envie d'attende ~1s pour une commande simple. Je crois qu'il y a des réflexions pour améliorer ça, donc des chances pour que ça s'améliore dans pas trop longtemps, à voir.
Après je trouve que la JVM a aussi des avantages. Pour des petits projets (où t'as pas forcément les moyens d'être intégré dans des distributions ou de fournir des paquets pour chaque distrib), je trouve qu'avoir la possiblité (certes pas optimale, j'en conviens) de fournir un gros fichier .jar avec tout ce qu'il fait, ça rend quand même l'utilisation plus facile.
[^] # Re: 4Clojure
Posté par Lizzie Crowdagger . En réponse à la dépêche Sortie de Clojure 1.6. Évalué à 1.
À propos de la JVM : il y a quand même un petit truc spécifique (enfin, il y a peut-être le même problème pour la machine virtuelle Microsoft) concernant la récursion terminale (Tail Call Optimization). Je maîtrise pas les détails techniques, mais en gros si j'ai bien compris c'est pas possible de faire ça sur la la JVM. Concrètement ça a rien de dramatique à mon avis (en gros il faut juste utiliser la forme spéciale,
recurpour faire une récursion terminale si on veut éviter de surcharger la pile). Ça me semble pas une différence vitale et j'avoue que je comprends pas forcément tous les enjeux, mais j'ai vu pas mal de discussions dessus :)Sinon, c'est pas uniquement la faute à la JVM (cela dit je crois que le problème se pose moins pour la version Javascript), mais Clojure est quand même vraiment long à démarrer, ce qui est pas très gênant pour une appli qui tourne lontemps (serveur web, GUI, ...) mais est plus embêtant pour un usage en mode ligne de commande où on n'a pas forcément envie d'attende ~1s pour une commande simple. Je crois qu'il y a des réflexions pour améliorer ça, donc des chances pour que ça s'améliore dans pas trop longtemps, à voir.
Après je trouve que la JVM a aussi des avantages. Pour des petits projets (où t'as pas forcément les moyens d'être intégré dans des distributions ou de fournir des paquets pour chaque distrib), je trouve qu'avoir la possiblité (certes pas optimale, j'en conviens) de fournir un gros fichier .jar avec tout ce qu'il fait, ça rend quand même l'utilisation plus facile.