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

  1. #241
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    J'ai pas le temps d'essayer mais normalement la méthode multiply de BigDecimal en java a cette signature :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BigDecimal multiply(BigDecimal);
    Si c'était
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BigDecimal multiply(Integer);
    Je pourrai écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monBigDecimal.multiply( 10 );
    Mais pour le coup, vu que le type n'est pas Integer et que rien à ma connaissance ne boxe en bigDecimal, ça devrait pas compiler. Dans le doute, je laisse le soin à celui qui affirme que je critique sans savoir d'essayer.

  2. #242
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Florian Goo Voir le message
    Pourquoi ça ?

    Il me semble que c'est un aspect de conception et non de langage. En C++, on se demandera « ma classe doit-elle surcharger == ? » et en Java « ma classe doit-elle redéfinir equals() ? ».
    Oui, je vois ce que tu veux dire. Mais comme "==" peut aussi être utilisé sur les pointeurs, ca devient plus compliqué de garantir sa sémantique.

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Object o1("data");
    Object o2("data");
    if (o1==o2) { /* the same ?*/}

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Object *o1 = new Object("data");
    Object *o2  = new Object("data");
    if (o1==o2) { /* the same ?*/}

    (aux erreurs de syntaxe près )
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #243
    Membre éclairé
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 680
    Points : 858
    Points
    858
    Par défaut
    Oh ben quand même, habituellement le programmeur est un peu au courant du type des variables qu'il manipule. Tu chipotes !

    Et aucune erreur de syntaxe… comme quoi, tu vois que c'est facile, le C++ .
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

  4. #244
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 073
    Points : 12 119
    Points
    12 119
    Par défaut
    Je pourrai écrire

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monBigDecimal.multiply( 10 );
    Limitation de la Class BigDecimal, pas du langage qui ne force pas l'utilisation des objets à tout bout de champs.
    Moi, j'ai toujours tendance à utiliser des float dans des constantes.

  5. #245
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Florian Goo Voir le message
    Oh ben quand même, habituellement le programmeur est un peu au courant du type des variables qu'il manipule. Tu chipotes !
    Bah, au bout de une ou deux pages de code, c'est pas toujours gagné de savoir si on a passé les paramètres par référence (C++ style) ou par adresse (C style). Surtout avec des développeurs venant d'horizon diverses ayant chacun leur style de codage.

    Mais c'est vrai que là c'est surtout un problème organisationnel, et un minimum de discipline dans le respect des règles. Et puis c'est le genre de truc qu'un analyseur de code est capable de remonter.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #246
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Bah, au bout de une ou deux pages de code, c'est pas toujours gagné de savoir si on a passé les paramètres par référence (C++ style) ou par adresse (C style). Surtout avec des développeurs venant d'horizon diverses ayant chacun leur style de codage.
    tu oublies les références sur les adresses

    Citation Envoyé par pseudocode Voir le message
    Et puis c'est le genre de truc qu'un analyseur de code est capable de remonter.
    des analyseurs efficaces sur C++... ça n'intéresse pas les personnes ayant le niveau de le faire, et il faut un niveau assez conséquent avant de voir un résultat pertinent (pire qu'un compilateur )
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  7. #247
    Membre éclairé
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 680
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    des analyseurs efficaces sur C++... ça n'intéresse pas les personnes ayant le niveau de le faire, et il faut un niveau assez conséquent avant de voir un résultat pertinent (pire qu'un compilateur )
    *sifflotte*
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

  8. #248
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par Florian Goo Voir le message
    tu as une liste de propriétés analysées, qui ne soient pas juste la traduction du code en AST, avec vérification de base ?


    tu peux venir présenter ton outil ici : http://www.developpez.net/forums/group.php?groupid=98 ?
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  9. #249
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 073
    Points : 12 119
    Points
    12 119
    Par défaut
    C'est bien le problème du C++.
    Le manque d'outillage pour la validation, le mocking, les tests unitaires etc...

  10. #250
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par bacelar Voir le message
    C'est bien le problème du C++.
    Le manque d'outillage pour la validation, le mocking, les tests unitaires etc...

    tests unitaires ? ça existe
    outils de validation... je demanderais juste ce que tu places derrière ce mot, car dans un cadre hors recherche, il existe plein d'outils pour des problématiques concrètes dans un cadre très précis
    (parce qu'au niveau calcul de WCET, va pas croire qu'il existe un outil de validation pour Java qui marche mieux )
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  11. #251
    Invité
    Invité(e)
    Par défaut
    C'est bien le problème du C++.
    Le manque d'outillage pour la validation, le mocking, les tests unitaires etc...
    Vous savez, moi, je m'en sors très bien avec mon compilateur.
    Par ailleurs, je ne comprend pas pourquoi ce serait un problème du C++. Ce problème existe-t-il au moment de la rédaction du code? ou au moment de l'exécution du binaire? Dans le second cas le langage n'a rien à voir. Dans le premier c'est un problème de compilateur et pas de langage (à mon avis).

  12. #252
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2009
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 349
    Points : 590
    Points
    590
    Par défaut
    en D on a de nouveau mot clé comme version, debug, testunit
    ces mot forme un bloc ainsi on peut insérer un test unitaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class A{
    ...
    }
    testunit{
    assert(A(param1));
    assert(A.action());
    ....
    }

  13. #253
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2009
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 349
    Points : 590
    Points
    590
    Par défaut
    Les imperfections du C++ sont également exprimé ici: http://www.prowiki.org/wiki4d/wiki.cgi?PerfectD

  14. #254
    Membre actif
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    189
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 189
    Points : 213
    Points
    213
    Par défaut
    Citation Envoyé par bioinfornatics Voir le message
    Les imperfections du C++ sont également exprimé ici: http://www.prowiki.org/wiki4d/wiki.cgi?PerfectD
    Je me suis arrêté à l'item 10 par manque de temps. Deux choses sur lesquelles je ne suis pas d'accord avec l'auteur.

    Item 9 : techniquement char est un byte. Il n'est pas destiné à être affiché en tant que chiffre mais peut tout à fait être utilisé de la sorte.

    Item 10 : «C and C++ need fixed-sized integer types.» Au premier abord on peut croire que ce n'est pas bien. Ça impose certaines mesures dans les applications réseau notamment, certes. Mais ça a du sens : au moment où la norme du langage est écrite les machines ont certaines spécificités comme la mémoire qui vont évoluer plus vite que la norme. Avoir une taille non fixe (mais précisée par des relations de grandeur entre les types eux-mêmes!) est donc bien réfléchis : ainsi la taille des types peuvent évoluer à la même vitesse que les machines.

    Notons au passage la non-objectivité du papier (comme nos discussions ). Il est vraiment tourné pour montrer les «avantages» du D.

  15. #255
    Débutant
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Points : 176
    Points
    176
    Par défaut
    honnetement je n'arrive pas à trouver de gros défault, la reflexibilité c'est tout ce qui me manque

  16. #256
    Invité
    Invité(e)
    Par défaut
    Je ne sais pas si c'est un défaut ou une qualité, mais je le met à titre de comparaison.
    Code quelconque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    unsigned char Chaine[128];
    strcpy(Chaine,MBR.c_str());
    for (unsigned char *c=Chaine; c; c++) printf("%2x ",c);
    printf("\n");
    Code C++ faisant la même chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    std::ostringstream oss;
    oss<<std::hex<<std::uppercase;
    std::copy(reinterpret_cast<const unsigned char*>(MBR.c_str()),
    reinterpret_cast<const unsigned char*>(MBR.c_str()) + MBR.length(),
    std::ostream_iterator<int>(oss, " "));
    std::cout<<oss.str();
    Je ne ferai pas de commentaire.

  17. #257
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    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 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Citation Envoyé par bioinfornatics Voir le message
    Les imperfections du C++ sont également exprimé ici: http://www.prowiki.org/wiki4d/wiki.cgi?PerfectD
    Item 4: As Java, D has a synchronized keyword.
    Celui-là m'a bien fait rire. Comme si cela suffisait pour thréader correctement. Quid des futures, des taches et leurs queues de messages, des barrières, des compteurs atomiques, des TSS, ... Enfin bon. COmme plusieurs autres items, le prochain standard va donner une solution plus directe aux "reproches" faits.

    Item 24 : D fait donc comme en C++...

    Pour info, IC++ est un bouquin de Matthew Wilson qui adresse des difficultés du langages pour montrer des solutions. Il n'exprime pas une critique négative du langage, mais une constructive. C'est un achat que je ne regrette pas -- même si je vais avoir des patterns légèrement différents des siens pour la DbC en particulier.

    @Pierre Dolez. Je ne stocke jamais des octets dans une string, mais dans un vector d'unsigned char plutôt. Ce qui lève bien des problèmes.
    BTW, std::string supporte begin() et end(), ce qui simplifie l'écriture.
    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...

  18. #258
    Invité
    Invité(e)
    Par défaut
    Bonjour Luc Hermite,
    @Pierre Dolez. Je ne stocke jamais des octets dans une string, mais dans un vector d'unsigned char plutôt. Ce qui lève bien des problèmes.
    Je n'ai pas compris ce qu'il ne faut pas faire et ce qu'il faudrait faire.

  19. #259
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Pierre Dolez Voir le message
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    unsigned char Chaine[128];
    strcpy(Chaine,MBR.c_str());
    for (unsigned char *c=Chaine; c; c++) printf("%2x ",c);
    printf("\n");
    Bien que je trouve la syntaxe du C plus lisible, le code ci-dessus est typiquement ce qui me fait préférer l'approche objet.

    Ici on transforme mentalement une chaine de caractères en zone linéaire d'octets terminée par un "0". Bien que cela soit vrai (sous certaines conditions), je préfère que ce genre de détail soit encapsulé dans une classe.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  20. #260
    Invité
    Invité(e)
    Par défaut
    Bonjour pseudocode,
    Ici on transforme mentalement une chaine de caractères en zone linéaire d'octets terminée par un "0".
    Je ne suis pas d'accord avec cette phrase. Il aurait fallu dire
    "Ici on crée par copie une chaine de caractères, à 0 terminal, à l'aide de la fonction c_str(), crée dans ce but."
    Pourquoi "sous certaines conditions"? Et quelles sont ces coditions?
    In the Standard C++ Library, a string is actually a template class, named basic_string. The template argument represents the type of character that will be held by the string container. By defining strings in this fashion, the Standard C++ Library not only provides facilities for manipulating sequences of normal 8-bit ASCII characters, but also for manipulating other types of character-like sequences, such as 16-bit wide characters. The datatypes string and wstring (for wide string) are simply typedefs of basic_string, defined as follows:

    typedef basic_string<char> string;
    typedef basic_string<wchar_t> wstring;
    La classe basic_string contient un nombre considérable de fonctions membres publiques. Il y a en outre un nombre non négligeable de fonction non-membre, pour la plupart de surcharge d'opérateurs.

Discussions similaires

  1. Réponses: 32
    Dernier message: 26/03/2010, 10h22
  2. Quel est pour vous le meilleur éditeur xml ?
    Par neo.51 dans le forum XML/XSL et SOAP
    Réponses: 87
    Dernier message: 20/02/2010, 20h04
  3. Quel est selon vous le plus gros flop d'Apple ?
    Par Katleen Erna dans le forum Actualités
    Réponses: 90
    Dernier message: 13/09/2009, 16h16
  4. Quel est, selon vous, le plus gros flop de Google ?
    Par Katleen Erna dans le forum Actualités
    Réponses: 14
    Dernier message: 10/09/2009, 23h35
  5. Quel est le langage de programmation le plus pertinent pour du traitement audio ?
    Par LeTouriste dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 02/11/2006, 11h42

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