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 :

C11 : la normalisation est achevée


Sujet :

C

  1. #1
    Expert éminent sénior

    Inscrit en
    Juillet 2009
    Messages
    3 407
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 407
    Points : 149 059
    Points
    149 059
    Par défaut C11 : la normalisation est achevée
    C11 : la normalisation est achevée
    Après douze ans de travaux, multithreading et Unicode au menu


    Voilà qui est fait. Après douze ans de travaux, la normalisation du C1.x vient d’être bouclée par l’International Organization for Standardization.

    C11 succède donc à C99, réalisé en 1999, et propose la prise en charge du multithreading (autrement dit l’utilisation des différents cœurs d’un processeur pour accélérer les traitements et les processus) et de l’Unicode.


    Dennis Ritchie, créateur du C

    Pour rappel, le C est un langage de programmation impératif conçu en 1972 au sein des Bell Labs pour la programmation système. Inventé avec UNIX, C est devenu en quelques années un des langages les plus utilisés. De nombreux autres comme C++, C#, Objective-C mais aussi Java ou PHP en reprennent bien des aspects.

    Son créateur, Dennis Ritchie, est décédé en novembre dernier, suscitant une très vive émotion et une reconnaissance unanime au sein du monde IT.

    Cette certification lui aurait certainement fait plaisir.

    Le nouveau standard ISO/IEC 9899:2011 est disponible depuis cette page

  2. #2
    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
    Je voulais parcourir un peu la norme mais en bon document ISO/IEC, c'est payant

    Le court résumé parlant de la gestion des threads (ça veut dire que les pthreads deviennent une partie de la bibliothèque standard ?) et Unicode (pour tout le monde ?) semble peu pour 12 ans de travaux mais ces 2 points l'air plutôt intéressants

  3. #3
    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
    Y'a d'autres évolutions, dont un travail sur l'alignement, unions et structure anonymes ainsi que de rendre optionnel les VLA et les complex.

    Le reste ICI
    "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)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Points : 608
    Points
    608
    Par défaut
    Le dernier "draft" soumis pour normalisation est disponible (et gratuit) :

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

  5. #5
    Membre éclairé
    Avatar de Kirilenko
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 234
    Points : 807
    Points
    807
    Par défaut
    Il me semble qu'une ébauche de l'implémentation de la norme C11 est disponible avec gcc 4.6.

    Citation Envoyé par '"GCC 4.6 Release Series"
    There is now experimental support for some features from the upcoming C1X revision of the ISO C standard. This support may be selected with -std=c1x, or -std=gnu1x for C1X with GNU extensions.
    Récursivité en C : épidémie ou hérésie ?

    "Pour être un saint dans l'Église de l'Emacs, il faut vivre une vie pure. Il faut se passer de tout logiciel propriétaire. Heureusement, être célibataire n'est pas obligé. C'est donc bien mieux que les autres églises" - Richard Stallman

  6. #6
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Sur C11, voir aussi la discussion C1x : future version du langage C
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  7. #7
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 508
    Points
    5 508
    Par défaut
    Bonjour et merci pour cette information,

    Vu la difficulté de trouver des compilateurs 100 % conformes à C99 encore aujourd'hui (Voir par exemple gcc ou le compilateur C de microsoft). Peut-on espérer une plus grande réactivité pour C11? J'ai l'impression qu'encore aujourd'hui, en 2012, C90 reste le standard de fait lorsqu'il s'agit d'écrire du code avec des contraintes de portabilité importantes.

    Je vais tout de même jeter un oeil très intéressé sur cette nouvelle mouture du langage C.

    Avec mes meilleures salutations

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Thierry Chappuis Voir le message
    J'ai l'impression qu'encore aujourd'hui, en 2012, C90 reste le standard de fait lorsqu'il s'agit d'écrire du code avec des contraintes de portabilité importantes.
    Serait-ce la différence entre la théorie et la pratique ???

    ou entre l'enseignement et la réalité ?
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  9. #9
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 148
    Points : 28 113
    Points
    28 113
    Par défaut
    Citation Envoyé par Thierry Chappuis Voir le message
    Vu la difficulté de trouver des compilateurs 100 % conformes à C99 encore aujourd'hui (Voir par exemple gcc ou le compilateur C de microsoft). Peut-on espérer une plus grande réactivité pour C11? J'ai l'impression qu'encore aujourd'hui, en 2012, C90 reste le standard de fait lorsqu'il s'agit d'écrire du code avec des contraintes de portabilité importantes.
    C99 pose de reels problemes d'implementation, c'est a dire qu'il y a des choses complexes a mettre en oeuvre dans un langage comme le C (les tableaux de longueur variable par exemple).

    C1.x pose de nouveaux problemes, comme le multi-threading. Et l'experience de C99 ayant montre que ne pas implementer une partie de la norme n'etait pas (specialement) problematique, il est malheureusement peu probable que l'on voit une implementation complete de C1.x dans GCC ou chez Microsoft - mais chez d'autres peut-etre.

    Et par ailleurs, la norme C1.x rend optionnel des choses obligatoires en C99...
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  10. #10
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 508
    Points
    5 508
    Par défaut
    Citation Envoyé par gangsoleil Voir le message
    C99 pose de reels problemes d'implementation, c'est a dire qu'il y a des choses complexes a mettre en oeuvre dans un langage comme le C (les tableaux de longueur variable par exemple).
    Oui, les VLAs ont attendu gcc 4.5 avant de recevoir un support correct. Je ne doute pas de la difficulté d'implanter complètement C99 et, de la même manière C11. On est donc pas prêt de voir arriver un compilateur mainstream avec un support important de cette nouvelle norme. Peut-être Comeau proposera un tel compilateur?

    Avec mes meilleures salutations

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    disons qu'il y a aussi eu beaucoup de bon sens que C99 avait allégrement laissé tomber :


    • mettre des déclarations partout dans le code.. : la plupart du temps absurde et rendant le code illisible (sauf lorsque mis dans un bloc, ce qui était déjà possible avant, mais qui, à part pour du débogage, n'est pas forcément souhaitable)

    • modifier le style des commentaires : absuirde. A la limite proposer un style supplémentaire, mais pas remplacer.. compatibilité compatibilité....

    • les séquences d'échappement à 2 caractères : intérêt limité, l'ancienne manière permettant de faire la même chose..

    • l'initialisation des structures : intérêt limité, l'initialisation à 0 o NULL étant possible avant via les accolades, et l'initialisation par membre étant plus lisible en lignes de code

    • L'incompatibilité avec les retours "vides" (non précisés), obligeant à rééditer tous les fichiers des anciennes applis

    • les tableaux de taille variable : intérêt plus que limité.

    • les pointeurs "restrict" : bof... A qui ça sert à part des débutants ?

    • les types "long long" : re-bof.. Pour s'aligner avec Windows, mais .. On s'en fout, non ?


    Plus plusieurs autres..

    En fait, je trouve les choses les plus intéressantes (et qui étaient faciles) sont

    • la version
    • le inline
    • le type Booleen (le type "complexe" doit peut servir, la plupart des outils se servant de tableaux (partie réelle, partie imaginiare) et faisant des calculs sur l'une OU l'autre)
    • wchar
    • eventuellement _func_, mais dangereux dans des programmes commerciaux et/ou sensibles (qu'on va compiler en no-debug, et faire un strip sur l'exe), donc plutôt poiur du debug, qui peut aisément se remplacer par un printf..


    Bref, ça m'étonne pas trop...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  12. #12
    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 Thierry Chappuis Voir le message
    Peut-on espérer une plus grande réactivité pour C11?
    Ça ne m'étonnerait pas. La normalisation de C11 a été beaucoup plus concentrée sur des problèmes pratiques que celle de C99, et une partie de C99 a été rendue optionnelle.

    Peut-être Comeau proposera un tel compilateur?
    Ça fait un bout de temps que je n'ai plus vu Greg Comeau actif sur le net et la date la plus récente sur son site est 2008.

    Citation Envoyé par souviron34 Voir le message
    disons qu'il y a aussi eu beaucoup de bon sens que C99 avait allégrement laissé tomber :

    [LIST][*]mettre des déclarations partout dans le code.. : la plupart du temps absurde et rendant le code illisible (sauf lorsque mis dans un bloc, ce qui était déjà possible avant, mais qui, à part pour du débogage, n'est pas forcément souhaitable)
    Désolé mais ça ne fait certainement pas partie des aspects controversés de C99. Il y a de bonnes raisons pour préférer ne définir des variables que quand on peut les initialiser et avec la portée minimale dont elles ont besoin. Je comprends que ça puisse poser un problème d'adaptation quand on n'est pas habitué à ce style, mais certainement pas de prétendre que c'est intrinsèquement moins lisible. Ayant l'habitude de code écrit des deux manières, je penche plutôt pour l'inverse.

    [*]modifier le style des commentaires : absuirde. A la limite proposer un style supplémentaire, mais pas remplacer.. compatibilité compatibilité....
    Et qu'est-ce qui a été remplacé? Certainement pas /* */. L'ajout des commentaires // est un des points où C99 n'a pas innové mais simplement mis la norme en accord avec la pratique.

    [*]les séquences d'échappement à 2 caractères : intérêt limité, l'ancienne manière permettant de faire la même chose..
    De quoi tu parles? Si c'est de \x12, c'est en C89.

    [*]les pointeurs "restrict" : bof... A qui ça sert à part des débutants ?
    Les pointeurs restricts proviennent de la franche qui voulait entrer en compétition avec le Fortran sur le code numérique (autrement dit, ils voulaient augmenter les possibilités d'optimisation au moins dans le code annoté pour indiquer qu'il n'y a pas d'alias).

    [*]les types "long long" : re-bof.. Pour s'aligner avec Windows, mais .. On s'en fout, non ?
    Long long ne provient pas de Windows mais d'Unix. C'est encore un des points où c'est de la normalisation d'une pratique répandue.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Et qu'est-ce qui a été remplacé? Certainement pas /* */. L'ajout des commentaires // est un des points où C99 n'a pas innové mais simplement mis la norme en accord avec la pratique.
    Laquelle ? celle des programmeurs C++...


    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    De quoi tu parles? Si c'est de \x12, c'est en C89.
    C'est bien ce que je disais


    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Les pointeurs restricts proviennent de la franche qui voulait entrer en compétition avec le Fortran sur le code numérique (autrement dit, ils voulaient augmenter les possibilités d'optimisation au moins dans le code annoté pour indiquer qu'il n'y a pas d'alias).
    Pour pratiquer les 2, franchement je ne vois pas en quoi ça compétitionne avec Fortran...


    Maintenant, je constate que justement dans les "features" optonnelles, on a les complexes, ce qui n'est nullement étonnant pour toute personne ayant touché de près ou de loin à de gros codes manipulant des quantités complexes : même en Fortran la plupart du temps les usages sont séparés entre la partie réelle et la partie imaginaire...

    Je suis étonné par contre du chapitre sur "structures anonymes".. Il me semblait que c'était déjà le cas en C89 (ou 90), pourvu qu'on n'essaye pas plus tard de s'y référer.. Mais mes souvenirs de ce genre de manip sont un peu lointains...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  14. #14
    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 souviron34 Voir le message
    Laquelle ? celle des programmeurs C++...
    La pratique était répandue chez les compilateurs et les programmeurs C.

    C'est bien ce que je disais
    Tu as écris que les séquences d'échappement à deux caractères font parties du bon sens que C99 a laissé tombé. Je te signale que \x12 fait partie de C90 et te demande de quoi tu parles.

    Pour pratiquer les 2, franchement je ne vois pas en quoi ça compétitionne avec Fortran...
    En Fortran, une fonction qui reçoit des tableaux peut être compilée en supposant que les éléments sont distincts. En C, une fonction qui reçoit des pointeurs vers des tableaux doit supposer que les tableaux peuvent se recouvrir. Il y a parait-il des cas significatifs où le Fortran permet une performance supérieure.

    Je suis étonné par contre du chapitre sur "structures anonymes".. Il me semblait que c'était déjà le cas en C89 (ou 90), pourvu qu'on n'essaye pas plus tard de s'y référer.. Mais mes souvenirs de ce genre de manip sont un peu lointains...
    Pour moi c'est la normalisation d'une extension relativement répandue.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  15. #15
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 508
    Points
    5 508
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Laquelle ? celle des programmeurs C++...
    La plupart des compilateurs C pré-C99 reconnaissaient déjà les commentaires //. C99 n'a fait que normaliser cette pratique courante chez les vendeurs de compilateurs. Ensuite, on l'utilise ou pas. Mais, vraiment là, il s'agit d'un détails. Je ne vois aucune valeur ajoutée esthétique à commenter avec /* */ plutôt qu'avec //, même si j'utilise personnellement uniquement /**/.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  16. #16
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    La pratique était répandue chez les compilateurs et les programmeurs C.
    Les compilateurs peut-être, je ne les regardais pas de près..

    Les programmeurs, en Amérique du Nord certainement pas avant 2001 au moins... (et pas en France jusqu'en 1992) (j'étais en Amérique du Nord de 1992 à 2001).

    Alors peut-être y a-t-il eu un mouvement en France....

    Pas très important, mais néanmoins quelque chose d'un peu inutile... D'autant plus si "pour être conforme il faut"....


    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Tu as écris que les séquences d'échappement à deux caractères font parties du bon sens que C99 a laissé tombé. Je te signale que \x12 fait partie de C90 et te demande de quoi tu parles.
    je parlais de ça (chapitre III.B)

    http://nicolasj.developpez.com/articles/c99/


    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    En Fortran, une fonction qui reçoit des tableaux peut être compilée en supposant que les éléments sont distincts. En C, une fonction qui reçoit des pointeurs vers des tableaux doit supposer que les tableaux peuvent se recouvrir. Il y a parait-il des cas significatifs où le Fortran permet une performance supérieure.
    J'avoue être (plus que) perplexe...

    A part le fait que les tableaux Fortran sont en sens inverse (colonnes, PUIS lignes), je ne vois pas en quoi une fonction C "doit supposer que les pointeurs doivent se recouvrir"..

    M'enfin je pense que c'est un truc très très spécifique dans un coin...

    Raison de plus pour être un peu absurde de l'inclure dans une norme...

    Enfin, les gros codes de calculs sur lesquels j'ai travaillé avec les échanges Fortran/C, y compris en parallèle, n'ont jamais nécessité autre chose que du C89/90... Mystère...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  17. #17
    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 souviron34 Voir le message
    Les compilateurs peut-être, je ne les regardais pas de près..

    Les programmeurs, en Amérique du Nord certainement pas avant 2001 au moins... (et pas en France jusqu'en 1992) (j'étais en Amérique du Nord de 1992 à 2001).
    Je doute que la France ait une telle influence sur le comité. Certainement pas au point de faire commenter dans le rationale, "// comments were added for C99 due to their utility and widespread existing practice, especially in dual C and C++ translators." (et note que ce n'est pas uniquement dans les systèmes qui traitent à la fois du C et du C++, même s'ils forment une classe importante, parce que c'est une extension naturelle chez eux.)

    je parlais de ça (chapitre III.8)

    http://nicolasj.developpez.com/articles/c99/
    Ah, les digraphes. Ajouté par l'Amd1 (94 ou 95) pour les mêmes raisons que les trigraphes. J'aurais tendance à penser que le problème qu'ils cherchaient à résoudre n'existait déjà en pratique plus, mais quand le C++ a voulu virer les trigraphes, il y a des gens qui se sont réveiller pour l’empêcher.

    A part le fait que les tableaux Fortran sont en sens inverse (colonnes, PUIS lignes), je ne vois pas en quoi une fonction C "doit supposer que les pointeurs doivent se recouvrir"..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void f(int* result, int const* left, int const* right, int m)
    {
       int i;
       for (i = 0; i < n; ++i) {
          result[i] = left[i] * right[i];
       }
    }
    On ne peut pas supposer en C que les itérations sont indépendantes sans utiliser restrict. Le Fortran le permet et donc une génération de code plus efficace (peut-être pas sur cet exemple d'ailleurs).
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  18. #18
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Je doute que la France ait une telle influence sur le comité. Certainement pas au point de faire commenter dans le rationale, "// comments were added for C99 due to their utility and widespread existing practice, especially in dual C and C++ translators." (et note que ce n'est pas uniquement dans les systèmes qui traitent à la fois du C et du C++, même s'ils forment une classe importante, parce que c'est une extension naturelle chez eux.)
    Ouais... Bof.. Je suppose quand même que c'est dû à ça...

    Et comme le C++ n'était pas utilisé (pratiquement) sous unixoides.... (à l'époque).. (sous Win oui, avec VC++)




    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Ah, les digraphes. Ajouté par l'Amd1 (94 ou 95) pour les mêmes raisons que les trigraphes. J'aurais tendance à penser que le problème qu'ils cherchaient à résoudre n'existait déjà en pratique plus, mais quand le C++ a voulu virer les trigraphes, il y a des gens qui se sont réveiller pour l’empêcher.
    Kif-kif..


    En gros, je pense que, (comme d'autres choses), c'est le nombre de gens venant du monde Win et C++ dans les instances qui ont fait inclure des trucs qui leur semblait nécessaires...


    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void f(int* result, int const* left, int const* right, int m)
    {
       int i;
       for (i = 0; i < n; ++i) {
          result[i] = left[i] * right[i];
       }
    }
    On ne peut pas supposer en C que les itérations sont indépendantes sans utiliser restrict. Le Fortran le permet et donc une génération de code plus efficace (peut-être pas sur cet exemple d'ailleurs).
    ???

    D'une part pourquoi utliser des const..

    D'autre part dans quelle mesure cela peut ne pas être synchrone ???

    J'avoue ne pas comprendre... sincérement ('not for the sake of discussion)


    (et tu mets (peut-être involontairement) ++i et non le i++ traditionnel.. )
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  19. #19
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 958
    Points
    32 958
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void f(int* result, int const* left, int const* right, int m)
    {
       int i;
       for (i = 0; i < n; ++i) {
          result[i] = left[i] * right[i];
       }
    }
    On ne peut pas supposer en C que les itérations sont indépendantes sans utiliser restrict. Le Fortran le permet et donc une génération de code plus efficace (peut-être pas sur cet exemple d'ailleurs).
    http://en.wikipedia.org/wiki/Restrict
    je connaissais pas ce mot-clé
    c'est finalement pas stupide du tout, un tel exemple ne me serait certainement jamais apparu

    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  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 souviron34 Voir le message
    Ouais... Bof.. Je suppose quand même que c'est dû à ça...

    Et comme le C++ n'était pas utilisé (pratiquement) sous unixoides.... (à l'époque).. (sous Win oui, avec VC++)
    Ça c'est le genre de chose qui me fait penser que tu n'as pas une bonne vision de la pratique partout. C++ a été conçu sous Unix et était déjà utilisé largement sous Unix dans les années 80. (Si j'ai bonne mémoire, Kernighan a été le chef de Stroustrup aux Bell labs pendant une partie du développement de C++.)

    En gros, je pense que, (comme d'autres choses), c'est le nombre de gens venant du monde Win et C++ dans les instances qui ont fait inclure des trucs qui leur semblait nécessaires...
    À nouveau ton obsession d'un lien fort entre Windows et C++... Je te ferais remarquer que la standardisation du C et du C++ continue a s'inspirer plus des pratiques Unix que Windows. (Regarde la partie thread de C11 p.e.)

    D'une part pourquoi utliser des const..
    Parce que la fonction ne modifie pas ce qui est pointé.

    D'autre part dans quelle mesure cela peut ne pas être synchrone ???
    Tu ne peux pas utiliser des instructions vectorielles ("multimédia" dans le langage actuel, c'est du vectoriel avec des vecteurs courts) dont l'effet serait le meme que

    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
    void f(int* result, int const* left, int const* right, int m)
    {
       int i;
       assert(n%4 == 0); /* ou plutot du code d'ajustement  */
       for (i = 0; i < n; i+=4) {
          int tmp0 = left[i] * right[i];
          int tmp1 = left[i+1] * right[i+1];
          int tmp2 = left[i+2] * right[i+2];
          int tmp3 = left[i+3] * right[i+3];
          result[i] = tmp0;
          result[i+1] = tmp1;
          result[i+2] = tmp2;
          result[i+3] = tmp3;
       }
    }
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

Discussions similaires

  1. Qu'est ce qu'un grand projet ?
    Par Geronimo dans le forum Débats sur le développement - Le Best Of
    Réponses: 62
    Dernier message: 04/04/2013, 15h52
  2. Réponses: 33
    Dernier message: 14/11/2011, 10h27
  3. [bash] découper un fichier -> agir sur un fichier dés qu'il est achevé
    Par AnozerOne dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 21/06/2011, 21h31
  4. Réponses: 17
    Dernier message: 30/10/2010, 18h49
  5. Quelle est la fiabilité du protocole SSL ?
    Par Anonymous dans le forum Développement
    Réponses: 5
    Dernier message: 05/09/2002, 14h31

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