Publicité
+ Répondre à la discussion Actualité déjà publiée
Page 1 sur 3 123 DernièreDernière
Affichage des résultats 1 à 20 sur 60
  1. #1
    Chroniqueur Actualités

    Inscrit en
    juillet 2009
    Messages
    3 432
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 3 432
    Points : 34 256
    Points
    34 256

    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
    Profil pro
    Ingénieur systèmes embarqués
    Inscrit en
    juin 2009
    Messages
    2 653
    Détails du profil
    Informations personnelles :
    Âge : 27
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2009
    Messages : 2 653
    Points : 6 345
    Points
    6 345

    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
    Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a

    Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^

    Pour vos problèmes d'embarqué, utilisez le forum dédié !

  3. #3
    Rédacteur
    Avatar de Davidbrcz
    Homme Profil pro
    Supaéro-Cesure : CERN, departement IT
    Inscrit en
    juin 2006
    Messages
    2 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22

    Informations professionnelles :
    Activité : Supaéro-Cesure : CERN, departement IT

    Informations forums :
    Inscription : juin 2006
    Messages : 2 297
    Points : 3 562
    Points
    3 562

    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 expérimenté
    Inscrit en
    octobre 2004
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : octobre 2004
    Messages : 329
    Points : 521
    Points
    521

    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 chevronné
    Avatar de Kirilenko
    Homme Profil pro Lucas Pesenti
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Nom : Homme Lucas Pesenti
    Âge : 17
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : décembre 2011
    Messages : 234
    Points : 762
    Points
    762

    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.

  6. #6
    Responsable Modération
    Avatar de diogene
    Homme Profil pro Patrick Gonord
    Enseignant Chercheur
    Inscrit en
    juin 2005
    Messages
    5 664
    Détails du profil
    Informations personnelles :
    Nom : Homme Patrick Gonord
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2005
    Messages : 5 664
    Points : 12 539
    Points
    12 539

    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é Sénior Avatar de Thierry Chappuis
    Homme Profil pro Thierry Chappuis
    Enseignant Chercheur
    Inscrit en
    mai 2005
    Messages
    3 481
    Détails du profil
    Informations personnelles :
    Nom : Homme Thierry Chappuis
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : mai 2005
    Messages : 3 481
    Points : 4 737
    Points
    4 737

    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 Confirmé Sénior

    Inscrit en
    janvier 2007
    Messages
    10 173
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : janvier 2007
    Messages : 10 173
    Points : 12 819
    Points
    12 819

    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
    Profil pro
    R&D en systemes informatiques bas niveau Unix/Linux
    Inscrit en
    mai 2004
    Messages
    8 495
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : R&D en systemes informatiques bas niveau Unix/Linux

    Informations forums :
    Inscription : mai 2004
    Messages : 8 495
    Points : 21 642
    Points
    21 642

    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...
    Modérateur "C", "Informatique Générale & Hardware" et "Unix"
    Les règles du forum

  10. #10
    Expert Confirmé Sénior Avatar de Thierry Chappuis
    Homme Profil pro Thierry Chappuis
    Enseignant Chercheur
    Inscrit en
    mai 2005
    Messages
    3 481
    Détails du profil
    Informations personnelles :
    Nom : Homme Thierry Chappuis
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : mai 2005
    Messages : 3 481
    Points : 4 737
    Points
    4 737

    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 Confirmé Sénior

    Inscrit en
    janvier 2007
    Messages
    10 173
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : janvier 2007
    Messages : 10 173
    Points : 12 819
    Points
    12 819

    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 Confirmé Sénior

    Inscrit en
    novembre 2005
    Messages
    5 104
    Détails du profil
    Informations forums :
    Inscription : novembre 2005
    Messages : 5 104
    Points : 5 987
    Points
    5 987

    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 Confirmé Sénior

    Inscrit en
    janvier 2007
    Messages
    10 173
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : janvier 2007
    Messages : 10 173
    Points : 12 819
    Points
    12 819

    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 Confirmé Sénior

    Inscrit en
    novembre 2005
    Messages
    5 104
    Détails du profil
    Informations forums :
    Inscription : novembre 2005
    Messages : 5 104
    Points : 5 987
    Points
    5 987

    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é Sénior Avatar de Thierry Chappuis
    Homme Profil pro Thierry Chappuis
    Enseignant Chercheur
    Inscrit en
    mai 2005
    Messages
    3 481
    Détails du profil
    Informations personnelles :
    Nom : Homme Thierry Chappuis
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : mai 2005
    Messages : 3 481
    Points : 4 737
    Points
    4 737

    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 Confirmé Sénior

    Inscrit en
    janvier 2007
    Messages
    10 173
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : janvier 2007
    Messages : 10 173
    Points : 12 819
    Points
    12 819

    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 Confirmé Sénior

    Inscrit en
    novembre 2005
    Messages
    5 104
    Détails du profil
    Informations forums :
    Inscription : novembre 2005
    Messages : 5 104
    Points : 5 987
    Points
    5 987

    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 :
    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 Confirmé Sénior

    Inscrit en
    janvier 2007
    Messages
    10 173
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : janvier 2007
    Messages : 10 173
    Points : 12 819
    Points
    12 819

    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 :
    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
    Modérateur

    Homme Profil pro Cyrille
    Network programmer
    Inscrit en
    juin 2010
    Messages
    2 084
    Détails du profil
    Informations personnelles :
    Nom : Homme Cyrille
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Network programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 2 084
    Points : 4 909
    Points
    4 909

    Par défaut

    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Code :
    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


  20. #20
    Expert Confirmé Sénior

    Inscrit en
    novembre 2005
    Messages
    5 104
    Détails du profil
    Informations forums :
    Inscription : novembre 2005
    Messages : 5 104
    Points : 5 987
    Points
    5 987

    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 :
    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •