Je crois que tu ne sais pas du tout de quoi tu parles. J'ai développé pendant 1 ans ou 2 ans, avec une machine avec 3/4 Go (windows 32 bits avec 4 Go physique). C'était juste un insupportable.
Un simple navigateur web prend 1 Go, les mails passent par là (chrome), avant c'était Lotus… Si tu veux un firefox de plus, c'est un Go de plus. Tu dev sous Eclipse, 1 Go. Tu utilises un word ou excel, c'est mini plusieurs centaines de Mo.
Donc, tu passes ton temps à fermer des applications pour bosser, et à les réouvrir.
Avec 8 Go, je suis maintenant tranquille sauf dans les cas extrèmes (1 eclipse de dev pour créer un autre eclipse de dev pour lancer le produit sous eclipse).
Et comme préciser ailleurs, je développe aussi sous un atom avec 2 Go de RAM avec Ocaml et Emacs.
Non, la GPL n'impose justement pas de mettre la liste des auteurs, c'est une des grosses différences avec la BSD car ce n'est pas un truc qui passe à l'échelle.
" tu veux un fournisseur qui soit capable d'assurer la garantie pour la durée ( genre 3 ans, parfois 5 ans ), ce qui implique d'avoir des stocks et de pas avoir fait faillite. "
Et les boites veulent 5 ans de garanti car ils ne veulent pas changer le matos tous les 3 ans. Donc, ils payent plus chère tous les 5 ans, et on se traine des truc obsolètes pendant 2 ou 3 ans. Le suivi sur 5 ans n'est pas gratuit.
les contrôles du BSA
C'est pas la police qu'est-ce que cela vient faire là pour un pc de dev.
( parce que bon, si chaque machine coute 1000€ et qu'il y a 700 personnes dans la boite, 700 000 euros de matos, c'est pas "négligeable" )
700 personnes, c'est en gros 70 M€ de chiffres d'affaire en moyenne, voir 3x plus pour une banque. Donc bon… il faut savoir relativiser.
Concernant le reste du poste, tu devrait un peu te rappeler que le service IT est un productif, un truc nécessaire mais qui ne produit pas. Le dev est celui qui rapporte des sous à la boite, l'IT est à son service pas l'inverse !
" c'est aussi ridicule car on a réussi à bosser depuis des années avec du matos moins rapide."
C'est parfaitement faux pas rapport au besoin et à la taille des codes. En 2000, on ne trouvait des écrans 20" et des stations de travail que dans les entreprises. Aujourd'hui, un pc de gamer est plus puissant qu'un pc utilisé pour le développement.
"Et bien que ça coute que 700€ pour une personne, combien ça coute à l'échelle de la société ? "
Cela ne coute rien du tout, c'est une semaine de salaire. Sur 3 ans, tu perds largement plus d'une semaine de boulot à cause d'une machine trop faible.
"Et c'est pas des exemples que j'ai inventé. C'est des exemples que j'ai vécu."
Tu as raison pour la prod, mais ici il est question de PC de dev.
"Ou est ce que j'ai dit que ca va mieux? Je dit que c'est la meme chose, une gaussienne: majorite mediocre, et a peu pres autant de debiles que de tres doues. C'etait vrai en 95, 75 1875 et l'an 40."
Sauf qu'en 75, il y a avait 3x moins d'ingénieur formé qu'aujourd'hui et que leur salaire n'avait rien avoir non plus. Les meilleurs n’essayaient pas forcément d'aller dans d'autre métiers à la première occasion (chef, vente, marketing, finance…).
Il faut voir le boulot, j'ai déjà fait du dev confortable en Ocaml sur un atom. Mais pour du dev C++, cela commence à être chiant. Et du dev java sous eclipse, c'est juste une raison de suicide.
Je n'ai jamais vu de boite ou il ne fallait pas se battre pour voir un pc correct pour développer. Cela coute maximum 1 semaines de salaire, cela peut faire perdre des jours de boulot, mais c'est toujours à justifier. C'est hallucinant qu'un dev doivent justifier d'avoir un outil correct qu'il va utiliser 100% de son temps.
"En clair, les bornes des variables n'étaient pas vérifiés suite à l'introduction dans le code d'une levée des vérifications."
Oui, mais il y a avait un comportement associé qui ne correspondait à rien de voulu. Le langage peut aider quand le comportement doit être explicite, cela permet de voir un défaut de couverture par les tests par exemple. Au minimum, cela permet de mettre un mode dégradé en place.
"Effectivement, comme en plus en Ada, le case doit voir toutes les possibilités couvertes, j'aurais rien compris."
Le principe des variants est justement que tu ne les définit pas tous, à l'inverse des types sommes…
"C'est quoi une mémoire dans une boucle ?"
une variable modifiable. Une boucle-for explicite est facile à lire et facile de voir le problème, c'est beaucoup moins le cas d'intégrateur temporel (genre correcteur pid).
"La méthode la plus sûre reste l'emploi de méthodes formelles."
Les prouveurs n'étant pas reconnu par la DO, je ne vois pas comment tu peux dire ça. Il faudrait pour cela que quelqu'un en qualifie un, ce n'est pas gagné.
"Que proposes-tu ? Exemple simple : a += 1 provoque un overflow. Que comment souhaites-tu que cela soit traité ?"
Qu'à la compilation, il faut faire en sorte que le cas "overflow" soit traité. Ainsi cela pourra rentré dans les cas de couverture code pour les tests.
"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.
[^] # Re: développement n'est pas de la bureautique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Besoin d'arguments pour obtenir une station de travail sous GNU/Linux ?. Évalué à 2.
La technique, c'est sale.
"La première sécurité est la liberté"
[^] # Re: comprend pas
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Besoin d'arguments pour obtenir une station de travail sous GNU/Linux ?. Évalué à 2.
"nice" ne gère pas vraiment les IO, de plus, un processus de 13 Go avec 4 Go réelle doit prendre un temps de malade.
"La première sécurité est la liberté"
[^] # Re: comprend pas
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Besoin d'arguments pour obtenir une station de travail sous GNU/Linux ?. Évalué à 3.
Je crois que tu ne sais pas du tout de quoi tu parles. J'ai développé pendant 1 ans ou 2 ans, avec une machine avec 3/4 Go (windows 32 bits avec 4 Go physique). C'était juste un insupportable.
Un simple navigateur web prend 1 Go, les mails passent par là (chrome), avant c'était Lotus… Si tu veux un firefox de plus, c'est un Go de plus. Tu dev sous Eclipse, 1 Go. Tu utilises un word ou excel, c'est mini plusieurs centaines de Mo.
Donc, tu passes ton temps à fermer des applications pour bosser, et à les réouvrir.
Avec 8 Go, je suis maintenant tranquille sauf dans les cas extrèmes (1 eclipse de dev pour créer un autre eclipse de dev pour lancer le produit sous eclipse).
Et comme préciser ailleurs, je développe aussi sous un atom avec 2 Go de RAM avec Ocaml et Emacs.
"La première sécurité est la liberté"
[^] # Re: Droit d'auteur ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal GNU GPL et commercialisation : mauvaise compréhension des licences, l'exemple WPScan. Évalué à 3.
Non, la GPL n'impose justement pas de mettre la liste des auteurs, c'est une des grosses différences avec la BSD car ce n'est pas un truc qui passe à l'échelle.
"La première sécurité est la liberté"
[^] # Re: Sérieux?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Besoin d'arguments pour obtenir une station de travail sous GNU/Linux ?. Évalué à -1.
Et les boites veulent 5 ans de garanti car ils ne veulent pas changer le matos tous les 3 ans. Donc, ils payent plus chère tous les 5 ans, et on se traine des truc obsolètes pendant 2 ou 3 ans. Le suivi sur 5 ans n'est pas gratuit.
C'est pas la police qu'est-ce que cela vient faire là pour un pc de dev.
700 personnes, c'est en gros 70 M€ de chiffres d'affaire en moyenne, voir 3x plus pour une banque. Donc bon… il faut savoir relativiser.
Concernant le reste du poste, tu devrait un peu te rappeler que le service IT est un productif, un truc nécessaire mais qui ne produit pas. Le dev est celui qui rapporte des sous à la boite, l'IT est à son service pas l'inverse !
"La première sécurité est la liberté"
[^] # Re: comprend pas
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Besoin d'arguments pour obtenir une station de travail sous GNU/Linux ?. Évalué à 2.
Tous les I5 ne sont pas quadruple coeur, et la fréquence n'est pas la même non plus.
Et en général, le reste va avec 4Go maximum, et pas de ssd.
"La première sécurité est la liberté"
[^] # Re: comprend pas
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Besoin d'arguments pour obtenir une station de travail sous GNU/Linux ?. Évalué à 4.
C'est parfaitement faux pas rapport au besoin et à la taille des codes. En 2000, on ne trouvait des écrans 20" et des stations de travail que dans les entreprises. Aujourd'hui, un pc de gamer est plus puissant qu'un pc utilisé pour le développement.
Cela ne coute rien du tout, c'est une semaine de salaire. Sur 3 ans, tu perds largement plus d'une semaine de boulot à cause d'une machine trop faible.
Tu as raison pour la prod, mais ici il est question de PC de dev.
"La première sécurité est la liberté"
[^] # Re: développement n'est pas de la bureautique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Besoin d'arguments pour obtenir une station de travail sous GNU/Linux ?. Évalué à 5.
Sauf qu'en 75, il y a avait 3x moins d'ingénieur formé qu'aujourd'hui et que leur salaire n'avait rien avoir non plus. Les meilleurs n’essayaient pas forcément d'aller dans d'autre métiers à la première occasion (chef, vente, marketing, finance…).
"La première sécurité est la liberté"
[^] # Re: développement n'est pas de la bureautique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Besoin d'arguments pour obtenir une station de travail sous GNU/Linux ?. Évalué à 3.
Il faut voir le boulot, j'ai déjà fait du dev confortable en Ocaml sur un atom. Mais pour du dev C++, cela commence à être chiant. Et du dev java sous eclipse, c'est juste une raison de suicide.
"La première sécurité est la liberté"
[^] # Re: Sérieux?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Besoin d'arguments pour obtenir une station de travail sous GNU/Linux ?. Évalué à 6.
Je n'ai jamais vu de boite ou il ne fallait pas se battre pour voir un pc correct pour développer. Cela coute maximum 1 semaines de salaire, cela peut faire perdre des jours de boulot, mais c'est toujours à justifier. C'est hallucinant qu'un dev doivent justifier d'avoir un outil correct qu'il va utiliser 100% de son temps.
"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.
Rust est pensé par la fondation mozilla pour créer le futur de Firefox, donc bon.
C'est exactement ce que j'ai dit.
"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.
A moins d'avoir un typage des exceptions qui décore tes fonctions, tu es incapable de savoir si une fonction va être propre ou non.
"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.
Oui, mais il y a avait un comportement associé qui ne correspondait à rien de voulu. Le langage peut aider quand le comportement doit être explicite, cela permet de voir un défaut de couverture par les tests par exemple. Au minimum, cela permet de mettre un mode dégradé en place.
Le principe des variants est justement que tu ne les définit pas tous, à l'inverse des types sommes…
une variable modifiable. Une boucle-for explicite est facile à lire et facile de voir le problème, c'est beaucoup moins le cas d'intégrateur temporel (genre correcteur pid).
"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.
Les prouveurs n'étant pas reconnu par la DO, je ne vois pas comment tu peux dire ça. Il faudrait pour cela que quelqu'un en qualifie un, ce n'est pas gagné.
"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.
tu as une source ?
Qu'à la compilation, il faut faire en sorte que le cas "overflow" soit traité. Ainsi cela pourra rentré dans les cas de couverture code pour les tests.
"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.
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é"