Haskell et Scala ne sont pas loin derrière, mais ils appartiennent à la même famille que OCaml (ma comparaison était plutôt avec les langages comme Python), et surtout, un effort considérable a été déployé pour les rendre efficace : Scala utilise les JIT Java optimisés par Sun/Oracle pendant des années, et le compilateur Haskell est au top des optimisations, alors qu'OCaml ne fait pas beaucoup d'optimisations en comparaison, et a donc pas mal de marge de progression.
Après, Haskell est plutôt un langage pour les chercheurs, qui ont un amour fou pour rendre leurs programmes illisibles, en utilisant un maximum de combinateurs et de fonctions prédéfinies dont les noms ne doivent pas dépasser 5 caractères. Du coup, j'ai toujours un doute sur la maintenabilité de leurs programmes, alors que les programmes OCaml sont souvent très lisibles (le "style standard" est de spécifier les modules des fonctions, genre "List.iter", ce qui rend le code plus lisible parce qu'on peut facilement deviner les types et comprendre ce que ça fait). Scala, lui, est un compromis entre Java et fonctionnel, on a une expressivité proche de celle d'OCaml, l'accès à toutes les bibliothèques Java, mais pas la sûreté (on peut avoir des pointeurs NULL…).
[^] # Re: Utilisation d'OCaml dans l'industrie
Posté par Fabrice Le Fessant . En réponse à la dépêche Ocsigen : repenser le développement des applications HTML5. Évalué à 4.
Haskell et Scala ne sont pas loin derrière, mais ils appartiennent à la même famille que OCaml (ma comparaison était plutôt avec les langages comme Python), et surtout, un effort considérable a été déployé pour les rendre efficace : Scala utilise les JIT Java optimisés par Sun/Oracle pendant des années, et le compilateur Haskell est au top des optimisations, alors qu'OCaml ne fait pas beaucoup d'optimisations en comparaison, et a donc pas mal de marge de progression.
Après, Haskell est plutôt un langage pour les chercheurs, qui ont un amour fou pour rendre leurs programmes illisibles, en utilisant un maximum de combinateurs et de fonctions prédéfinies dont les noms ne doivent pas dépasser 5 caractères. Du coup, j'ai toujours un doute sur la maintenabilité de leurs programmes, alors que les programmes OCaml sont souvent très lisibles (le "style standard" est de spécifier les modules des fonctions, genre "List.iter", ce qui rend le code plus lisible parce qu'on peut facilement deviner les types et comprendre ce que ça fait). Scala, lui, est un compromis entre Java et fonctionnel, on a une expressivité proche de celle d'OCaml, l'accès à toutes les bibliothèques Java, mais pas la sûreté (on peut avoir des pointeurs NULL…).