Mes amis haskelleurs disent qu'un gros défaut du langage est la difficulté à optimiser et profiler le programme. (Si je comprends bien, comme l'évaluation n'est pas stricte, il n'y aurait pas de correspondance claire entre le code source du programme et le flot des traitements effectués par le programme.) Existe-t-il des méthodes efficaces pour cela? En regard de Haskell, OCaml est très simple et on suit très facilement son code source original en lisant le code assembleur généré.
Optimiser est toujours difficile, quel que soit le langage. Avec GHC, profiler un code m'a paru plutôt simple12. En dehors des expérimentations-jouets, j'avais obtenu un (très utile) profilage par fonction pour une appli web réalisée avec Yesod.
Si tu trouves que lire l'assembleur d'OCaml est très facile, alors GHC devrait te plaire : à partir du code Haskell, il peut générer un code fonctionnel bas niveau en "Core"3 ou un code en C. Un thème central pour l'optimisation est le choix de la structure de données (et de la bibliothèque qui l'implémente), mais tout cela me semble bien documenté4.
[^] # Re: Applications
Posté par rogo . En réponse à la dépêche Sortie du Glorious Haskell Compiler 7.8. Évalué à 5.
Optimiser est toujours difficile, quel que soit le langage. Avec GHC, profiler un code m'a paru plutôt simple1 2 . En dehors des expérimentations-jouets, j'avais obtenu un (très utile) profilage par fonction pour une appli web réalisée avec Yesod.
Si tu trouves que lire l'assembleur d'OCaml est très facile, alors GHC devrait te plaire : à partir du code Haskell, il peut générer un code fonctionnel bas niveau en "Core"3 ou un code en C. Un thème central pour l'optimisation est le choix de la structure de données (et de la bibliothèque qui l'implémente), mais tout cela me semble bien documenté4 .
Une introduction simple au profiling GHC, ancienne mais encore d'actualité : http://stackoverflow.com/questions/3276240/tools-for-analyzing-performance-of-a-haskell-program/3276557#3276557 ↩
http://www.haskell.org/haskellwiki/Profiling_walkthrough ↩
Conseils et exemples d'optimisation, notamment en Core : http://www.haskell.org/haskellwiki/Performance/GHC ↩
http://www.haskell.org/haskellwiki/Performance ↩