C'est comme ça que tu fais un AST en 200 lignes de code, contre plusieurs dizaine de classe en langage objet classique.
" 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 !!"
Le principe même de planter au runtime est totalement inacceptable. Au mieux, il log un truc, mais ne plante pas ! Même facebook avec hh, log les erreurs pour éviter justement de planter leur code. On ne rajoute pas de moyen de planter dans un logiciel qui ne doit pas s’arrêter.
"Ou presque... On est bien d'accord et tu montres clairement que tu ne sais pas de quoi tu parles."
Si j'allais te parler des "case" ouvert qui n'ont pas tous les variants de définit, je pense que je t'aurais perdu en route. C'est quand même un cas très particuliers, que l'on peut éviter.
"Alors effectivement, si tu castes dans tous les sens, le compilateur va avoir du mal à te dire si tu déborderas ou pas."
Pourquoi caster ? Si tu le fait, tu pètes toutes la sémantique du machin que tu manipules et le compilo ne peut rien pour toi. Si tu es obliger de le faire, ton checker ne sert plus à grand chose, et ne te garanti plus grand chose. Mais souvent, c'est juste un problème d'architecture matériel ou limitation de langage (collection d'Object...)
"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"
non, il suffit d'un intégrateur. Une mémoire dans une boucle. Voir une mémoire inclus dans un calcul fait à chaque pas de temps.
"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."
Il exige que tu traites tous les cas, et détecte bien tous les cas.
[^] # Re: Pas sûr que trouver des erreurs/la fiabilité soit si important pour la communauté libre..
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche [code] Trouver les erreurs. Évalué à 1.
https://en.wikipedia.org/wiki/Tagged_union
https://en.wikipedia.org/wiki/Algebraic_data_type
C'est comme ça que tu fais un AST en 200 lignes de code, contre plusieurs dizaine de classe en langage objet classique.
Le principe même de planter au runtime est totalement inacceptable. Au mieux, il log un truc, mais ne plante pas ! Même facebook avec hh, log les erreurs pour éviter justement de planter leur code. On ne rajoute pas de moyen de planter dans un logiciel qui ne doit pas s’arrêter.
Si j'allais te parler des "case" ouvert qui n'ont pas tous les variants de définit, je pense que je t'aurais perdu en route. C'est quand même un cas très particuliers, que l'on peut éviter.
Pourquoi caster ? Si tu le fait, tu pètes toutes la sémantique du machin que tu manipules et le compilo ne peut rien pour toi. Si tu es obliger de le faire, ton checker ne sert plus à grand chose, et ne te garanti plus grand chose. Mais souvent, c'est juste un problème d'architecture matériel ou limitation de langage (collection d'Object...)
non, il suffit d'un intégrateur. Une mémoire dans une boucle. Voir une mémoire inclus dans un calcul fait à chaque pas de temps.
Il exige que tu traites tous les cas, et détecte bien tous les cas.
"La première sécurité est la liberté"