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 :

Conseil pour passage Java -> C++


Sujet :

C++

  1. #41
    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
    Quoi?
    Cherche plutôt la différence dans l'absence de possibilité de mettre des types utilisateurs dans la pile en Java, de leur donner une sémantique de valeur, dans le fait que l'on préfère éviter de gérer les ressources à la main (et donc éviter le new+delete en C++), ...
    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...

  2. #42
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Il n'y a pas de types "objet" et de types "TYPE".
    Il y a juste des types qui ont différentes propriétés.
    Boost ftw

  3. #43
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    En .Net, on parle de types référence et types valeur. Selon cette terminologie, en java, seules les "types primitifs" sont des types valeur, et toutes les autres classes, y compris celles définies par l'utilisateur, sont des types référence.

    En C++, c'est comme si tous les types étaient des types valeur, qu'on choisisse de les mettre sur le tas ou non.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #44
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 896
    Points : 1 912
    Points
    1 912
    Par défaut Java en tant que premier langage
    Il semble que Java ne soit pas recommandé en tant que premier langage de programmation. Plusieurs entreprises importantes, comme IBM, Intel, Microsoft(!!) et des écoles se plaignent d'une baisse du niveau général en informatique d'étudiants qui ont commencé par Java. Après, moi, je ne me prononce pas, je n'ai sans doute pas le niveau pour juger (ceci-dit, je ne suis pas un grand fan de Java ^^) , mais ce sont des professionnels reconnus comme Bjarne Stroustrup (bon, ok, on pourrait lui reprocher un jugement biaisé) et des responsables du ministère de la défense américain, dans le journal officiel consacré à l'ingénierie informatique, qui font ce regrettable constat.

    Pour ceux qui ne sont pas anglophobes, voici le lien :
    http://www.stsc.hill.af.mil/crosstalk/about.html

    (Si cet article intéresse des gens, j'essaierai de prendre le temps d'en faire une traduction).

  5. #45
    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
    1- tu es passé à côté du contenu de l'article -- déjà évoqué dans un autre forum il y a peu : http://www.developpez.net/forums/sho...d.php?t=594560
    2- il n'y a aucun rapport avec la question de l'OP qui demande comment se mettre au C++ sachant qu'il connait déjà bien le Java.
    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...

  6. #46
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 896
    Points : 1 912
    Points
    1 912
    Par défaut
    J'ignorais que l'article avait déjà été évoqué. De mémoire, il me semblait qu'il signalait quelques difficultés pour les programmeurs Java à s'adapter certaines contraintes rencontrées ensuite dans certains environnement de production, je me disais que atha2 pourrait y trouver quelque intérêt.

    Sinon loin de moi l'intention de contester ou de déclencher une nouvelle flamewar C++ vs Java. Je trouve qu'atha2 est courageux de vouloir apprendre un autre langage, assez long à appréhender pleinement, c'était plus en guise d'encouragement que j'intervenais.

  7. #47
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    Je commence à me débrouiller un peu, j'ai fais deux, trois tests d'application graphique avec Qt et c'est sympa. Ils rendent possible(ils préconizent) le new car tout la mémoire des objets graphiques est libérée automatiquement grâce à l'arborescence de Widget.

    Je pense que je vais me mettre un peu à la programmation réseau. Qt est bon pour ça ? Sinon que prendre, je pensai développer un client torrent basique (très basique !).

  8. #48
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    Je commence à me débrouiller un peu, j'ai fais deux, trois tests d'application graphique avec Qt et c'est sympa. Ils rendent possible(ils préconizent) le new car tout la mémoire des objets graphiques est libérée automatiquement grâce à l'arborescence de Widget.
    Hmmm je serais toi j'essaierai vivement de me détacher de cette habitude...

  9. #49
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Il n'y a pas de types "objet" et de types "TYPE".
    Il y a juste des types qui ont différentes propriétés.
    Mais c'est bien là qu'il y a problême de conception....
    Quand les programmeurs ne font pas la distinction entre une "valeur" (ce que j'appelle un 'type') et un "objet".
    Comme disait Médinoc, Java ne permet d'implémenter que des "objets". Seuls les types primitifs peuvent être utilisées comme "valeur".
    C++ propose par défaut la sémantique de "valeur" (constructeurs/operateurs de recopie par défaut), et demande a être très attentif avec les "objets", mais au moins, on peut faire les deux.

    La POO n'a rien a voir ni avec Java, ni avec C++ qui ne sont que des outils intermédiaire pour dire au CPU ce qu'il doit faire... La conception est un étage au dessus, et il y a beaucoup de programmeurs Java qui ne savent pas faire la distinction entre les deux (et les "beans" n'ont pas améliorés les choses).

    P.S. Désolé si C# a utilisé une dénomination différente de la mienne (qui remonte quand même à ... ouch... 20 ans)..
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  10. #50
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Cette dénomination, c'est plus pour .Net en général que pour C# en particulier.

    En C#, un type valeur utilisateur se déclare avec "struct" tandis qu'un type référence utilisateur se déclare avec "class"...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    Citation Envoyé par atha2 Voir le message
    Ils rendent possible(ils préconizent) le new car tout la mémoire des objets graphiques est libérée automatiquement grâce à l'arborescence de Widget.
    Hmm. Je n'ai pas exploré Qt (pourtant, je travaille sous Linux) mais dit comme cela, ça sent le piège à plein nez ! Si c'est bien de cela qu'il s'agit, inciter les programmeurs à utiliser de l'allocation dynamique pour que la bibliothèque puisse les nettoyer elle-même, c'est des coups à donner de très mauvaises habitudes aux débutants. Et c'est aussi aller au devant de gros ennuis.

    Atha2, peux-tu nous donner la référence de la page qui affirme cela ?

  12. #52
    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
    Obsidian >>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QWidget::QWidget ( QWidget * parent = 0, Qt::WindowFlags f = 0 )
    Constructs a widget which is a child of parent, with widget flags set to f.
    If parent is 0, the new widget becomes a window. If parent is another widget, this widget becomes a child window inside parent. The new widget is deleted when its parent is deleted.
    "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)

  13. #53
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Non, Qt fait ça très bien, et ce n'est pas une bibliothèque pour débutant. Il faut de toute manière un minimum connaître le C++ avant d'utiliser des bibliothèques GUI. Car le C++ permet de faire beaucoup de choses mais le programmeur doit avoir la maîtrise de chaque ligne de code qu'il écrit.

    Bref, Qt fait vraiment ça bien. Tu peux regarder http://qt.developpez.com/ et tout ce qui y est rattaché pour avoir un aperçu de la bête.

  14. #54
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    Je me permet de rebondir sur mon sujet :
    avant en java, je faisais ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class FilePrinter{
               public FilePrinter(String fileName){
                        this.file = new FileReader(fileName);   
               }
               private FileReader file;
    }
    Mais si je transpose le code en C++, ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class FilePrinter
    {
    public: 
              FilePrinter(std::string filename)
                 : file(std::ifstream(filename))
              {}
             ~FilePrinter()
             {
                    file.close();
              }
    private:
             std::ifstream file;
    };
    En faite c'est la dernière ligne qui me pose problème :
    appelle bien le constructeur par défaut non ? Donc en faite actuellement j'appelle 2 fois le constructeur ? Comment remédier à ce problème si problème il y a ?

    Merci de m'éclaircire.

  15. #55
    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
    Voici ce que l'on fera en C++
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class FilePrinter
    {
    public: 
              FilePrinter(std::string const& filename)
                 : file(filename.c_str())
              {}
    private:
             std::ifstream file;
    };
    Et c'est tout! (pas de destructeur qui appelle close() (parce que implicite), pas de copie de la chaine entrante, pas de constructions intermédiaires inutiles)

    Quant à ton code, il appelait un constructeur d'initialisation qui n'est pas fourni, et le constructeur de copie (qui est désactivé).

    PS: ouvre un nouveau sujet la prochaine fois.
    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...

  16. #56
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par atha2 Voir le message
    En faite c'est la dernière ligne qui me pose problème :
    appelle bien le constructeur par défaut non ?
    Non, ça ne fait que déclarer une variable. Tout ce qui concerne l'initialisation de cette variable (sauf l'ordre relatif d'initialisation par rapport aux autres variables) est géré par le constructeur de la classe en question.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  17. #57
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    Merci pour toutes ces réponses qui me montre que je ne suis pas encore au point avec toutes les subtilités (et même les bases^^) du C++.
    Pour revenir à :
    Placé dans une méthode|fonction, ce bout de code appellerait bien le constructeur par défaut.
    On détermine sa signification en fonction de l'endroit où on le trouve, c'est bien ça ?

    EDIT : je tag résolu même si ce ne sera vraiment résolu que quand je serais un programmeur C++ confirmé, ce qui ne sera pas le cas avant un moment je le crains...

  18. #58
    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
    Ouaip.
    Dans la classe, ca déclare un attribut accessible depuis n'importe quelle fonction membre de la classe. Cet attribut serra initialisé dans un constructeur.
    Dans une fonction, ca créer un objet qui serra ici initialisé avec le constructeur par défaut.
    "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)

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Conseils pour débuter en Java
    Par flamant dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 09/03/2007, 11h30
  2. Besoin d'aide pour passage d'un algo au langage JAVA
    Par Spinoza23 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 16/02/2007, 15h33
  3. conseil pour un noob de java
    Par Th3dJoBiN dans le forum Langage
    Réponses: 3
    Dernier message: 11/12/2006, 15h13
  4. [Débutant] Conseils pour apprendre Java
    Par emary dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2006, 23h31
  5. Besoin de quelques conseils pour un script java
    Par poussin544 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/03/2006, 10h41

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