• [^] # Re: Pas sûr que trouver des erreurs/la fiabilité soit si important pour la communauté libre..

    Posté par (site web personnel, Mastodon) . En réponse à la dépêche [code] Trouver les erreurs. Évalué à 3.

    Un langage sans "type somme" ou ayant encore la référence "null" en 2015, c'est un peu dure.

    Comme tu dis, c'est dure. Pour la référence null, je vois pas où est le problème, surtout quand on parlait de faire de la programmation système.
    En plus, c'est pas C/C++, les pointeurs, on n'est pas obligés de s'en servir donc le null, c'est pareil, on s'en sert pas des masses.
    Ensuite, le "type somme", je veux que tu m'expliques ce que c'est, ça me permettra de mettre à jour ma définition informatique de type.

    Pour la création de type, c'est réellement utilisable ? j'avais vu que l'on pouvait définir des ranges mais un code en réel avec des ranges mais pas de précision ne sert pas à grand chose.

    Ouais, t'as raison, c'est d'ailleurs pour ça qu'on peut écrire ça en Ada:

    type Coefficient is digits 10 range -1.0 .. 1.0;

    D'ailleurs, en point fixe aussi

    type Volt is delta 0.125 range 0.0 .. 255.0;

    Les assert() et autre post/pre condition, c'est aussi joli que les tests unitaires. Mais quand un débordement d'entier char, te lance une exception, qui démarre un autotest dans la central inertiel de ta fusée, tu les haies tes "machins" runtime.

    Oh, putain !! Un bug sur de la reprise de code n'ont couvert par une vérification fait exploser UNE fusée et le langage est à jeter !! En quoi était codé Mars Climate Orbiter ?
    Le seul truc avec Mars Climate Orbiter, c'est que ce n'était pas filmé donc l'impact sur la mémoire collective est nul.
    D'autre part, tu reliras bien le rapport. Il n'y avait pas d'autotest du tout.
    C'est le fait que cette centrale inertielle, liée si ma mémoire est bonne à l'axe de la fusée au décollage, soit encore en route après 30 secondes de vol qui était problématique vu qu'elle ne pouvait traiter que des accélérations dignes d'Ariane 4 donc beaucoup moins fortes qu'Ariane 5 (mais valable dans les premières secondes de vol).
    Le bout de code n'étant pas protégé, il a renvoyé une valeur incohérente que le central n'a pu gérer. La centrale redondante ayant fait pareil, il était plus sûr, après avoir tenté de rattraper la soi-disant mauvaise trajectoire, de procéder à l'autodestruction.

    En gros, si tout ses types complexe que permet de définir Ada ne fonctionne qu'au runtime, ils ne servent à rien ou presque. Ocaml a un typage complexe, et tout ou presque est vérifié à la compilation.

    Ou presque... On est bien d'accord et tu montres clairement que tu ne sais pas de quoi tu parles.
    Alors effectivement, si tu castes dans tous les sens, le compilateur va avoir du mal à te dire si tu déborderas ou pas.
    Mais en même temps, si tu le fais, c'est justement pour dire au compilateur que tu sais ce que tu fais et qu'il ne verifiera que les nouvelles conditions.
    Par contre, en conditions normales, il n'y a guère que les entrées externes au programme qui peuvent générer des valeurs hors plages et ça, généralement, on traite les exceptions. Alors, sauf si Ocaml a des pouvoirs de divination, je ne vois pas comment tu peux assurer que l'utilisateur ne rentrera pas n'importe quoi.

    Bref, merci