399Fermer401
PolluxLe 06/08/2007 à 13:00
dualmoo (./397) :
Pollux (./351) :
nan mais je me doute bien qu'il y a moyen de le transformer facilement en un programme pas buggé, c'est pas pour autant qu'il était pas buggé initialement et que plein d'autres programmes scheme buggés comme ça ne traînent pas dans la nature...
Ben le programmeur scheme moyen connait map et for-each et sait dans quel cas appliquer l'un ou l'autre.

Non. Le programmeur concurrent moyen sait qu'il ne faut pas faire de race conditions et sait qu'il faut utiliser des verrous, mais c'est pas pour autant que n'importe quel programme multithreadé ne contient pas des tonnes de race conditions cachées... Bref le programmeur connaît la théorie mais en pratique dans des cas subtils c'est facile (et fréquent) de se tromper ^^

D'un autre point de vue, on peut dire que l'avantage n°1 d'un langage type-safe par rapport au C c'est que les éventuelles opérations unsafe sont rares et clairement délimitées, par exemple dans les qqs cas où on appelle une lib unsafe pour avoir plus de performance (contrairement au C où même l'opération la plus bénine est à la fois 1] susceptible de tout faire planter 2] peut lurker en se comportant de façon parfaitement satisfaisante sur la majorité des plateformes)... De même l'avantage d'un langage ne parallélisant pas tout par défaut c'est que les éventuelles parallélisations sont rares et clairement délimitées (map-parallel au lieu de map quand on en a besoin, par exemple), et permet d'éviter le cocktail explosif "1] susceptible de tout faire planter 2] peut lurker en se comportant de façon parfaitement satisfaisante sur la majorité des plateformes" ^^
(et puis for-each ne suffit pas, puisque je récupère le résultat de la fonction [en l'occurrence, quel était le résultat de la transaction])

oui mais une fonction qui fait à la fois un effet de bord et un résultat intéressant, c'est une bad programming practice.

Ben carrément pas, par exemple si tu fais un programme qui dialogue avec une BDD ou un serveur le fait d'aller chercher un truc dans la BDD ça fait un effet de bord tout en ayant un résultat intéressant ^^