Fluctuat et mergitur
Par David Monniaux le samedi, février 12 2011, 08:10 - Recherche scientifique - Lien permanent
On me dit parfois que je radote quand je dis qu'on devrait faire un peu plus attention aux calculs en virgule flottante. Mon article de 2008 sur le sujet serait du pinaillage... Ou encore, cela n'aurait d'intérêt que pour une minorité d'industries de niche (aviation civile); avec en toile de fond l'idée que les chercheurs s'intéressent à des problèmes sans intérêt, sans lien avec les vrais besoins de la vraie industrie.(*)
Hélas, il semble qu'en raison de bugs de flottants, il est possible de mettre en panne, à distance, des serveurs Web servant du contenu dynamique programmé en PHP ou Java. (Je n'ai pas été vérifier.)
Un détail amusant : Rick Regan, la personne qui a signalé le bug dans PHP, a trouvé l'explication de celui-ci... après avoir lu mon article de 2008, qu'il cite. Il m'a d'ailleurs demandé récemment des précisions par mail.
Je suis un peu débordé en ce moment mais j'irai voir ça plus en détail à l'occasion.
(*) Le coup de l'élite sur-éduquée déconnectée des vraies préoccupations du vrai monde, ça ne vous fait penser à personne ?
Commentaires
Tu sais, moi on me dit bien que je radote quand j'explique que les threads, c'est dangereux, et que presque tous les programmeurs ne savent pas s'en servir... ou quand je dis que java est un tres mauvais langage d'apprentissage a cause de son GC, qui n'entraine pas a etre rigoureux.
Moi une fois mon simulateur avait une erreur de calcul plus grande de trois ordres de grandeur que celle qu'il devait mesurer, due aux défauts des instruments simulés. La cause ? Avoir un pas de temps de 1/100 de seconde.
Oui oui, l'erreur était d'oublier que les flottants sont en base 2, et donc que "1/100" n'est pas représentable de manière exacte.
Barraki : Heu oui mais donc soit ces erreurs étaient vraiment petites soit l'algo numérique n'était pas adapté..car bon "ça ne devrait pas explosé juste à cause de cette histoire de pas (sinon c'est que ça peut exploser à peut n'importe où).
Marrc : "je dis que java est un tres mauvais langage d'apprentissage a cause de son GC, qui n'entraine pas a etre rigoureux."
Question d'objectif. Si c'est pour illustrer un cours d'algo de base, je préfere largement prendre un langage qui me fait la gestion de la mémoire (les pointeurs et en même temps la découverte de l'algo de base...C'est rude).
De plus, qu'appelle t on "rigueur" dans ce cadre.
Dans le spatial, on tend souvent à préférer des VM qui ont fait leur preuves (testées...et non prouvées...on en est loin) plutôt que de donner la gestion de la mémoire à l'humain.
"la mémoire est une chose trop sérieuse pour être confiée au programmeur" :)
rien à voir, mais joli jeu de mot du titre pour les initiés :-)