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 :

java ou c++ ou autre


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 109
    Points : 52
    Points
    52
    Par défaut java ou c++ ou autre
    bonsoir
    je suis un étudiant en génie informatique
    je veux me concenter dans l'apprentissage d'un langage de programmation orienté objet . A l'école on étudie plusieurs langages superficiellement comme java c++ vb.net .Comme je viens de dire je veux choisir un seul langage pour la maîtriser. Aidez moi à faire le bon choix.
    Merci

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

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par louzorios Voir le message
    bonsoir
    je suis un étudiant en génie informatique
    je veux me concenter dans l'apprentissage d'un langage de programmation orienté objet . A l'école on étudie plusieurs langages superficiellement comme java c++ vb.net .Comme je viens de dire je veux choisir un seul langage pour la maîtriser. Aidez moi à faire le bon choix.
    Merci
    Salut, et bienvenue sur le forum.

    S'il y a bien une question piège, c'est sans doute celle-là...

    Le fait est que de nombreux programmeurs connaissent plusieurs langages et sont au moins capables de se débrouiller chacun de ceux que tu as cités (en plus, tu as oublié C# ), mais préfèrent l'un ou l'autre, pour toute une série de raisons, parfois très subjectives.

    Il y a de fortes chances que tu obtienne en moyenne autant de réponses en faveur de chaque langage, si tu "joue le jeu" et que tu pose la question dans une partie du forum "généraliste".

    Mais, comme tu pose la question dans la section C++, il faut bien te dire que tu "pipes un peu les dés" car, il y a de fortes chances que ceux qui te répondront aient un gout prononcé pour... C++...

    Il existe d'ailleurs un nombre important de débats dans une des sections voisines qui tentent de mettre deux langages en compétition, et on remarque généralement toujours la même chose : il y a autant de "pro l'un, anti l'autre" que l'inverse

    A titre personnel, je crois que tu devrais en fait profiter des cours sur chaque langage pour te faire ta propre idée, ton propre ressenti et pour voir si la "mentalité" du langage est en accord avec la tienne ou non...

    Il faut savoir que tous les langages ont leurs avantages, qui, curieusement, se transforment souvent en inconvénients lorsqu'ils sont utilisés dans la bouche de leurs détracteurs.

    Cette réponse ne t'aidera surement pas à faire ton choix, et ce n'est pas son but. Son but est, tout simplement, de te faire comprendre qu'au final le choix doit venir de toi, comme devrait venir de toi le choix d'entrer en religion
    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

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 109
    Points : 52
    Points
    52
    Par défaut
    Merci à vous
    Mais si vous pouvez me dire si vous êtes un développeur c++ pourquoi tu l'as choisit et non pas java

  4. #4
    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
    Je dirais quand même, bien que d'accord avec Koala, que les domaines d'application classiques sont quand même assez disjoints (pour des raisons au moins autant historiques que techniques). web, gestion, applis pour téléphone... : Java/C#. Calcul scientifique, jeux, temps réel... : C++
    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.

  5. #5
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Pour compléter ce qui a déjà était dit, il y'a un autre facteur à prendre en compte : le temps. (de formation). En gros tu deviendras plus vite productif en java qu'en C++, mais le passage java => C++ demande un gros effort (y'a qu'a voir les codes C++ des gens qui viennent du java)...
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 109
    Points : 52
    Points
    52
    Par défaut
    je vous remercie , s'il y a encore d'autres choses qui peuvent m'aider à faire le bon choix n'hésitez pas de me les dire , je suis très reconnaissant .

  7. #7
    Membre confirmé Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Points : 633
    Points
    633
    Par défaut
    Le c++ c'est plus plus \o/ ! -_-'

    En bien ou en mal :
    Le c++ est un langage de "bidouille" qui ne t'empêche pas de te "tirer une balle dans le pied", mais du coup est un peu plus "libre".
    The mark of the immature man is that he wants to die nobly for a cause, while the mark of the mature man is that he wants to live humbly for one.
    --Wilhelm Stekel

  8. #8
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Je pense que pour apprendre, il vaut mieux apprendre le C++. Cela te permettra d'étudier un plus grand panel de paradigmes de programmation, contrairement à java qui va t'enfermer dans une vision tout objet beaucoup plus restrictive.

    Après, il faut aussi bien apprendre le C++. La section Tutoriels et Livres de ce site te donnera de bonnes bases .

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 109
    Points : 52
    Points
    52
    Par défaut
    je n'ai pas compris les métaphores que vous avez fait.
    Expliquez moi plus simplement si ça ne vous dérange pas
    merci

  10. #10
    Membre confirmé Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Points : 633
    Points
    633
    Par défaut
    En gros, il y a moins de restriction en c++ (utilisation des pointeurs par exemple), ce qui peut être parfois dangereux, mais parfois bien pratique aussi...
    The mark of the immature man is that he wants to die nobly for a cause, while the mark of the mature man is that he wants to live humbly for one.
    --Wilhelm Stekel

  11. #11
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Et le fait est que si tu te lances dans du C++ même si ça va demander un effort plus considérable que java/C#, passez à ces derniers par la suite, se fera comme sur des roulettes...
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

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

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par louzorios Voir le message
    je n'ai pas compris les métaphores que vous avez fait.
    Expliquez moi plus simplement si ça ne vous dérange pas
    merci
    Je présumes que cela fait suite à l'intervention de Lavock
    En bien ou en mal :
    Le c++ est un langage de "bidouille" qui ne t'empêche pas de te "tirer une balle dans le pied", mais du coup est un peu plus "libre".
    En fait, il faut se dire que java est du genre à admettre la médiocrité:

    C'est un langage exclusivement orienté objet qui se base même sur le "tout objet" (toute classe hérite implicitement d'une classe Object).

    Il a été conçu de manière à empêcher ou décharger le programmeur de certaines pratiques considérées comme "dangereuses".

    Les deux grands exemples sont l'héritage multiple qui est interdit et le garbage collector qui s'occupe de tout ce qui a trait à la gestion de la mémoire.

    Un autre exemple que nous pourrions citer de sa tolérance de la médiocrité, bien qu'il ne s'agisse pas d'une pratique dangereuse, c'est la décision qui a été faite de considérer toute fonction membre comme étant virtuelle, point, barre.

    Et nous pourrions citer plein d'autres exemples du même cru

    Le résultat est un langage, certes, facile à apprendre, mais, c'est pour la raison principale qu'il a placé des restrictions artificielles afin de permettre au programmeur ou au concepteur d'ignorer purement et simplement des problèmes tels que la gestion de la mémoire, ceux qui pourraient être induits par l'héritage multiple ou encore le surcout que peut impliquer la virtualité des fonctions membres.

    De ce fait, même un programmeur "médiocre" peut très bien s'en sortir avec un raisonnement bancal ou une conception insuffisante voire inadaptée et obtenir malgré tout quelque chose qui, en première analyse, pourrait sembler "tenir la route".

    Java est donc, certes, sécurisant à utiliser, mais, d'un autre coté, tu dois prendre ces restrictions en compte dés l'étape de conception, ce qui fait que tu perd en liberté et en souplesse au niveau du travail préliminaire à l'écriture du code.

    Pire encore, on constate qu'il aborde certains principes (comme le principe de substition de liskov) et lois sous un angle assez particulier:

    Bien sur, il n'est pas faux de dire que "tout est un objet", mais il est malgré tout difficile de trouver des propriétés commune à une feuille de papier, une pommes et une voiture (et je ne parle même pas des chiens et des chats )

    Or, lorsque l'on regarde la classe Object, on remarque, entre autres, les fonction toString et equals.

    Si nous devions respecter Liskov, nous ne pourrions décemment pas envisager de faire dériver FeuilleDePapier, Voiture ou Pomme de Object, d'abord parce qu'il est impossible de comparer une feuille de papier ou une pomme à une voiture, ensuite parce que la propriété toString n'a aucun sens pour de tels objets...

    L'autre exemple à mettre en avant est la loi demeter qui est joyeusement bafouée par certains environnements de développement qui nous émettent joyeusement un avertissement si par malheur on ne place pas un accesseur, ou pire encore, un mutateur sur chaque membre d'une classe...

    C++ quant à lui est entre autres un langage orienté objet...

    En effet, c'est un langage qui supporte et qui intègre naturellement trois paradigmes distincts:
    • Le paradigme procédural pur et simple
    • Le paradigme orienté objet
    • Le paradigme de programmation générique
    Et, surtout, C++ a pris dés le départ de ne placer aucune restriction artificielle:
    L'héritage multiple est autorisé
    • L'utilisateur peut gérer lui-même la durée de vie des objets qu'il utilise
    • les fonctions membres peuvent être virtuelles mais ne le sont pas d'office
    • Il n'existe aucune classe qui serve de base à toutes les autres
    • ... la liste des différences est encore longue
    Le résultat est un langage finalement bien plus complexe à l'apprentissage, si, du moins, il est question de le maîtriser, mais qui laisse une liberté et une souplesse bien plus importante au programmeur ou au développeur.

    La souplesse dont il est question est celle de ne pas être limité dans les possibilités de développement: si tu as besoin d'un héritage multiple, tu ne va pas te retrouver à essayer de le contourner en mettant un quelconque processus bancal basé sur l'agrégation au point: tu utilisera effectivement l'héritage multiple.

    Le revers de la médaille, c'est que si le programmeur ou le développeur sont médiocre, la liberté que C++ leur donne va jusqu'à... celle de faire d'énormes boulettes... de se "tirer une balle dans le pied"

    Car toute erreur commise se payera tôt ou tard au "prix fort", par l'obtention d'un résultat aberrant, par un plantage magistral ou par la nécessité de "tout casser" pour permettre l'évolution au delà d'un certain point (mais cette nécessité apparait aussi en java ).

    Autrement dit, un programmeur médiocre ne pourra jamais obtenir qu'un résultat médiocre, mais un programmeur (ou un concepteur) présentant un haut degré d'excellence sera en mesure de fournir un résultat présentant un haut degré d'excellence et d'efficacité
    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

  13. #13
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 109
    Points : 52
    Points
    52
    Par défaut
    apparemment le choix est difficile à faire mais après vos réponses je me sens plus alaise avec le c++ malgré ses exigences.Dans un autre forum quelqu'un m'a dit que trouver un travail de développeur JEE est plus facile et mieux rentable que C++.
    Comment trouvez vous cet avis?
    Merci

  14. #14
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    J'en pense qu'en tant que débutant, ce ne sont pas tes compétences qui seront regardées, mais le plus souvent ton diplôme. Si tu maîtrise bien C++, tu pourras toujours t'adapter à Java pour gagner ta croûte.

    L'inverse est moins vrai, par contre.

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Août 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 159
    Points : 171
    Points
    171
    Par défaut
    Le plus important c'est:
    - C'est de connaître la programmation orientée objet et la généricité.
    - Pouvoir vendre ses connaissances sur le marché de l'emploi.

  16. #16
    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
    J'en pense qu'en tant que débutant, ce ne sont pas tes compétences qui seront regardées, mais le plus souvent ton diplôme. Si tu maîtrise bien C++, tu pourras toujours t'adapter à Java pour gagner ta croûte.

    L'inverse est moins vrai, par contre.
    De mon experience, l'expérience même personelle est plus importante que les diplomes dans les milieux requérant C++. Pour ce qui est du Java, visiblement, si l'employeur se base plus sur le diplome que sur un test ou les projets persos, il y a de fortes chances pour que la qualité du code soit médiocre (même si certainement suffisante).

    Enfin c'est une autre discussion.

    Sinon, ça a été sous entendu sans être dit : en C++ pour être vraiment efficace tu dois comprendre les "tripes" des différentes possibilitées du language; c'est en grande partie ce qui fait qu'une fois dans un autre language tu peux imaginer facilement (avec de l'experience en C++) comment est implémenté ce qui est géré automatiquement par ce language (comme un garbage collector, ou bien les références d'objets).

  17. #17
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 109
    Points : 52
    Points
    52
    Par défaut
    je vous remercie pour vos réponses
    Maintenant si on regarde les 2 langages de point vue Domaines d'applications , on connait qu'une application java peut être soit une application client (j2se) soit une applet soit une servlet(j2ee) mais aussi j2me .Je me demande ici : C++ peut il affronter java dans tous ces domaines?
    Merci

  18. #18
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Y'avait pas eu plus de 100 pages de troll java vs C++ ?
    Je le retrouve plus

    Edit: ah ba si. Il est ici .

    Enjoy
    "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)

  19. #19
    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
    louzorios> Théoriquement, C++ peut être utilisé pour faire n'importe quel type d'applications et Java presque n'importe quel type d'application, juste pas tout ce qui touche directement a la machine comme des drivers.

    Dans la pratique on retrouve souvent C++ dans l'embarqué, dans les jeux vidéo, dans les applications de traitement a haute performance, Java dans les applications Web, et les deux pour des applications "outil" (avec un GUI).

    En gros.

  20. #20
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par Klaim
    Dans la pratique on retrouve souvent C++ dans l'embarqué, dans les jeux vidéo, dans les applications de traitement a haute performance, Java dans les applications Web, et les deux pour des applications "outil" (avec un GUI).
    Dans l'embarqué ? Pas si sûr.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

Discussions similaires

  1. Communication entre deux programmes Java. http ? Rmi ? WS ? Autres ?
    Par tiboudchou dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 26/03/2009, 12h50
  2. Comment tuer un java.exe individuellement des autres ?
    Par Battosaiii dans le forum Windows XP
    Réponses: 3
    Dernier message: 18/11/2008, 09h43
  3. Réponses: 13
    Dernier message: 27/02/2008, 16h01
  4. Générer une classe java à partir d'une autre
    Par hebmaster dans le forum Général Java
    Réponses: 5
    Dernier message: 29/05/2006, 16h09
  5. appel d'une class java en javascript ou autre
    Par tit_oune dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/04/2006, 15h24

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