IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Linux 4.3 passe en disponibilité générale


Sujet :

Linux

  1. #1
    Chroniqueur Actualités
    Avatar de Michael Guilloux
    Homme Profil pro
    Data Consultant
    Inscrit en
    Juillet 2013
    Messages
    2 888
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Data Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 2 888
    Points : 87 206
    Points
    87 206
    Billets dans le blog
    2
    Par défaut Linux 4.3 passe en disponibilité générale
    Linux 4.3 passe en disponibilité générale
    Après une nouvelle diatribe de Linus Torvalds sur un code qu’il a qualifié « de merde »

    La version stable de Linux 4.3 est généralement disponible après sept releases candidates (RC). Mais comme d’habitude, le « seigneur » de Linux a encore fait preuve de « tolérance zéro », après avoir découvert une sorte d’incompétence dans le travail des développeurs du noyau, quelques jours avant la sortie.

    Comme l’explique Linus Torvalds dans la liste de diffusion du noyau Linux (LKML), cette nouvelle version embarque un éventail de changements et améliorations. Il met particulièrement en évidence une mise à jour du code réseau et la correction d’un bogue du mode vm86. Linux 4.3 est arrivé avec moins d’incidents, à part le nouveau code dans net/ipv6/ip6_output.c que Linus a trouvé un peu plus éprouvant pour les nerfs. En effet, quelques jours avant la sortie officielle, Linus Torvalds n’a pas manqué de qualifier de merde, le nouveau code dit « amélioré ».

    Ci-dessous l'ancien code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mtu -= hlen + sizeof(struct frag_hdr);
    Ci-dessous le nouveau code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (overflow_usub(mtu, hlen + sizeof(struct frag_hdr), &mtu) ||
    mtu <= 7)
    goto fail_toobig;
    À propos du nouveau code, Linus s’indigne : « le code ci-dessus est de la merde, et il génère du code de merde. Il semble mauvais, et il n’y a aucune raison pour cela. » Torvalds critique le fait que ce code « utilise des trucs de fantaisie qui nécessitent un support pour un compilateur magique intégré », pour ne citer que cette seule critique. Sans indexer des personnes en particulier, il continue pour dire que quiconque croit qu’un tel code est lisible, efficace (même avec le support du compilateur magique), et particulièrement sûr, « est tout simplement incompétent et à côté de la plaque ». « Débarrassez-vous de cela. Et je ne veux plus jamais voir cette merde », a-t-il conclu en parlant du code. Il propose donc un nouveau code qu’il estime meilleur avec le même nombre de lignes, et qui « n’utilise pas de fonctions auxiliaires folles dont personne ne sait ce qu'elles font, et qui rend beaucoup plus clair ce qu’il fait. »

    Ci-dessous le code proposé par Linus Torvalds.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (mtu < hlen + sizeof(struct frag_hdr) + 8)
    goto fail_toobig;
    mtu -= hlen + sizeof(struct frag_hdr);
    La nouvelle version de Linux vient par ailleurs avec un support pour les graphiques fournis par les processeurs Skylake d’Intel et R9 Fury d’AMD. Le support pour le système de fichiers EXT3 a quant à lui disparu, sans trop de douleur pour les utilisateurs étant donné qu’il s’agit d’un sous-ensemble de EXT4. Linux 4.3 accorde également un intérêt particulier aux bureaux virtuels Linux avec un support OpenGL 3.3 pour VMware. On note non seulement des mises à jour de pilotes ainsi que de nouveaux pilotes, mais encore quelques autres corrections dans ARM.

    Comme à l’accoutumée, la fin du développement de cette version annonce également l’ouverture d’un nouveau cycle de développement, ici Linux 4.4. Si la version 4.3 n’est pas une version LTS (support à long terme), Linus Torvalds annonce à l’avance que Linux 4.4 en sera une.

    Sources : Sortie de Linux 4.3, LKML, Git Kernel.

    Et vous ?

    Que pensez-vous des changements et nouveautés dans Linux 4.3 et de la nouvelle critique de Linus Torvalds ?

    Voir aussi

    Forum Linux
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Points : 54
    Points
    54
    Par défaut
    Sincèrement je pense que j'aurais du mal à travailler avec un type pareil, mais son code est tout de même nettement plus lisible. Rien à voir

  3. #3
    Membre émérite

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2006
    Messages : 666
    Points : 2 817
    Points
    2 817
    Billets dans le blog
    1
    Par défaut
    Je suis d'accord avec Linus, le code en question est de la merde.

    Utiliser une fonction pour une simple comparaison, c'est nuire à la lisibilité. Cela oblige à aller rechercher le code source de la fonction, alors que le test écrit directement est plus clair et plus court. En plus de ça, cet appel de fonction prend un pointeur vers une variable, dont la valeur est ensuite également testée dans le même if : même si c'est légal cela reste confus et de plus cela peut empêcher certaines optimisations.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2002
    Messages
    2 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 790
    Points : 18 936
    Points
    18 936
    Par défaut
    Historiquement ca à toujours été difficile pour les personnes brillantes de travailler avec une bande de médiocres.
    Ne prenez pas la vie au sérieux, vous n'en sortirez pas vivant ...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 187
    Points : 434
    Points
    434
    Par défaut
    D'accord avec lui également. Ce genre de & dans ce contexte (un test) c'est un nid de bug infâme.

  6. #6
    Membre chevronné
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2013
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 485
    Points : 2 151
    Points
    2 151
    Par défaut
    Citation Envoyé par Michael Guilloux Voir le message
    Ci-dessous le nouveau code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (overflow_usub(mtu, hlen + sizeof(struct frag_hdr), &mtu) ||
    mtu <= 7)
    goto fail_toobig;
    ...
    Ci-dessous le code proposé par Linus Torvalds.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (mtu < hlen + sizeof(struct frag_hdr) + 8)
    goto fail_toobig;
    mtu -= hlen + sizeof(struct frag_hdr);
    Je trouve en effet aussi que le code de Linus est plus claire que le précédent.

    Je me permettrais quand même de rajouter 2 réserves (n'en déplaise à Linus):
    1. Qu'est ce que ce chiffre 8 ?
      L'age de ma nièce? le nombre de cartes de cœur dans un jeu de 32? Nombre d'octets minimal?
      En général, on évite de laisser ce genre de numéro magique dans un code et on le remplace par un constante (un "define" c'est bien en c++, c'est remplacé à la compilation) qui permet d'explicité la valeur.
    2. l'ordre d’évaluation
      A quoi est équivalent (mtu < hlen + sizeof(struct frag_hdr) + 8)?
      à (mtu < (hlen + sizeof(struct frag_hdr) + 8)) ou à ((mtu < hlen) + sizeof(struct frag_hdr) + 8)
      En c++, il me semble que le '+' est prioritaire sur le '<'.
      Ce n'est pas le cas de tout les langages, la précision permettrait de lever le doute et d'améliorer aussi la lisibilité.

    Comme quoi, on peut en dire sur juste 3 lignes de codes

    Et sinon, autre remarque: il serait bien que Linus prennent quand même des leçons de diplomatie, autant sur le font il a raison, autant sur la forme il a loupé sa communication.

  7. #7
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Philippines

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2005
    Messages : 244
    Points : 609
    Points
    609
    Par défaut
    Voici la version originale, je la trouve beaucoup moins violente pour les personnes, et il se focalise sur le code en lui meme. Et je suis d'accord avec lui en passant:

    Christ people. This is just sh*t

    .The conflict I get is due to stupid new gcc header file crap. But what makes me upset is that the crap is for completely bogus reasons.

    This is the old code in net/ipv6/ip6_output.c:

    mtu -= hlen + sizeof(struct frag_hdr);

    and this is the new “improved” code that uses fancy stuff that wants magical built-in compiler support and has silly wrapper functions for when it doesn’t exist:

    if (overflow_usub(mtu, hlen + sizeof(struct frag_hdr), &mtu) ||

    mtu <= 7)

    goto fail_toobig;

    and anybody who thinks that the above is (a) legible (b) efficient (even with the magical compiler support) (c) particularly safe is just incompetent and out to lunch.

    The above code is sh*t, and it generates shit code. It looks bad, and there’s no reason for it.

    The code could *easily* have been done with just a single and understandable conditional, and the compiler would actually have generated better code, and the code would look better and moreunderstandable. Why is this not

    if (mtu < hlen + sizeof(struct frag_hdr) + 8)

    goto fail_toobig;

    mtu -= hlen + sizeof(struct frag_hdr);

    which is the same number of lines, doesn’t use crazy helper functions that nobody knows what they do, and is much more obvious what it actually does. I guarantee that the second more obvious version is easier to read and understand. Does anybody really want to dispute this?

    Really. Give me *one* reason why it was written in that idiotic way with two different conditionals, and a shiny new nonstandard function that wants particular compiler support to generate even half-way sane code, and even then generates worse code? A shiny function that we have never ever needed anywhere else, and that is just compiler-masturbation.

    And yes, you still could have overflow issues if the whole “hlen +xyz” expression overflows, but quite frankly, the “overflow_usub()“ code had that too. So if you worry about that, then you damn well didn’t do the right thing to begin with.

    So I really see no reason for this kind of complete idiotic crap.

    Tell me why. Because I’m not pulling this kind of completely insane stuff that generates conflicts at rc7 time, and that seems to have absolutely no reason for being an idiotic unreadable mess.

    The code seems *designed* to use that new “overflow_usub()“ code. It seems to be an excuse to use that function.

    And it’s a f*cking bad excuse for that braindamage.

    I’m sorry, but we don’t add idiotic new interfaces like this for idiotic new code like that.

    Yes, yes, if this had stayed inside the network layer I would never have noticed. But since I *did* notice, I really don’t want to pull this. In fact, I want to make it clear to *everybody* that code like this is completely unacceptable. Anybody who thinks that code like this is “safe” and “secure” because it uses fancy overflow detection functions is so far out to lunch that it’s not even funny. All this kind of crap does is to make the code an unreadable mess with code that no sane person will ever really understand what it actually does.

    Get rid of it. And I don’t *ever* want to see that shit again.

    Linus

  8. #8
    MikeRowSoft
    Invité(e)
    Par défaut
    Je sais pas trop où c'est situé dans le code source, mais je crois que je vais surement lire le roman traitant de Frankenstein avant.
    Après tous l'O.S. utilise des registres cpu voir même à un core réservé, non ? ^^"

  9. #9
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut A propos de la forme de communication de Linus
    Moi je trouve qu'il a raison de s'exprimer de cette manière tant qu'il ne s'en prend pas à la personne qui a écrit le code directement.

    C'est ok de dire "T'as écrit un code de merde" mais pas "T'es qu'un con incapable d'écrire un code correct".

    En étant "brut", les remarques formulées marque l'esprit des gens et ils les retiennent. En étant mielleux, il y a 80% de chance que la même erreur soit reproduite.

    My 2 cents.
    Kropernic

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 97
    Points : 370
    Points
    370
    Par défaut
    Toute façon, venant d'un type qui utilise "goto"... Autant le premier code ne check rien, autant celui de Torvalds est une merde infâme.

  11. #11
    Membre chevronné Avatar de nirgal76
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 904
    Points : 2 123
    Points
    2 123
    Par défaut
    du "goto", du "+8" (chiffre magique !), quel code de merde (l'ancien n'était pas mieux cela dit, mais quand on critique, et de façon aussi crue, on essai de faire mieux)
    A mon taf, ça passe pas la revue de code.

  12. #12
    Membre habitué
    Profil pro
    Administrateur système
    Inscrit en
    Mai 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur système

    Informations forums :
    Inscription : Mai 2002
    Messages : 144
    Points : 159
    Points
    159
    Par défaut
    Sans être un crack en C/C++, je suis d'accord avec nirgal76 et robertledoux.

    A la première lecture, le goto m'a fait drôle et je ne m'attendais pas à ça de la part d'une sommité comme Linus.
    J'imagine la tête des profs qui rabâchent d'année en année à leurs étudiants que faire du goto est un sacrilège !!!
    Comme quoi...
    Si un jour on te reproche que ton travail n'est pas un travail de professionnel, dis-toi bien que l'Arche de Noé a été construite par des amateurs et le Titanic par des professionnels...

  13. #13
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Je mettrais ma main à couper que c'est exécuté en mode kernel.

    Dans ce cas là, un goto est parfaitement acceptable, ce qui ne veut pas dire qu'il faut en abuser et l'utiliser n'importe comment.


    Certains codes sont contraints et on se retrouve obligé à faire du code moins portables, à réduire la lisibilité du code pour des problèmes de performances, etc.
    En mode kernel, les goto sont parfois la meilleure chose à faire, pour les performances, mais aussi parfois pour la lisibilité et la sécurité du code. Ce n'est pas pour rien que les goto sont assez fréquents dans ce genre de code.


    Mais c'est un contexte particulier et contraint.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Points : 22
    Points
    22
    Par défaut Non ?! c'est dans le noyaux
    La blague,

    Qui code encore comme çà à notre époque ? Des chiffres magiques, des goto.

    Le jour ou je code comme de cette manière, je m'auto-licencie.

  15. #15
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Yop !

    Citation Envoyé par robertledoux Voir le message
    Toute façon, venant d'un type qui utilise "goto"...
    Citation Envoyé par nirgal76 Voir le message
    du "goto",
    Citation Envoyé par FranT Voir le message
    A la première lecture, le goto m'a fait drôle et je ne m'attendais pas à ça de la part d'une sommité comme Linus.
    J'imagine la tête des profs qui rabâchent d'année en année à leurs étudiants que faire du goto est un sacrilège !!!
    Comme quoi...
    Citation Envoyé par webtb Voir le message
    des goto.
    Ça risque de partir en troll HS mais ça m'énerve, à force, cette discrimination du goto...

    en Delphi/Lazarus/Pascal tout le monde va applaudir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if x => CONST then proc_grandX;
    // suite avec x < à CONST
    et là tout le monde va hurler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if x => CONST goto proc_grandX;
    // suite avec x < à CONST
    Et elle est où la différence ?
    Bon, syntaxiquement parlant, il faut un then dans mon second exemple sinon le compilo va crier très fort, mais c'est du pseudocode et c'est pour illustrer.

    Merci de m'éclairer.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  16. #16
    Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2015
    Messages : 28
    Points : 69
    Points
    69
    Par défaut
    Ce que je trouve le plus insultant, c'est pas la remarque, le but du core est d'être optimisé aux petits oignons, et Linus est garant de cela, s'il manque un peu de tact (ok beaucoup), pour ceux qui utilisent des modules temps réel, les ms sont important. Et pour ceux qui pensent savoir mieux coder les micro instructions que l'équipe de Torvald, je leur dis faites un fork sans goto et pour le coup on verra qui est ridicule, et je les invite à regarder dans le code compilé ou interprété de leur langage de programmation... Pour ma part je suis entièrement en accord avec Jipété.
    J'allais oublié pour le +8, il faut voir le contexte et le scope, mais si c'est un nombre constant pourquoi pas, peut être un minimum garanti pour mtu dans le cas où les 2 autres valent 0... ce qui équivaudrait le mtu<7 du premier check

  17. #17
    Membre habitué
    Profil pro
    Administrateur système
    Inscrit en
    Mai 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur système

    Informations forums :
    Inscription : Mai 2002
    Messages : 144
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par Neckara Voir le message
    En mode kernel, les goto sont parfois la meilleure chose à faire, pour les performances, mais aussi parfois pour la lisibilité et la sécurité du code. Ce n'est pas pour rien que les goto sont assez fréquents dans ce genre de code.
    Mais c'est un contexte particulier et contraint.
    Pour ma part, pas de troll du moment qu'on m'explique. Je me doute bien que Linus n'est pas arrivé là où il est par hasard. Et mon "comme quoi..." voulait dire "Comme quoi, il y a des exceptions à toute règle".

    Merci Neckara pour cette explication.
    Si un jour on te reproche que ton travail n'est pas un travail de professionnel, dis-toi bien que l'Arche de Noé a été construite par des amateurs et le Titanic par des professionnels...

  18. #18
    Membre éprouvé
    Avatar de octal
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    441
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 441
    Points : 957
    Points
    957
    Par défaut
    Citation Envoyé par yonisolo Voir le message
    Ce que je trouve le plus insultant, c'est pas la remarque, le but du core est d'être optimisé aux petits oignons, et Linus est garant de cela, s'il manque un peu de tact (ok beaucoup), pour ceux qui utilisent des modules temps réel, les ms sont important. Et pour ceux qui pensent savoir mieux coder les micro instructions que l'équipe de Torvald, je leur dis faites un fork sans goto et pour le coup on verra qui est ridicule, et je les invite à regarder dans le code compilé ou interprété de leur langage de programmation... Pour ma part je suis entièrement en accord avec Jipété.
    J'allais oublié pour le +8, il faut voir le contexte et le scope, mais si c'est un nombre constant pourquoi pas, peut être un minimum garanti pour mtu dans le cas où les 2 autres valent 0... ce qui équivaudrait le mtu<7 du premier check
    Entièrement d'accords, il faudra toujours vérifier le code générer pour comprendre l'utilité d'un goto "bien placé" comparativement à un grand IF ou appel de fonction.
    Cela dit, je suis particulièrement contre les constantes magiques dans le code. Même, si selon le context le "8" parait évident, pour moi il faudra utiliser une constante ou un DEFINE (les deux sont traités différement par divers compilo C en fonction de la platforme, mais généralement le code optimisé les utilise toujours pour faire de l'adressage direct litéral).
    La seule constante magique selon moi qui pourait être toléré est en général le "2" quand on montre clairement que l'on divise par 2 ou multiplie par 2, le nom des variables utilisées dans les expressions servant à faire ressortir le context (dimension = Rayon * 2. Les autres constantes magiques sont complètement à banir.
    http://www.pocketmt.com GLCD Font Creator home site.

  19. #19
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    J'ai fait un test tout bête :

    J'ai saisi ce qui suit dans Geany (suis sous Linux) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #include <stdio.h>
     
    int main(int argc, char **argv)
    {
    	char c;   
     
            printf ("Tapez une lettre : ");
            c=getchar();
     
            if (c=='s') goto sortie;
            printf ("Hello, World!\n");
            return 0;
     
    sortie:		
            printf ("Sortie\n");
            return 0;
    }
    L'ai enregistré sous elowizgoto.c (wiz comme avec goto); ai appuyé sur F9 et ça m'a généré un binaire de 5139 octets.

    Ensuite j'ai fait une petie modif, comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            if (c!='s') {
            printf ("Hello, World!\n");
            return 0;
    		}
     
            printf ("Sortie\n");
            return 0;
    }
    L'ai enregistré sous elowssgoto.c (ssgoto comme sans goto), ai appuyé sur F9 et le binaire pèse le même poids que l'autre.

    J'ai regardé à la va-vite (je n'ai pas les compétences pour aller plus loin, et surtout, je ne cause pas assembleur en hexa pur ) avec un éditeur hexa, et j'ai bien noté une ou deux petites différences, genre un octet qui contient 4B ici et 4C là, ce genre de truc, ça doit être des sauts jump_if_zero vs jump_if_non_zero, àmha.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  20. #20
    Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2015
    Messages : 28
    Points : 69
    Points
    69
    Par défaut
    J'avais déjà noté ça quand je programmais en Basic, selon la taille du bloc d'instruction un if ou un goto revient au même, le goto aura du sens sur un code exécuté plus d'une fois pour du code modulaire

Discussions similaires

  1. Google annonce la disponibilité générale d'App Engine pour PHP
    Par Stéphane le calme dans le forum Cloud Computing
    Réponses: 3
    Dernier message: 10/07/2015, 15h34
  2. Réponses: 0
    Dernier message: 20/02/2015, 10h19
  3. Microsoft annonce la disponibilité générale du service Azure RemoteApp
    Par Stéphane le calme dans le forum Microsoft Azure
    Réponses: 2
    Dernier message: 05/12/2014, 16h36
  4. Google annonce la disponibilité générale de son service Cloud SQL
    Par Stéphane le calme dans le forum Cloud Computing
    Réponses: 0
    Dernier message: 21/02/2014, 11h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo