"Non. La méthode la plus sur, c'est de prouver formellement du code (méthode B par exemple). "
Pour être dans le milieu, ce n'est pas le cas. La méthode B est surtout utilisé dans le ferroviaire. Le "milieu" croit surtout au norme (do178,iso26262,en50128, IEC61508…).
" Exemple ? Les try/catch foireux en java à cause de l'obligation de gérer les exceptions (i.e., le catch est vide, mais c'est nécessaire pour que cela compile)."
C'est pas faux, les normes imposent bien plus de chose.
"Sans oublier l'impact que cela peut avoir sur la taille du binaire et les performances (dans des environnements comme l'embarqué, ces "détails" peuvent être importants)"
On n'utilise pas Java dans l'embarqué critique. La JVM est loin d'être qualifiable/certifiable. Et l'usage du GC rend cela encore plus complexe.
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.
Un langage sans "type somme" ou ayant encore la référence "null" en 2015, c'est un peu dure.
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.
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.
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.
Dans les domaines sensibles, la mode est aussi au générateur de code à partir de "modèle". Générateur de code écrit en Ocaml qui génère du C (Misra C en gros, sans allocation).
Niveau sécurité maximal, je te proposerais bien SCADE, mais c'est loin d'être libre et gratuit.
Non, cela n'a rien à voir. La Libc est la lib standard, le runtime est nécessaire au code objet compilé par le langage. Ada propose la gestion de "tâche" par exemple, qui nécessite de traduire ça en thread ou en processus.
la libgcc de gcc doit faire quelques lignes d'assembleur pour initialiser la pile et sauter à main().
Je pense que ne pas choisir un langage pour avoir plus de contributeur peut être un mauvais calcul. Si le dev principal passe du temps dans des problèmes à la con dû au langage (gestion de la mémoire, null pointer exception,…), il perd du temps.
Apprendre un nouveau langage, n'est pas si difficile.
C'est pas mal comme liste. Mais quand on a un budget limité et que l'on ne peut pas tout faire, il faut rechercher le plus efficace.
Les teste unitaires complet sont très contraignant, et peu utile. Par contre, les tests lié à un bug, qui doit de tout façon, doit être écrit pour le corriger, est utile pour éviter son retour.
Un truc qui est généralement interdit est de générer une sortie, vaguement vérifié puis d'utiliser des diffs. Cela ne permet pas de savoir si le code est correcte, cela permet de savoir si quelques choses à changer. En général, ce genre de test est simple à mettre en œuvre mais nécessite que le codeur sache que ce qu'il fait, que sa modification change la sortie de façon volontaire ou non. C'est plus un détecteur de changement, qu'un test.
Le test a ne pas oublier, et qui est indispensable, est le test de plus haut niveau : celui de l'utilisateur. En effet, beaucoup de bugs "unitaires" peuvent être masqué et n’impactent pas l’utilisateur final.
Dans le cas d'une GUI, il y a peu de chance que ses tests soient automatisables, et si ils le sont, la maintenance peut être prohibitif. Par contre, ce sont les tests qui ont le plus de valeur, car les client verront la même chose.
Ensuite, pour les programmes complexes, plutôt que des tests unitaires qui testeront finalement très peu les combinaisons des exigences, je préfère le fuzzing. Il s'agit de générer rapidement et aléatoirement des entrées plus ou moins fausse pour tester les réactions du programme. La condition de sorti est en général, simple : ne pas planter. Parfois, il est possible de faire plus compliquer. Un compilateur peut se faire injecter des programmes aléatoires, puis compiler le résultat avec et sans optimisation, l’exécution des 2 programmes doit avoir le même comportement.
Si chaque groupe industriel a son journal, la pluralité est respecté. D'ailleurs, radio France et France télé pourrait aussi faire de la presse.
Si tout est sous contrôle de l'état, la pluralité n'existe plus réellement.
L'idéal serait des journaux financés uniquement par les lecteurs. Cela n'existe pas vraiment (Pour le Figaro, et le Monde, si on retire l'aide d'état et les achats énormes d'Air France, il ne leur reste plus grand chose).
Je parle du cas général. Les fonctionnaires se plaignent du poins d'indices gelés mais oublie les autres augmentations automatiques qui n'existent pas dans le privé.
Évidemment, qu'il y a des cas de personnes sous payé, surtout dans la recherche. Tant que l'optimisation fiscale permet de faire taxer des profits français, en Irlande ou au Luxembourg, cela ne changera pas.
juste que l'augmentation est devenue relativement marginale
Vu qu'elle est supérieur à l'inflation, ce n'est pas marginal du tout. C'est une des grosses raisons qui fait que le budget de l'Etat augmente de 3% par an, sans rien faire de plus. Le problème est que ces 3% sont aussi supérieur à la croissance, et que l'augmentation des rentrés fiscales ne peuvent les couvrir.
" Du genre une caisse pour la cotisation destinée au salaire d'un côté, d'un autre côté une instance de délibération publique pour orienter l'investissement vers les projets considérés les plus utiles ?"
par exemple. Le but d'une règle simple est que son application est évidente, que l'on ne doit pas passer devant une commission pour l’exercer, et que l’administration ne change pas d'avis chaque mois à demander des justificatifs.
"Les avions sont plus fiables parce qu'il y a beaucoup plus d'argents investi dans la sécurité, y compris dans la partie électrique et électronique."
Non, c'est une question de poids.
"Mais les États-Unis peuvent détourner à distance un avion en prenant le contrôle à distance des commandes de vol et rien n'indique que des terroristes peuvent faire de même."
Source ? Ton article site des fonctionnalités évoqués, une feature, pas un bug.
"Et les derniers accidents montrent que les commandes électroniques sont souvent perturbées par les orages."
C'est archi faux également. Les avions n'aiment pas les cumulo-nimbus, et c'est à causes des vents violents, pas des éclaires.
[^] # 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é à 2.
https://fr.wikipedia.org/wiki/Arbre_syntaxique_abstrait
"La première sécurité est la liberté"
[^] # 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é à 2.
Il est fait pour faire un client lourd graphique. Java était aussi orienté serveur au début.
"La première sécurité est la liberté"
[^] # 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é à 2.
Pour être dans le milieu, ce n'est pas le cas. La méthode B est surtout utilisé dans le ferroviaire. Le "milieu" croit surtout au norme (do178,iso26262,en50128, IEC61508…).
" Exemple ? Les try/catch foireux en java à cause de l'obligation de gérer les exceptions (i.e., le catch est vide, mais c'est nécessaire pour que cela compile)."
C'est pas faux, les normes imposent bien plus de chose.
"Sans oublier l'impact que cela peut avoir sur la taille du binaire et les performances (dans des environnements comme l'embarqué, ces "détails" peuvent être importants)"
On n'utilise pas Java dans l'embarqué critique. La JVM est loin d'être qualifiable/certifiable. Et l'usage du GC rend cela encore plus complexe.
"La première sécurité est la liberté"
[^] # 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.
Cela y ressemble de loin. cf les liens au dessus.
Il faut se rattraper aux branches. Sortir avec une exception est juste inacceptable.
Oui, on peut, mais donc cela ne t'aide pas tant que ça.
a = 99; mais a = 40+40; ? et a +=1; ?
"La première sécurité est la liberté"
[^] # 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é"
[^] # 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.
go est orienté serveur, avec temps de compilation et déploiement facile. Pas Rust.
"La première sécurité est la liberté"
[^] # 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é à 0.
Un langage sans "type somme" ou ayant encore la référence "null" en 2015, c'est un peu dure.
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.
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.
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.
"La première sécurité est la liberté"
[^] # 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é à 2.
C'était pas un Ada qui fonctionnait sur un petit os comme rtems ?
"La première sécurité est la liberté"
[^] # 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é à 2.
C'est pas faux.
Dans les domaines sensibles, la mode est aussi au générateur de code à partir de "modèle". Générateur de code écrit en Ocaml qui génère du C (Misra C en gros, sans allocation).
Niveau sécurité maximal, je te proposerais bien SCADE, mais c'est loin d'être libre et gratuit.
"La première sécurité est la liberté"
[^] # 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é à 2.
Pour moi, Ada, c'est dépassé. Si le but est de passé à un langage plus sécurisé, il faut regardé du coté de Haskell/Ocaml, et même Rust ou Scala.
"La première sécurité est la liberté"
[^] # 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.
La gestion des taches par exemple serait à implémenter par l'OS, mais est fournis par le langage. Il faudrait 2 niveaux de compilation.
"La première sécurité est la liberté"
[^] # 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é à 3.
Non, cela n'a rien à voir. La Libc est la lib standard, le runtime est nécessaire au code objet compilé par le langage. Ada propose la gestion de "tâche" par exemple, qui nécessite de traduire ça en thread ou en processus.
la libgcc de gcc doit faire quelques lignes d'assembleur pour initialiser la pile et sauter à main().
"La première sécurité est la liberté"
[^] # 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é à 2.
ada a un runtime pour fonctionner, j'ai du mal à le voir utilisé comme langage système.
"La première sécurité est la liberté"
[^] # 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é à 2.
Je pense que ne pas choisir un langage pour avoir plus de contributeur peut être un mauvais calcul. Si le dev principal passe du temps dans des problèmes à la con dû au langage (gestion de la mémoire, null pointer exception,…), il perd du temps.
Apprendre un nouveau langage, n'est pas si difficile.
"La première sécurité est la liberté"
[^] # Re: les tests qui marchent pour de vrai
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche [code] Trouver les erreurs. Évalué à 2.
https://pypi.python.org/pypi/fusil a été développé par un lecteur de linuxfr.
J'imagine qu'il doit être possible de faire un générateur générique de fichier XML à partir d'une DTD.
Sinon, oui, c'est du custom, surtout pour générer un ensemble d'entré valide.
"La première sécurité est la liberté"
[^] # Re: efficacité des différentes méthodes de tests
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche [code] Trouver les erreurs. Évalué à 1.
La relecture de code permet de trouver des erreurs qui peuvent être très compliqué à testé.
Les tests finaux (intégration) permet de trouver les erreurs qui seront trouvé en 1er par l'utilisateur, or c'est le plus important.
Les outils statiques ont le bonheur de fonctionner sur tout le code, cela permet d'avoir beaucoup de garanti (typage fort, absence de valeur null…)
"La première sécurité est la liberté"
# les tests qui marchent pour de vrai
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche [code] Trouver les erreurs. Évalué à 3. Dernière modification le 15 janvier 2015 à 10:11.
C'est pas mal comme liste. Mais quand on a un budget limité et que l'on ne peut pas tout faire, il faut rechercher le plus efficace.
Les teste unitaires complet sont très contraignant, et peu utile. Par contre, les tests lié à un bug, qui doit de tout façon, doit être écrit pour le corriger, est utile pour éviter son retour.
Un truc qui est généralement interdit est de générer une sortie, vaguement vérifié puis d'utiliser des diffs. Cela ne permet pas de savoir si le code est correcte, cela permet de savoir si quelques choses à changer. En général, ce genre de test est simple à mettre en œuvre mais nécessite que le codeur sache que ce qu'il fait, que sa modification change la sortie de façon volontaire ou non. C'est plus un détecteur de changement, qu'un test.
Le test a ne pas oublier, et qui est indispensable, est le test de plus haut niveau : celui de l'utilisateur. En effet, beaucoup de bugs "unitaires" peuvent être masqué et n’impactent pas l’utilisateur final.
Dans le cas d'une GUI, il y a peu de chance que ses tests soient automatisables, et si ils le sont, la maintenance peut être prohibitif. Par contre, ce sont les tests qui ont le plus de valeur, car les client verront la même chose.
Ensuite, pour les programmes complexes, plutôt que des tests unitaires qui testeront finalement très peu les combinaisons des exigences, je préfère le fuzzing. Il s'agit de générer rapidement et aléatoirement des entrées plus ou moins fausse pour tester les réactions du programme. La condition de sorti est en général, simple : ne pas planter. Parfois, il est possible de faire plus compliquer. Un compilateur peut se faire injecter des programmes aléatoires, puis compiler le résultat avec et sans optimisation, l’exécution des 2 programmes doit avoir le même comportement.
"La première sécurité est la liberté"
[^] # Re: Et par rapport à Freetorrent ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal piratix.fr.nf : un tracker bittorent pour OS libres. Évalué à 2.
Et bien bon courage, d'après Linus Torvald, ce qui fait le succès d'un projet, c'est la persévérance du développeur principal.
"La première sécurité est la liberté"
[^] # Re: NationalisER ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Projet pour une presse libre. Évalué à 2.
Dans le privé, non plus. Il faut changer de boites pour ça.
Les bas salaires sont plus élevé dans le publique que dans le privé.
L'exception qui confirme la règle, les mieux diplômés touchent souvent moins dans le public.
"La première sécurité est la liberté"
[^] # Re: Nationalisé ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Projet pour une presse libre. Évalué à 0.
Si chaque groupe industriel a son journal, la pluralité est respecté. D'ailleurs, radio France et France télé pourrait aussi faire de la presse.
Si tout est sous contrôle de l'état, la pluralité n'existe plus réellement.
L'idéal serait des journaux financés uniquement par les lecteurs. Cela n'existe pas vraiment (Pour le Figaro, et le Monde, si on retire l'aide d'état et les achats énormes d'Air France, il ne leur reste plus grand chose).
"La première sécurité est la liberté"
[^] # Re: NationalisER ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Projet pour une presse libre. Évalué à 2.
De quoi tu parles ?
Je parle du cas général. Les fonctionnaires se plaignent du poins d'indices gelés mais oublie les autres augmentations automatiques qui n'existent pas dans le privé.
Évidemment, qu'il y a des cas de personnes sous payé, surtout dans la recherche. Tant que l'optimisation fiscale permet de faire taxer des profits français, en Irlande ou au Luxembourg, cela ne changera pas.
"La première sécurité est la liberté"
[^] # Re: NationalisER ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Projet pour une presse libre. Évalué à 1.
Vu qu'elle est supérieur à l'inflation, ce n'est pas marginal du tout. C'est une des grosses raisons qui fait que le budget de l'Etat augmente de 3% par an, sans rien faire de plus. Le problème est que ces 3% sont aussi supérieur à la croissance, et que l'augmentation des rentrés fiscales ne peuvent les couvrir.
"La première sécurité est la liberté"
[^] # Re: Nationalisé ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Projet pour une presse libre. Évalué à 2.
par exemple. Le but d'une règle simple est que son application est évidente, que l'on ne doit pas passer devant une commission pour l’exercer, et que l’administration ne change pas d'avis chaque mois à demander des justificatifs.
"La première sécurité est la liberté"
[^] # Re: fiabilité !
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Les lois françaises favorisent-elles l’insécurité informatique ?. Évalué à 1.
Non, c'est une question de poids.
Source ? Ton article site des fonctionnalités évoqués, une feature, pas un bug.
C'est archi faux également. Les avions n'aiment pas les cumulo-nimbus, et c'est à causes des vents violents, pas des éclaires.
"La première sécurité est la liberté"
[^] # Re: ennuis
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Les lois françaises favorisent-elles l’insécurité informatique ?. Évalué à 4.
Tu oublis la 3ième possibilité : il a déjà bossé pour ce genre d'éditeur.
"La première sécurité est la liberté"