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

C Discussion :

De l'utilité et du coût des normes [Débat]


Sujet :

C

  1. #1
    Membre émérite
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Points : 2 464
    Points
    2 464
    Par défaut De l'utilité et du coût des normes
    Je ne comprendrais jamais le concept de standard à accès payant....




    ----------
    Les éléments de cette discussion (jusqu'à #89) ont été extraits de la discussion annonçant la parution de la norme C11.
    Ils portent sur les questions du rôle, de l'utilité, de l'usage, du financement et des coûts des normes dans un cadre plus général que celui de la norme C11 et ont donc été regroupés dans cette nouvelle discussion.

    diogene

    ----------

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Citation Envoyé par Franck Dernoncourt Voir le message
    Je ne comprendrais jamais le concept de standard à accès payant....
    Surtout à ce prix. À croire que les organismes de normalisation estiment que seuls les industriels multinationaux sont concernés par la programmation…

  3. #3
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2004
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2004
    Messages : 515
    Points : 705
    Points
    705
    Par défaut
    On peut trouver des drafts gratuites qui ne sont pas loin des versions finales

    http://www.open-std.org/jtc1/sc22/wg...docs/n1570.pdf

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 214
    Points : 310
    Points
    310
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Surtout à ce prix. À croire que les organismes de normalisation estiment que seuls les industriels multinationaux sont concernés par la programmation…
    À croire que soit ta boite à faible moyens, soit toi à titre perso, tu désires mettre à jour ton compilateur C selon cette norme C11 ?

    Pour un tel projet, c'est quoi 300 € ?

    Et puis on ne va pas troller en fin d'année sur le modèle économique des organismes certificateurs nationaux et internationaux (AFNOR / ISO) !


    Pour ceux qui sont en dehors d'un tel projet, les documentations des compilateurs mis à jour, et une mise à jour du K&R arriveront bien assez tôt.

    Et puis comme il a été dit, si c'est juste pour en savoir plus, Davidbrcz a donné un lien Wiki, qui contient quelques liens vers le dernier draft.


    Pour l'application directe de cette nouvelle, l'utilisation de compilateurs suivant cette norme C11, des infos sur son intégration dans les compilateurs les plus populaires ?

    Le projet http://code.google.com/p/c11/ est vierge.

    Quelqu'un aurait un historique de l'implémentation et l'utilisation du C99 ? http://en.wikipedia.org/wiki/C99#Implementations indique très peu d'implémentations complète de la norme, cela risque d'être pareil pour C11, n'est-ce pas ?

    À votre avis, à quand les premiers programmes en C11 ?


    Je ne comprendrais jamais le concept de standard à accès payant....
    C'est le modèle travail = rémunération.

    Moi ce que je ne comprendrais jamais, c'est le concept de travail en apparence gratuit (télévision privée sans redevance (TF1, M6, NRJ12...), sites internet gratuit (Google, Facebook...), journaux gratuits, distributeurs de systèmes d'exploitation gratuit (distributions Linux rattachées directement à des entreprises). Et pourtant il n'y a pas de philanthropie, soit on donne quelque chose, soit l'argent vient d'ailleurs.

  5. #5
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 678
    Points
    13 678
    Billets dans le blog
    1
    Par défaut
    Joker-eph : merci !


    À croire que soit ta boite à faible moyens, soit toi à titre perso, tu désires mettre à jour ton compilateur C selon cette norme C11 ?
    Soit tu es un programmeur intéressé par la norme et le comportement exact du langage que tu utilises.... Ça parait si improbable que cela ?

  6. #6
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Soit tu es un programmeur intéressé par la norme et le comportement exact du langage que tu utilises.... Ça parait si improbable que cela ?
    A part pour ta culture personnelle, ca ne sert a rien.
    Le plus important c'est comment ton compilateur interprète la norme

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Citation Envoyé par Jérôme_C Voir le message
    À croire que soit ta boite à faible moyens, soit toi à titre perso, tu désires mettre à jour ton compilateur C selon cette norme C11 ?

    Pour un tel projet, c'est quoi 300 € ?
    … c'est beaucoup !

    La norme ne sert pas seulement à mettre un compilo à jour. Elle est censée être suivie par tout programmeur professionnel dans ce langage, voire même amateur averti.


    C'est le modèle travail = rémunération.
    Ce n'est pas comparable. Il s'agit d'une norme qui, par définition, a vocation à être en principe suivie par tous. C'est vrai en programmation, ça l'est encore plus quand il s'agit de sécurité. Par exemple, la C15-100, si l'on veut faire des travaux d'électricité chez soi. Qu'il y ait une somme forfaitaire pour les frais de fonctionnement et d'édition, je veux bien, mais pas à ce niveau.

    Dans le cas présent, c'est comme si on te faisait payer 300 € la dernière copie du journal officiel. Et même dans le cadre d'un travail purement original et privé, tu ne paierais pas non plus cette somme pour un ouvrage, même édité sur papier.


    Moi ce que je ne comprendrais jamais, c'est le concept de travail en apparence gratuit (télévision privée sans redevance (TF1, M6, NRJ12...), sites internet gratuit (Google, Facebook...), journaux gratuits (distributeurs de systèmes d'exploitation gratuit (distributions Linux rattachées directement à des entreprises). Et pourtant il n'y a pas de philanthropie, soit on donne quelque chose, soit l'argent vient d'ailleurs.
    Pour les journaux papier et la télévision → Pub. Et ça marche très bien depuis plus de 30 ans.

    Pour les distributions Linux et autres, la majorité de la « marchandise » est écrite par la communauté, chaque acteur écrivant d'abord pour lui-même, pour la bonne raison qu'elle n'a pas vocation à être vendue en elle-même ni même spécialement échangée contre autre chose. C'est un patrimoine au même titre que l'est l'édifice scientifique.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 214
    Points : 310
    Points
    310
    Par défaut
    Dans une librairie j'ai vu il y a quelques temps un ouvrage de référence pour un collègue mécanicien, ce n'était pas http://www.amazon.com/dp/087170496X mais c'était bien cet ordre de prix, plusieurs centaines d'euros.


    Dans le cas présent, c'est comme si on te faisait payer 300 € la dernière copie du journal officiel.
    D'accord, tu lis tous les jours le journal officiel pour te tenir au courant de l'évolution du droit français.

    Je ne suis vraiment pas du même monde, je vais plutôt consulter des sources d'informations qui me sont destinées, informations générales, associations de consommateurs, sites spécialisé dans le domaine d'intérêt concerné. Je n'ai jamais lu aucun compte-rendu de débat parlementaire ou bien le texte de la loi ou du décret d'application autour d'Hadopi, et pourtant j'ai l'impression d'être au courant. Aurais-je dû aller ouvrir le Journal Officiel pour m'informer sur Hadopi ? (Exemple en passant)

    Par exemple, la C15-100, si l'on veut faire des travaux d'électricité chez soi.
    Par curiosité je vais voir ce que ça donne sur le site de l'AFNOR :
    - Toujours une normes à plus de 300 €
    - Une série de fiche d'interprétation gratuites.

    Je crois bien que tout l'esprit de la norme est là, jamais l'AFNOR pense qu'un particulier va acheter une norme pour un projet y faisant référence.

  9. #9
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 678
    Points
    13 678
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    A part pour ta culture personnelle, ca ne sert a rien.
    Le plus important c'est comment ton compilateur interprète la norme
    Pardon ? Connaitre le comportement exact du langage ne sert à rien ??

    Citation Envoyé par Obsidian
    La norme ne sert pas seulement à mettre un compilo à jour. Elle est censée être suivie par tout programmeur professionnel dans ce langage, voire même amateur averti.
    Tout est dit

  10. #10
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Franck Dernoncourt Voir le message
    Je ne comprendrais jamais le concept de standard à accès payant....
    Et tu veux faire payer qui à la place? L'AFNOR a pour le moment 1/3 de son budget qui provient de la vente et je parie que c'est l'activité de normalisation qui est subventionnée par les autres plutôt que l'inverse.

    Une alternative choisie par l'ECMA et le W3C est de faire payer plus cher ceux qui veulent participer à l'élaboration des normes... je ne suis pas sûr que ce soit mieux. (Les tarifs sont progressifs en fonction du CA, de mémoire l'AFNOR s'arrête où l'ECMA commence)
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 214
    Points : 310
    Points
    310
    Par défaut
    http://www.w3.org/standards/faq#std :
    W3C publishes documents that define Web technologies. These documents follow a process designed to promote consensus, fairness, public accountability, and quality. At the end of this process, W3C publishes Recommendations, which are considered Web standards.

  12. #12
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Pardon ? Connaitre le comportement exact du langage ne sert à rien ??
    Si ton compilo ne respecte pas strictement la norme, non ca ne sert à rien!

    Si je prends l'exemple de la machine virtuelle .Net, il y a des instructions prévues dans le bytecode mais qui sont inaccessibles car aucun compilateur (C# ou VB.Net) ne compile vers elles. Alors c'est bien pour ma culture personelle mais d'un point de vue utilité ca me sert à rien car de toute facon mon compilo ne le prend pas en charge.

    En droit c'est la même chose: il y a d'un côté les textes de loi et de l'autre la jurisprudence.

    Pour résumer il faut connaitre l'implémentation de la norme par son compilateur et pas la norme théorique.

  13. #13
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 678
    Points
    13 678
    Billets dans le blog
    1
    Par défaut
    Ce n'est pas la même chose de dire "lire la norme n'est que de la culture personnelle" et "il faut savoir si son compilateur respecte la norme" ! Et tu as à ce moment là tout à fait raison : si ton compilateur ne la respecte pas, ce n'est pas vraiment la peine de la lire.....sauf les parties respectées !

    Ouvre par exemple la norme C99. Cette norme précise bien tout ce que doit respecter le compilateur. En conséquence, mon compilateur respectant le standard C99 fait tout ce qu'il y est écrit. Ou alors son implémentation est partielle et dans ce cas je ne dis pas que le compilateur respecte la norme. Non ?

    Je ne dirai rien sur .NET, je n'y connais rien.

    Tu parles de loi et de jurisprudence... Ne serait-ce pas plutôt là un parallèle avec une recommandation plutôt qu'avec une norme ? Une recommandation est "interprétable", ou du moins tu peux l'implémenter de plusieurs façons pour s'en approcher et en être plus ou moins proche. Une norme, tu la respectes ou tu ne la respectes pas, c'est binaire. Mais j'ai peut-être tout faux

  14. #14
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Une norme, c'est aussi un enjeu commercial.
    J'imagine bien que la société qui va sortir le premier compilateur correspondant à cette norme aura un produit attractif.
    Il est même probable qu'ils aient participé à la création de cette norme.

    D'ailleurs la "norme" pour Java les JRS, c'est la même chose. C'est des sociétés qui en ont soient le besoin, soit un intérêt.
    Même si il n'y a pas que des sociétés...
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  15. #15
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Lire la norme n'est pas essentiel seulement pour programmer un compilateur mais ça l'est également pour le programmeur amateur ou professionnel.

    Par exemple, la norme décrit exactement la manière dont les expressions sont traitées et dans quel ordre. Elle explique également la notion de "point de séquence", qui est à l'origine de bugs monstrueux lorsqu'on n'a justement pas connaissance de toutes ces subtilités du langage.
    Elle explique aussi comment sont castées les variables, dans quel ordre, de quelle manière, dans tel ou tel contexte.

    Grâce à la norme, il est donc possible de savoir si le code écrit a un comportement indéfini, ou défini par l'implémentation, etc.

    Aucun livre sur le C ne peut tout aborder, et encore moins toutes les subtilités du langage. Ca reste plutôt sommaire.

    Lire la norme est donc capital pour bien maitriser le fonctionnement du langage et connaître toutes ses subtilités (qui sont parfois bien compliquées à comprendre, d'ailleurs). De nombreux bugs existent à cause justement du manque de connaissance exacte concernant la manière dont sont évaluées les expressions, ce qui peut provoquer des effets de bord, compliqués à détecter par un débutant voire une personne ayant pourtant un bon niveau.

    Heureusement qu'on trouve des drafts... car vu le prix... ouch

  16. #16
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Citation Envoyé par jeroman Voir le message
    Lire la norme n'est pas essentiel seulement pour programmer un compilateur mais ça l'est également pour le programmeur amateur ou professionnel.

    Par exemple, la norme décrit exactement la manière dont les expressions sont traitées et dans quel ordre. Elle explique également la notion de "point de séquence", qui est à l'origine de bugs monstrueux lorsqu'on n'a justement pas connaissance de toutes ces subtilités du langage.
    Elle explique aussi comment sont castées les variables, dans quel ordre, de quelle manière, dans tel ou tel contexte.

    Grâce à la norme, il est donc possible de savoir si le code écrit a un comportement indéfini, ou défini par l'implémentation, etc.

    Aucun livre sur le C ne peut tout aborder, et encore moins toutes les subtilités du langage. Ca reste plutôt sommaire.

    Lire la norme est donc capital pour bien maitriser le fonctionnement du langage et connaître toutes ses subtilités (qui sont parfois bien compliquées à comprendre, d'ailleurs). De nombreux bugs existent à cause justement du manque de connaissance exacte concernant la manière dont sont évaluées les expressions, ce qui peut provoquer des effets de bord, compliqués à détecter par un débutant voire une personne ayant pourtant un bon niveau.

    Heureusement qu'on trouve des drafts... car vu le prix... ouch
    C'est bien joli ca, mais encore faut il avoir un compilateur qui respecte la norme à 100%
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  17. #17
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    C'est bien joli ca, mais encore faut il avoir un compilateur qui respecte la norme à 100%
    Enfin quelqu'un de pragmatique

    Si on regarde le web, y'a un standard HTML et pourtant tous les navigateurs ne l'implémentent de la même manière. Pour avoir un site correct, il faut vérifier sur plusieurs plateformes.

  18. #18
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par jeroman Voir le message
    Lire la norme n'est pas essentiel seulement pour programmer un compilateur mais ça l'est également pour le programmeur amateur ou professionnel.
    Mince. La plupart des programmeurs professionnels que je connais ne l'ont pas fait. Et je ne les juge pas incompétents à cause de ça, loin de là.

    Les normes du C et du C++ peuvent servir de référence au programmeur pour la partie bibliothèque, mais l'info est accessible ailleurs. Pour la partie langage par contre... Surtout pour ce qui n'est pas couvert dans les bouquins de référence, il y a trop de choses qui ne sont que déductibles comme conséquence des règles sans jamais explicitées pour être utile comme référence. La norme peut être utile à ceux qui veulent être à la pointe et apprendre avant que les livres de référence ne paraissent. Mais les documents introduisant ces modifications sont plus utiles -- ils expliquent aussi l'optique dans laquelle ça a été conçu.

    Sans compter qu'être à la limite de ses connaissances ou d'utiliser les subtilités du langage -- si on a besoin de vérifier dans la norme, c'est bien là qu'on est -- dans le boulot, c'est pas réellement conseillé.

    Sans compter qu'en pratique on a besoin d'un tas de choses qui ne sont garantie par la norme. J'ai connu des légalistes qui refusaient d'admettre que toutes les machines qui les intéressaient avaient des int sur 32 bits -- quand on de toute façon besoin de 1 G de mémoire, on ne portera pas sur un PDP11 -- et donc utilisaient des long quasiment partout. Quand ils ont vu ce que ça leur coûtait sur des machines LP64, ils en sont revenus.

    Je suis familier (plus précisément je l'ai été pour certaines) avec les normes de 6 langages. Les seules qui m'ont été utiles professionnellement, c'est les deux des langages dont j'ai travaillé sur une implémentation. Les autres, c'est plus la marque d'un intérêt pour les langages en général qu'une nécessité. Cette familiarité m'a peut-être donné une compréhension plus profonde du langage, m'a certainement permis de comprendre comment certaines absurdités apparentes n'étaient que la conséquence imprévue de choix logiques dans leur contexte, mais ce n'est pas à un niveau essentiel pour le programmeur, même professionnel, ce n'est même pas une chose importante. Ce l'est peut-être pour être un expert sur le langage. Mais l'expert est avant tout celui qui sait comment éviter d'avoir besoin de son expertise.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  19. #19
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    C'est bien joli ca, mais encore faut il avoir un compilateur qui respecte la norme à 100%
    Pour avoir un compilateur qui respecte la norme à 100 %, il faut encore qu'elle soit parue. Il est donc normal que le document en lui même soit antérieur à tous les compilateurs qui la respecte.

    Ensuite, un compilo est rarement écrit par une personne seule dans un bureau d'une grande entreprise. Ce sont des dizaines, voire des centaines, de collaborateurs œuvrant ensemble qui doivent chacun disposer de leur copie de cette norme. S'il avait fallu obligatoirement lier cela à une activité lucrative, on n'aurait jamais eu GCC, par exemple.

    Enfin, au bout d'un moment, les compilateurs respectent effectivement la norme et le problème redevient le même : le compilateur étant réputé 100 % conforme, il reste toujours aussi difficile pour un programmeur de se procurer le document. Et les normes C en sont justement un très bon exemple. C89, ou même C99 (douze ans déjà).

    Citation Envoyé par Nathanael Marchand Voir le message
    Enfin quelqu'un de pragmatique Si on regarde le web, y'a un standard HTML et pourtant tous les navigateurs ne l'implémentent de la même manière. Pour avoir un site correct, il faut vérifier sur plusieurs plateformes.
    C'est justement le propre d'une norme d'établir des règles considérées comme toujours vraies au milieu de ce genre de flou artistique.

    Le cas d'HTML est à la fois « le mauvais exemple » en la matière et un cas de figure intéressant à étudier. D'abord, le W3C n'émet que des « recommandations », même si on serait nombreux à aimer qu'elles deviennent de réels standards. Ensuite, avec tout le soin apporté à certaines d'entre elles, notamment les spécifications C.S.S., il y a encore des sections ambiguës, alors que les éliminer est l'un des principaux travaux d'une norme : soit un comportement clair doit être établi, soit il doit être marqué explicitement « indéfini ».

    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Mince. La plupart des programmeurs professionnels que je connais ne l'ont pas. Et je ne les juge pas incompétents à cause de ça, loin de là.
    Personne n'a dit cela non plus. Ce sont deux choses distinctes et très différentes. Pour le reste, c'est ce que j'ai longtemps cru aussi et pourtant, aujourd'hui, je ne programmerais plus en C sans la norme sous le coude. Et pourtant, je ne l'ai découvert qu'en arrivant sur Développez, comme j'en témoignais ici.

    Ça ne veut pas dire non plus qu'il faut l'apprendre par cœur et entier, comme on fait sa médecine, avant d'écrire sa première ligne de code, et heureusement. Mais il faut pouvoir s'y référer à tout moment en cas de besoin.

    Par exemple : comment est résolu le test « a == b; » en C, lorsque « a » et « b » sont de types différents ?
    • Est-ce « b » est transtypé vers le type de « a » comme s'il s'agissait d'une affectation ?
    • Est-ce que les deux valeurs sont transtypées vers le plus « faible » des deux types ?
    • Est-ce que les deux valeurs sont transtypées vers le plus « fort » des deux types ?
    • Autre ?

    Ce n'est pas du tout implicite et c'est pourtant très important car, selon la situation, ce test peut se révéler vrai dans un cas et faux dans un autre.

    Je n'ai vu que très peu d'ouvrages détaillant clairement ce point et c'est pourtant loin d'être ce qu'il y a de plus subtil en langage C (je dirais même que c'est presqu'élémentaire).

    C'est déjà compliqué de faire du code portable à travers les différentes machines. S'il faut en plus faire du code qui soit à la fois portable entre les machines et les compilateurs, la complexité croît au carré et on ne s'en sort plus. Et même en se cantonnant à une seule architecture, s'il s'avère que ce cas est indéfini par la norme et que le programmeur l'ignore, alors le résultat peut changer d'une version d'un même compilateur à l'autre.

    Autre exemple : comment sont codés les nombres à virgule flottante ? À la seule discrétion du compilo ou selon un format établi ? Les deux cas se valent mais doivent quand même tous deux être établis de façon claire. En l'occurrence, C suit le format IEEE-754. Ce n'est pas le cas de tous les langages, ni de toutes les machines. Le savoir permet de connaître immédiatement les biais introduits dans les calculs avec ces types.

    Pour finir, la normalisation ISO du langage C n'a pas seulement vocation à définir un « label de qualité », de la même façon qu'une entreprise est libre de suivre ou non les guidelines d'ISO 9001, par exemple. Elle a surtout vocation à définir clairement ce que doit être le langage C.

    Mais si une norme est à la fois optionnelle, payante en tant qu'œuvre intellectuelle (voire sous le coup du droit d'auteur), à accès restreint et proposée en tant que service ou comme une ressource apportant uniquement de la valeur ajoutée à un produit, alors ce n'est pas une norme, même si c'est un travail de très bonne qualité.

  20. #20
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Enfin, au bout d'un moment, les compilateurs respectent effectivement la norme et le problème redevient le même : le compilateur étant réputé 100 % conforme, il reste toujours aussi difficile pour un programmeur de se procurer le document. Et les normes C en sont justement un très bon exemple. C89, ou même C99 (douze ans déjà).
    IL est facile de se procurer ces documents. Tu peux dire coûteux à la rigueur (et encore, n'importe quel bouquin de référence fait de suite 60 € ; et si on compare par rapport au coût en temps qu'il faut passer pour en faire quelque chose, c'est pas grand chose), mais l'accès est aisé.

    C'est justement le propre d'une norme d'établir des règles considérées comme toujours vraies au milieu de ce genre de flou artistique.

    Le cas d'HTML est à la fois « le mauvais exemple » en la matière et un cas de figure intéressant à étudier. D'abord, le W3C n'émet que des « recommandations », même si on serait nombreux à aimer qu'elles deviennent de réels standards. Ensuite, avec tout le soin apporté à certaines d'entre elles, notamment les spécifications C.S.S.,
    Que tu appelles ces documents "norme", "standard" ou "recommandation", ils sont établis par des processus ne différant pas fondamentalement (un coûte plus aux utilisateurs, l'autres aux participants; l'un est plus lent et plus posé, l'autre plus rapide et plus réactif). Je ne suis pas sûr que le processus ISO améliorerait tant que ça les corner case mal décrit -- ce serait après tout les mêmes experts avec les mêmes préjugés. Et je ne vois surtout pas en quoi un sceau ISO améliorerait l'interopérabilité. Les normes ISO sont ignorées tout aussi bien que les recommandations du W3C (c'est quoi le dernier état sur le support de C99 par Microsoft?)

    il y a encore des sections ambiguës, alors que les éliminer est l'un des principaux travaux d'une norme : soit un comportement clair doit être établi, soit il doit être marqué explicitement « indéfini ».
    Tu as lu la norme C? Un comportement peu être indéfini simplement par absence de définition. Et c'est une des difficultés principales, s'assurer que ce qui n'est pas défini à l'endroit logique ne l'est pas ailleurs ou par conséquence d'autres règles. Et ça nécessite donc une connaissance assez bonne de ce qui peut intervenir. Dans les mots de C90

    If a “shall” or “shall not”, requirement that appears outside of a constraint is violated, the behavior is undefined. Undefined behavior is otherwise indicated in this International Standard by the words “undefined behavior” or by the omission of any explicit definition of behavior. There is no difference in emphasis among these three; they all describe “behavior that is undefined.”
    Personne n'a dit cela non plus. Ce sont deux choses distinctes et très différentes.
    C'est pas moi qui ai écrit que c'était essentiel de l'avoir fait. Un professionel qui n'a pas fait quelque chose d'essentiel (et d'essentiel même pour des amateurs) doit avoir de gros manques et est donc incompétant. Ou alors ce n'est pas si essentiel que ça.


    Pour le reste, c'est ce que j'ai longtemps cru aussi et pourtant, aujourd'hui, je ne programmerais plus en C sans la norme sous le coude.
    Je l'ai. Elle ne me sert que dans une activité d'expert. Et bien trop souvent pour trouver les citations prouvant à quelqu'un que sa lecture de la norme était incomplète et qu'elle disait le contraire de ce qu'elle voulait dire.

    Le problème est que plus on cherche à être une définition complète, moins on est lisible et compréhensible, plus on a besoin d'une connaissance complète de la chose pour la comprendre.

    Par exemple : comment est résolu le test « a == b; » en C, lorsque « a » et « b » sont de types différents ?
    Simple, promotion vers le type le plus grand comme tout les opérateurs binaires. Éviter de mélanger signé et non signé, il y a un comportement bien défini mais trop souvent surprenant même pour ceux qui le connaissent bien. Ça devrait se trouver dans n'importe quel bon bouquin d'apprentissage. Un bouquin plus avancé peut décrire les régles de mélange entre signé et non signé.

    Je n'ai vu que très peu d'ouvrages détaillant clairement ce point et c'est pourtant loin d'être ce qu'il y a de plus subtil en langage C (je dirais même que c'est presqu'élémentaire).
    K&R p. 44 de l'édition que j'ai ici me convient bien.

    Et même en se cantonnant à une seule architecture, s'il s'avère que ce cas est indéfini par la norme et que le programmeur l'ignore, alors le résultat peut changer d'une version d'un même compilateur à l'autre.
    Il est important de rester clairement dans les limites du bien défini, nous sommes d'accord. Ça ne nécessite pas de connaître en détail la frontière fractale entre le défini et l'indéfini.

    Autre exemple : comment sont codés les nombres à virgule flottante ? À la seule discrétion du compilo ou selon un format établi ? Les deux cas se valent mais doivent quand même tous deux être établis de façon claire. En l'occurrence, C suit le format IEEE-754.
    - C90 n'exige pas IEEE-754
    - C99 non plus, mais il y a un moyen pour une implémentation d'indiquer qu'elle le fait (définir __STDC_IEC_559__) et une annexe décrivant alors les rapport entre les deux normes,
    - C11, même situation que C99.

    Mais si une norme est à la fois optionnelle, payante en tant qu'œuvre intellectuelle (voire sous le coup du droit d'auteur), à accès restreint et proposée en tant que service ou comme une ressource apportant uniquement de la valeur ajoutée à un produit, alors ce n'est pas une norme, même si c'est un travail de très bonne qualité.
    Je comprends pas.

    En passant, on ne m'a toujours pas dit qui il faut faire payer à la place de l'utisateur final. À nouveau, réduire leur coût — surtout en ayant la position que tu as sur une normalisation en dehors de l'ISO — ne me semble possible qu'en augmentant le coût de la participation, ce qui n'est pas une bonne chose à mon avis.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

Discussions similaires

  1. Existe-t-il des normes de programmation générale ?
    Par Matmal11 dans le forum Langages de programmation
    Réponses: 66
    Dernier message: 30/03/2008, 00h18
  2. [WinDev 10] Respect des normes de codage
    Par raoudha dans le forum WinDev
    Réponses: 3
    Dernier message: 16/02/2007, 16h06
  3. Réponses: 7
    Dernier message: 12/06/2006, 14h32
  4. Incompatibilité des normes
    Par PRomu@ld dans le forum C
    Réponses: 28
    Dernier message: 09/04/2006, 09h41

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