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

Affichage des résultats du sondage: Au finale, pour vous, faut-il

Votants
124. Vous ne pouvez pas participer à ce sondage.
  • séparer le C et le C++

    54 43,55%
  • les unir

    10 8,06%
  • les unir mais savoir différencier les deux "styles de programmation"

    42 33,87%
  • non mais t'as rien compris

    25 20,16%
Sondage à choix multiple
C++ Discussion :

C et C++ mythe et realité


Sujet :

C++

  1. #301
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Je parlais pour le C en fait.
    Je ne répondrai à aucune question technique en privé

  2. #302
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 011
    Points
    11 011
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    j'ai regardé le thread C++ vs C. Si c'est bien celui la que tu parle.
    Je dirai juste :
    1- les réponses commence a être vielle
    2- pas trouvé beaucoup de vrai exemple
    C'est dans les premières pages, il y a un lien vers les différences. Mais il est vrai que je me souviens de différences que l'on avait tapées nous-même. Ah ah. C'était , je savais que je n'avais pas révé (page 2), mais il y en a bien plus dans le lien de l'autre fil.

    Pour ce qui est de la date, ce n'est pas comme si les normes avaient profondément changé depuis 2002/2003 sur les différences C vs C++.


    Pour le nul pas nul, c'est juste une histoire d'habitude. Il n'y aura aucune différence en terme d'opscodes finaux. Après il y a ceux qui pensent en pointeurs nuls ou pas, et ceux qui pensent en données valides ou pas.
    Idiomatiquement parlant, le C++ nous pousse à être des gorets de force 2 quand on gère nos flux. Franchement, il n'y a pas de quoi se prendre le choux avec tout cela. J'avais même croisé des interprétations de specs qualité comme quoi il fallait toujours mettre des ==true ou ==false dans les tests. Le genrede trucs qui ferait écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((((p == 0) == true )== true)==true ....)
    si on poussait cette étrange logique jusqu'au bout.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #303
    doccpu
    Invité(e)
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    Le but est uniquement de montrer le problème pas de faire compliquer.
    Ce que j'ai écrit est indéterminé, par ce que tu as réécrit
    ok c exact j'avais pas lu l'avertissement sur le forum de :
    Forum des développeurs > Général Développement > Débats sur le développement - Le Best Of

    D'ou mon comportement cavalier.

    mais la y a un truc qui m'echape on est bien dans :
    Forum des développeurs > C et C++ > C++ > C et C++ mythe et realité

    donc on est pas dans le forum :
    Forum des développeurs > Général Développement > Débats sur le développement - Le Best Of

    alors pourquoi vous êtes la ?

    ensuite je ne vois pas ce qu'il y a de constructif a trouver tous les cas d'ambiguïté de la norme tout le monde sait qu'il y en a une infinité alors a quoi bon les recenser ?

    Si vous trouvez que la norme n'est pas au top pourquoi ne pas la refaire à ce moment la ? Ce qui serais encore mieux ce serais de proposer des outils permettant de passer de la norme actuelle a votre nouvelle norme. Non ?

    Je ne trouve vraiement pas constructif de faire ce genre de brainstorming sur ce qui pourais ne pas marcher dans telle ou telle implémentation de compilateur. J'ai même cru un moment que j'avais atterris dans la quatrième dimension ou l'informatique ne correspondais plus a ce que je connaissait d'elle. Sans vouloir vexer personne une norme est un document rédigé par des hommes et comme l'erreur est humaine il ne sert a rien de chercher les défauts . Tout le bénéfice serais plutôt d'en chercher tous les avantages et de les périniser en faisant en sorte de garder les bon cotés et d'eliminer les coté plus douteux. ok la norme ne définis pas les incrémentations doubles (++i*--i) et ya plus qu'a les définir.

    Par exemple : GCC (je sait pas si c'est dans la norme officielle ou pas) crée un bug avec la fonction read qui est censé lire un fichier jusque a la fin. le problème c'est que si le fichier comporte un -1 il arrete de lire et retourne une fin de fichier mais en fait le curseur n'a pas atteint la fin de fichier. ayant identifié le problème je me suis réécrit le morceau de code en utilisant des couches de plus bas niveau affin de ne plus avoir a vérifier que le curseur soit a la fin du fichier ou pas. je ne comprend pas que des types comme vous (les droso-philes) n'ai pas pensé a le faire plus tot ? je veux dire que le c++ n'est pas tout jeune (25 ou 30 ans) et je ne le connais bien que depuis quelque années ce qui m'a stupéfais c'est que avec tout le monde qui a travaillé dessus personne n'ai pensé a l'améliorer ou a corriger ses bugs. par contre à coté de ça on vois des ingé qui se masturbe le cervo pour faire en sorte que l'on garde la norme au bug près. cela me parais totalement aberrent !

    je comprend que le c++ de microsoft ait été si fortement publicité a chaque nouvelle version ils créent des outils de moins en moins buggés et de plus en plus efficaces en termes de vitesse de développement. Si l'on est pas capable de faire evoluer un programme il finit par péricliter parce que le marché, lui, évolue constamment. on a besoins de solutions de plus en plus efficaces et de plus en plus robustes. alors arrêtez de craner a faire valoir vos connaissances de la norme et faites ce qu'il faut pour qu'elle soit la plus simple possible et la plus robuste possible. Enfin je ne comprend pas que la norme n'ai pas suivis les règles de priorités des opérateurs en matière de sens de lecture du code comme on la trouve en mathématique car je pense que les droso-philes ne me contrarieront pas sur ce point l'informatique est un sous ensemble des mathématiques et donc elle devrais se plier aux même règles en matière de lecture.

    une calculette scientifique qui en effectuant le calcul 2 + 3 * 5 - 1 me sort 24, je sait pas vous mais moi je la jette. Donc puisque la norme est incomplète voir inexacte dans certains cas (read(FILE*);) pourquoi ne pas la compléter et/ou la corriger ?

    cordiallement

    ps : je n'aime pas M$ mais forcé de constater qu'ils ont la meilleure stratégie.

  4. #304
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 011
    Points
    11 011
    Par défaut
    Souvent, des questions innocentes sont posées (comme ce fut probablement le cas il y a quelques pages de cela), et puis chacun y donne de son avis basé sur ses expériences. Dans ce cas particulier la seule bonne réponse est "unspecified behaviour". Affirmation qui aurait dû être terminale, mais non, plusieurs n'ont pas voulu en démordre, certains que leur compilo avait plus raison que les autres. Bref.

    Je crois que tu es passé à côté d'un point: comment fonctionne le commité de normalisation du C++. Et ce qu'est la norme du C++.
    Pour la norme, un certain nombre de choses sont précisément définies. Et d'autres sont "unspecified behaviour", tandis que d'autres sont "undefined". C'est dit en clair dans la norme (enfin, quand on sait la lire -- "décrypter" est parfois plus juste).

    Pourquoi ces zones de "flou" ? Pour que les fournisseurs de compilo puissent exploiter au mieux les architectures sur lesquelles nous allons compiler. Et parfois, je soupçonne que leur existant fait qu'ils ne veulent pas introduire des regressions juste pour être comme les autres sur des trucs complexes/inutiles/...

    La norme évolue. Lentement. Et sur ce point précis le C++09 (09 si tout va bien) ne changera rien. Un draft est dispo en ligne.

    Et ce n'est pas nous qui allons changer quoique ce soit (du moins comme ça en discutant ici). La norme du C++ est un document ANSI/ISO que respectent les compilos (avec des écarts). Cen'est pas parce que je vais dire demain que "++n*--n" doit valoir 42 au lieu de 25 que mon compilo va m'écouter. La seule chose qui me soit autorisée, c'est d'éviter d'écrire des choses dont je sais pertinemment que le compilo interprétera comme LUI en a envie. C'est un fait, c'est comme ça, il n'y a pas à pinailler sur ce que cela devrait être. Accessoirement, les "pinailleurs" qui se sont exprimés ici acceptent parfaitement cet état de fait -- état de fait qui suit la maxime it's not a bug, it's a feature



    Pourquoi on est là ? Parce que l'on parle de C++ et pas de C++ sur PC?


    EDIT: pour l'histoire du read(), je n'ai rien capté. Si tu as trouvé un bug, contacte les mainteneurs de GCC. Sinon, attention aux idiomes de lecture de fichiers en C et C++ -> pas de 'while feof', mais 'while read', attention au mode d'ouverture.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #305
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 626
    Points : 30 684
    Points
    30 684
    Par défaut
    Je crois, justement, que ce qui est le plus important dans la norme, c'est presque... ce qu'elle ne définit pas.

    Selon moi, savoir ce qui n'est pas défini dans la norme est bien plus utile que de savoir ce qui l'est, pour une raison toute simple:

    Je sais, par exemple, que la norme ne spécifie pas le nombre de bits utilisés par les types primitifs (char, int, long...)

    De ce fait, j'évite de partir du postulat (pourtant vérifiable chez moi) que
    un char fait 8 bits, un short 16, un int 32, etc.
    De cette manière, si pour une raison quelconque le code que je crée n'est pas compilé dans les mêmes circonstances que celle dans lesquelles je l'ai écrit (compilateur, système et architecture identique), l'application continuera à fonctionner de manière cohérente.

    Si tu écris un code au départ du postulat que, sur ton ordinateur, avec ton compilateur et sous ton système
    int i=5; total=++i*--i; donne 25
    et si, pour une raison quelconque, ton code est compilé dans d'autres circonstance, tu obtiendra, au mieux, des résultats aberrants.

    Il ne s'agit nullement de vouloir "refaire la norme", il s'agit simplement d'indiquer le danger du
    attention, c'est valable pour toi, mais pas forcément pour un autre parce que la norme a été suffisamment intelligente pour laisser cette implémentation à l'appréciation du codeur.
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #306
    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 gl Voir le message
    Sauf erreur de ma part, en C99 tab devrait etre valide (VLA), non ?
    Oui. Mais en C++ il n'y a pas de VLA.

    Citation Envoyé par millie Voir le message
    Il me semblait d'ailleurs que la norme ne disait pas ça (j'ai souvent entendu dire par Emmanuel qu'il fallait juste que NULL soit une adresse non valide (typiquement, qui produit une erreur de segmentation)).
    Pour le C comme pour le C++, NULL doit etre une constante entiere nulle. De plus, le C autorise le cast vers void* (mais ne l'impose pas).

    Citation Envoyé par nikko34 Voir le message
    en C++ il n'y a pas de NULL, c'est dans la partie C du C++ que la macro est définie.
    Si tu enleves tout ce qui est comment avec le C, il ne reste pas grand chose d'utilisable.

    pour Bjarne Soustrup, c'est très clair, il utilise juste "0".
    Les avis sur ce point sont tres partages, avec de bons arguments des deux cotes. Personnellement, je rale parce que ma preference oscille, ce qui est encore le pire
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  7. #307
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Pourquoi insulter les gens doccpu ? C'est interdit (même en écrivant drosophile, moyen détourner d'insulter)...

    Donc, si ce topic te paraît inutile, pas à sa place, etc. rien ne t'empêche de ne pas le suivre !
    A bon entendeur...
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  8. #308
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par progfou Voir le message
    Pourquoi insulter les gens doccpu ? C'est interdit (même en écrivant drosophile, moyen détourner d'insulter)...

    Donc, si ce topic te paraît inutile, pas à sa place, etc. rien ne t'empêche de ne pas le suivre !
    A bon entendeur...
    Je pense que c'est parcequ'il ne veut pas accepter qu'il as dit des conneries.

    Pour revenir sur le principe de ce topic, je pense que koala01 explique le gros problème.
    Enfaite y en a plusieurs pour moi :
    1 - Aider les gens (dont moi) à comprendre la différence entre le C et C++
    2 - De répertorier les différences, pour ne pas se trouvais complètement larguer (m'est déjà arrivé) et perdre plusieurs jours parce qu'un projet mélange du C et C++
    3 - Eviter d'écrire des choses qui marche un jour mais pas demain (ex : i =++n * --n;; ou ce thread )
    4 - Echanger les experiences

    Ce qui est drôle c'est que doccpu montre bien que l'expérience (si il en as, ce que je pense, il ne dit pas que des conneries non plus) ne fait pas tous. Quelqu'un qui développe sur VC 6 pendant 5 ans et pense être un master en programmation, risque de pleuré le jours où l'on va lui demander de développer avec un autre compilot car il aura oublié plein de const, ou autre boulette qui ne marche que sur VC 6.
    Faut savoir se remettre en cause de temps en temps, cela ne fait pas de mal, et ça permet de s'améliorer.
    En tout cas j'ai appris et compris plein de chose depuis le début de ce thread, qui as ma grande joie n'est pas encore devenue un gros troll, merci d'essayer (en particulier doccpu en arrêtant de prendre les gens pour des con) à ce que cela n'en devienne pas un
    merci

  9. #309
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    C'est surtout qu'il est seul a défendre une idée saugrenue (et je ne veux pas entendre "oui mais lorsqu'on disait que la terre était ronde ça paraissait absurde aussi"...).
    Ne pas tenir compte de la norme actuelle, c'est jouer à la roulette russe.

    Je ne trouve vraiement pas constructif de faire ce genre de brainstorming sur ce qui pourais ne pas marcher dans telle ou telle implémentation de compilateur.
    Du jour au lendemain, celà pourrait ne plus marcher sur une simple MAJ du tien. Et puis, faire du code non portable est un choix, mais ne nous l'impose pas en étant aggressif avec ceux qui cite la norme s'il te plaît.

    J'ai même cru un moment que j'avais atterris dans la quatrième dimension ou l'informatique ne correspondais plus a ce que je connaissait d'elle. Sans vouloir vexer personne une norme est un document rédigé par des hommes et comme l'erreur est humaine il ne sert a rien de chercher les défauts .
    Tu ne fais d'erreurs toi par contre ?

    Par exemple : GCC (je sait pas si c'est dans la norme officielle ou pas) crée un bug avec la fonction read qui est censé lire un fichier jusque a la fin.
    Rien à voir, GCC n'est qu'un compilateur qui tente de suivre la norme, s'il est buggé change de compilateur...

    je ne le connais bien que depuis quelque années ce qui m'a stupéfais c'est que avec tout le monde qui a travaillé dessus personne n'ai pensé a l'améliorer ou a corriger ses bugs.
    Il n'y pas de bugs dans la norme, seulement dans les compilateurs.

    par contre à coté de ça on vois des ingé qui se masturbe le cervo pour faire en sorte que l'on garde la norme au bug près. cela me parais totalement aberrent !
    Tu n'a évidement pas compris ce qu'était la norme.

    Enfin je ne comprend pas que la norme n'ai pas suivis les règles de priorités des opérateurs en matière de sens de lecture du code comme on la trouve en mathématique car je pense que les droso-philes ne me contrarieront pas sur ce point l'informatique est un sous ensemble des mathématiques et donc elle devrais se plier aux même règles en matière de lecture.
    Je ne suis pas un expert des mathématiques, mais je ne suis pas sûr qu'on puisse écrire ++i en maths. Or c'est l'un des seul opérateur qui pose problème dans notre cas C++. Je te rappelle qu'en maths, tu peux calculer (1 + 5) - (9 + 8) en commençant par la parenthèse de droite, donc de quoi parles tu pour le sens de lecture ?...

  10. #310
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 011
    Points
    11 011
    Par défaut
    En maths, nous manipulons effectivement des valeurs, du moins non des entités pouvant être altérées dans des fonctions. De x, on passe à x'. x ne change jamais dans x |--> f(x). En cela, les opérateurs d'incrémentration (/dec) ne m'ont pas l'air d'avoir grand chose de mathématique.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  11. #311
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Mongaulois, les C et le C++ sont des langages differents, mais qui partagent un gros sous-ensemble, tres proche de C89, moins de C99; geres par des commites differents, mais qui partagent un sous-ensemble de membres dont certains sont officiellement charges de la communication entre les comités. Je serais tres etonne d'une disparition proche d'un des deux langages, et meme si le comite du C est moins porte a faire evolue le langage, il continue a le faire, et pas necessairement dans une direction compatible avec le C.0
    Je sais et c'est dommage, je trouve que ca va de plus en plus compliquer les choses

    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Mais j'ai l'impression que ta question est reellement "Pourquoi continuer a faire du C plutot que du C++ puisque le C++ est a toute fin utile un sur-ensemble du C?"
    Je ne veut pas dire qui est mieux que l'autre.
    Pour moi C et C++ sont deux approches différentes de programmer et non deux langage différent. Ca m'est arrivé plusieurs fois dans des projets lors de debugage à réaliser que je n'était plus dans du code C++ mais du C, juste parceque je n'avait pas déclaré toutes mes variables au début d'une fonction...

    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    D'un certain point de vue, je comprends ton interrogation; mais je crois que la reponse depend beaucoup plus du contexte de chacun que tu ne le penses. Etant moi-meme dans un contexte ou la reponse est "Pas de bonnes raisons", j'ai du mal a presenter avec pertinence les autres. Parmi les bonnes raisons parfois applicables:
    - disponibilite: la cible a un compilateur C, pas un compilateur C++
    - stabilite: le C est un langage plus stable que le C++ avec moins de variations entre implementations
    - historique: la base est ecrite en C, il faudrait la migrer a un cout incertain (et il faut migrer non seulement le code, mais aussi les programmateurs) pour un benefice immediat au mieux faible
    cela montre que ce thread sert a quelque chose
    Je comprendre dans ce que tu écrit cette volonté de les séparer. Mais je me demande si ce ne sont des raisons valable de nos jours et si elles ne restent pas historique...

    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    - le C++ est un langage trop complique
    pourquoi??

    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Pour les autres, le forum C est un meilleur endroit pour poser la question.
    Ca y est lien

  12. #312
    screetch
    Invité(e)
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Je dirais que, tant que ton code n'est destiné à être lu que par toi, tu est tout à fait libre de faire strictement comme bon te semble.

    Le problème se pose quand... ton code est destiné à être lu par une personne qui n'a pas forcément écrit le code

    Et les occasions sont nombreuses: le travail collaboratif se décline en plusieurs mise en oeuvres réelles

    Et dans ce cas, il faut au minimum que tout le monde soit d'accord pour adapter des conventions de codages identiques... Sinon, cela devient la foire aux chapeaux
    oui enfin bon je travaille dans une entreprise qui emploie environ une centaine de programmeurs qui travaillent sur le meme moteur avec des outils de partage de code (perforce) et en greppant les if() je vois que plus des 3/4 des tests sont fait avec if(p) au lieu de if(p != 0). Notre norme deconseille de plus l'utilisation de NULL.

    Une entreprise complete de gorets niveau 2 quoi.

    La classification goret c'est gentil mais ca reste plus des opinions que des faits, donc il vaut mieux eviter d'imposer sur certains points.

  13. #313
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    C'est là que je ne suis pas d'accord avec toi, il faut imposer un minimum de règles, surtout quand on parle de norme .
    Donc, oui, sans doute que dans ta société c'est "goret niveau 2", mais ce n'est pas forcément bien...
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  14. #314
    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 Mongaulois Voir le message
    Citation Envoyé par JMB
    C++ trop complique
    pourquoi??
    Le C++ est plus complique que le C. Le maitriser demande plus d'effort qu'on veut vouloir/pouvoir en fournir. La programmation peut etre une activite annexe d'un boulot, ou meme une activite annexe d'un hobby.

    Et dans l'absolu je trouve le C++ deja trop complique et ca ne va pas d'arranger dans le futur. Mais je ne vois pas d'alternative qui remplisse bien toutes les contraintes. J'ai deja ecrit que sur la plupart de mes criteres, C++ n'etait pas un premier choix. Mais c'est le mieux classe des langages qui n'ont pas une cote d'exclusion.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  15. #315
    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 doccpu Voir le message
    ensuite je ne vois pas ce qu'il y a de constructif a trouver tous les cas d'ambiguïté de la norme tout le monde sait qu'il y en a une infinité alors a quoi bon les recenser ?
    Pour les eviter. Parce que en pratique ca a une importance.

    Si vous trouvez que la norme n'est pas au top pourquoi ne pas la refaire à ce moment la?
    Je m'investi dans l'evolution du C++ autant que je peux. Et le comportement indefini dans ce cas la n'est pas du tout sur ma liste de choses a changer pour le C++, meme si ce n'est pas le genre de chose que je laisserais dans un langage concu a partir de zero.

    Ce qui serais encore mieux ce serais de proposer des outils permettant de passer de la norme actuelle a votre nouvelle norme. Non ?
    Au vu des changements qui sont en cours, ca s'appelle un compilateur.

    Sans vouloir vexer personne une norme est un document rédigé par des hommes et comme l'erreur est humaine il ne sert a rien de chercher les défauts.
    Le comportement indefini dans ce cas la est n'est ni une erreur ni un defaut. C'est un choix conscient et raisonne. Et utilise.

    Par exemple : GCC (je sait pas si c'est dans la norme officielle ou pas) crée un bug avec la fonction read qui est censé lire un fichier jusque a la fin. le problème c'est que si le fichier comporte un -1 il arrete de lire et retourne une fin de fichier mais en fait le curseur n'a pas atteint la fin de fichier.
    Tu peux donner un exemple complet. Ca me rappelle un probleme qui arrive quand le programmeur commet une erreur commune (stocker le resultat de fgetc ou equivalent dans un char) dont la correction est tres simple (le stocker dans un int). Mais je ne vois pas comment tu y es arrive avec un read.

    ayant identifié le problème je me suis réécrit le morceau de code en utilisant des couches de plus bas niveau affin de ne plus avoir a vérifier que le curseur soit a la fin du fichier ou pas. je ne comprend pas que des types comme vous (les droso-philes) n'ai pas pensé a le faire plus tot ?
    Voir ci-dessus. Je doute qu'il y ait un probleme avec la norme ou avec gcc. Plutot avec ton programme.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  16. #316
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 626
    Points : 30 684
    Points
    30 684
    Par défaut
    Citation Envoyé par screetch Voir le message
    oui enfin bon je travaille dans une entreprise qui emploie environ une centaine de programmeurs qui travaillent sur le meme moteur avec des outils de partage de code (perforce) et en greppant les if() je vois que plus des 3/4 des tests sont fait avec if(p) au lieu de if(p != 0). Notre norme deconseille de plus l'utilisation de NULL.

    Une entreprise complete de gorets niveau 2 quoi.

    La classification goret c'est gentil mais ca reste plus des opinions que des faits, donc il vaut mieux eviter d'imposer sur certains points.
    Evidemment, à partir du moment où une norme d'entreprise dit de le faire, il n'y a pas de raison, au sein de cette entreprise, de ne pas le faire...

    Mais garde néanmoins l'ouverture d'esprit nécessaire pour te permettre d'adopter d'autres normes dans d'autres entreprises... Des fois que tu en changerais

    Et je maintiens que la norme de ton entreprise n'est clairement pas celle qui me semble la mieux adaptée (mais ca, ce n'est que mon avis perso )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  17. #317
    doccpu
    Invité(e)
    Par défaut
    Citation Envoyé par NiamorH Voir le message
    C'est surtout qu'il est seul a défendre une idée saugrenue (et je ne veux pas entendre "oui mais lorsqu'on disait que la terre était ronde ça paraissait absurde aussi"...).
    Ne pas tenir compte de la norme actuelle, c'est jouer à la roulette russe.

    Du jour au lendemain, celà pourrait ne plus marcher sur une simple MAJ du tien. Et puis, faire du code non portable est un choix, mais ne nous l'impose pas en étant aggressif avec ceux qui cite la norme s'il te plaît.
    Je ne souhaite pas que le code soit non portable, je souhaite au contraire qu'il soit totalement portable a la virgule (ou au ++) près.
    Un jour je serais peut être a même d'imposer une portabilité universelle (l'espoir fais vivre).

    Citation Envoyé par NiamorH Voir le message
    Tu ne fais d'erreurs toi par contre ?
    Si et j'essaie de changer de ton depuis que j'ai lu l'avertissement (depuis mon dernier message. Que celui qui n'a jamais péché me jette la première pierre. ouile oula non arrêtez

    Citation Envoyé par NiamorH Voir le message
    Rien à voir, GCC n'est qu'un compilateur qui tente de suivre la norme, s'il est buggé change de compilateur...
    VC6 reproduit le meme comportement

    Citation Envoyé par NiamorH Voir le message
    Il n'y pas de bugs dans la norme, seulement dans les compilateurs.

    Tu n'a évidement pas compris ce qu'était la norme.
    si elle sert a expliquer pendant deux ans des problèmes que l'on aurais peut etre pas eu sans elle !

    Une norme comme son nom l'indique doit normaliser (rendre tout pareil quelque soit les paramètres) si elle ne le fait pas c'est que soit elle à échoué soit c'est pas une norme

    Citation Envoyé par NiamorH Voir le message
    Je ne suis pas un expert des mathématiques, mais je ne suis pas sûr qu'on puisse écrire ++i en maths. Or c'est l'un des seul opérateur qui pose problème dans notre cas C++. Je te rappelle qu'en maths, tu peux calculer (1 + 5) - (9 + 8) en commençant par la parenthèse de droite, donc de quoi parles tu pour le sens de lecture ?...
    Si tu fais le calcul 2+3*5 et que tu trouve 25 c'est que tu a mal calculer de même que 2+3*5+6+5*3+2 si tu obtiens pas 40 c'est que tu est a l'ouest ou que t'a mis des parenthèses. En suite tu fera dans cette opération ((((2+(3*5))+6)+(5*3))+2) parce que la norme mathématique impose une lecture de gauche a droite de l'opération pour un rang égal de priorité des opérations même si de tête on sait que faire 3*5 après 5*3 ne posera pas de problème.

    cordiallement

  18. #318
    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 doccpu Voir le message
    Une norme comme son nom l'indique doit normaliser (rendre tout pareil quelque soit les paramètres) si elle ne le fait pas c'est que soit elle à échoué soit c'est pas une norme
    Une norme (pour un langage) contraint a la fois les programmes et le comportement des implementations. Quand le programme ne respecte pas les contraintes, parfois l'implementation doit le signaler, parfois elle peut faire ce qu'elle veut. Les comportements indefinis, c'est justement ca: ils arrivent quand le programme ne respecte pas certaines contraintes et que la norme n'exige rien de l'implementation.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  19. #319
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Je ne vois pas pourquoi la corme doit fixer ces indéterminations. Comme il a été dit précédemment, ça permet au compilateur d'effectuer des optimisations qu'il ne pourrait pas faire autrement. Il suffit de ne pas utiliser d'effets de bord et c'est bon.

  20. #320
    screetch
    Invité(e)
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Evidemment, à partir du moment où une norme d'entreprise dit de le faire, il n'y a pas de raison, au sein de cette entreprise, de ne pas le faire...

    Mais garde néanmoins l'ouverture d'esprit nécessaire pour te permettre d'adopter d'autres normes dans d'autres entreprises... Des fois que tu en changerais

    Et je maintiens que la norme de ton entreprise n'est clairement pas celle qui me semble la mieux adaptée (mais ca, ce n'est que mon avis perso )
    il n'y a pas de norme qui dit de le faire, cela reflete les choix des programmeurs. La norme dit de ne pas utiliser NULL mais plutot 0.
    je pense que dans mon experience j'ai croisé plus de gens qui faisaient if(p) que l'autre race. J'ai ausi croisé quelques gens qui faisaient if(0 != p) ou if(0 == p)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mythes & Réalité
    Par philben dans le forum Contribuez
    Réponses: 6
    Dernier message: 07/07/2006, 07h05
  2. [TV] Emission Télé Réalité(encore)
    Par ArHacKnIdE dans le forum Films & TV
    Réponses: 30
    Dernier message: 31/05/2006, 11h47
  3. Liste deroulante et VALUE non conforme a la realité
    Par ahage4x4 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 27/05/2005, 13h33
  4. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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