Une chose particulièrement "crade" dans le shootout OCaml est l'utilisation de
grand coup forks pour compenser le mauvais support multi-core d'OCaml….
Pour avoir fait une thèse sur la concurrence et la distribution, et cotoyé des équipes qui travaillaient sur la détection de bugs dans les programmes parallèles, tu te trompes complètement : la manière propre de faire du parallèlisme, c'est justement le fork() et l'échange de messages, alors que le partage de mémoire en multi-core n'aboutit qu'à des programmes faux, qui deadlockent ou font des accès concurrents non-protégés dès que le programme se complexifie un peu. Autre avantage, le programme se distribue sur un cluster immédiatement, ce qui n'est pas le cas des programmes multi-core, qui souvent ne passent même pas à l'échelle de dizaine de coeurs. Bref, le mauvais support multi-core d'OCaml garantit d'avoir des programmes plus corrects et facilement distribuables à grande échelle, quel paradoxe !
Bon, je dis ça, mais chez OCamlPro, on va quand-même essayer d'améliorer le support multi-core d'OCaml, mais justement, en permettant de faire des forks dans le runtime (sans utiliser fork(), qui n'existe que sous Unix), et en fournissant un peu de partage de mémoire pour les données qui s'y prêtent (tableaux de flottants, chaînes de caractères). Ça devrait permettre d'exploiter le multi-core, sans augmenter trop les risques d'obtenir des programmes faux.
[^] # 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é à 3.
Pour avoir fait une thèse sur la concurrence et la distribution, et cotoyé des équipes qui travaillaient sur la détection de bugs dans les programmes parallèles, tu te trompes complètement : la manière propre de faire du parallèlisme, c'est justement le fork() et l'échange de messages, alors que le partage de mémoire en multi-core n'aboutit qu'à des programmes faux, qui deadlockent ou font des accès concurrents non-protégés dès que le programme se complexifie un peu. Autre avantage, le programme se distribue sur un cluster immédiatement, ce qui n'est pas le cas des programmes multi-core, qui souvent ne passent même pas à l'échelle de dizaine de coeurs. Bref, le mauvais support multi-core d'OCaml garantit d'avoir des programmes plus corrects et facilement distribuables à grande échelle, quel paradoxe !
Bon, je dis ça, mais chez OCamlPro, on va quand-même essayer d'améliorer le support multi-core d'OCaml, mais justement, en permettant de faire des forks dans le runtime (sans utiliser fork(), qui n'existe que sous Unix), et en fournissant un peu de partage de mémoire pour les données qui s'y prêtent (tableaux de flottants, chaînes de caractères). Ça devrait permettre d'exploiter le multi-core, sans augmenter trop les risques d'obtenir des programmes faux.