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

Langage Java Discussion :

Apprendre Java avant C++ ?


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 79
    Par défaut Apprendre Java avant C++ ?
    Bonjour,
    je débute en programmation. Mon but a terme est de connaître C++ et Java. Et en lisant différents forums certains conseillaient d'apprendre le C++ avant d'apprendre Java et d'autres le contraire.
    J'ai d'abord essaye d'apprendre le C++ mais il n'y a pas de très bon livre en francais pour débutants.

    Je voudrais donc avoir votre avis sur ce sujet.

    Merci.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 466
    Par défaut
    Bonjour

    Je pense qu'avant de faire de l'objet il serait bon de faire du procedural ^^ enfin a la limite tout depend de ce que tu souhaite faire par la suite avec ces languages.

  3. #3
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Salut,

    Citation Envoyé par spawntux
    Je pense qu'avant de faire de l'objet il serait bon de faire du procedural ^^ enfin a la limite tout depend de ce que tu souhaite faire par la suite avec ces languages.
    Là n'est pas la question, on voit tous les jours des débutants montrer de jolies programmations en procédural avec du C++ ou du Java!!! Ce n'est pas parce que le langage est estampillé "POO" qu'on ne peut pas tout mettre en vrac dans une seule et unique méthode... (ou dans plusieurs, mais sans faire de l'objet)

    Personnellement, je ferais ça dans le sens Java puis C++. Au moins pour éviter de se plonger dans la gestion mémoire et toute la gestion des pointeurs et compagnie, qui peut être un point assez ardu si tu débutes...
    Cependant, je ne dis pas que tu seras un dieu en C++ dès le départ si tu maitrises Java! Les deux langages ont leurs spécificités que n'a pas l'autre, mais tu auras déjà assimilé les particularités de la programmation orienté objet (ou au moins une bonne partie).

    En tous cas, je rejoins spawntux (mais je le dirais autrement), si tu es un vrai débutant en prog, commence peut-être par un langage un peu plus simple, au moins pour avoir les bases en algo et savoir organiser un programme pour qu'il fasse ce que tu souhaites. Parce que commencer direct par du c++ ou du java, c'est un peu passer du vélo à la ferrari (sans passer le permis!)
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 466
    Par défaut
    Desolé me suis mal exprimé ^^ Par compte personnelement je serait plus du coté C++ puis JAVA enfin peu etre aussi je dit cela car j'ai commencé par apprendre le C ^^

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 63
    Par défaut
    Bonjour,

    A mon avis, c'est un faux débat. Ce qui est important c'est de bien comprendre la POO (Programmation Orientée Objet) et de construire une architecture solide pour les programmes. Après ce n'est qu'une syntaxe à apprendre et celles du C++ et de Java sont très proches, même s'ils ont leurs spécificités.

  6. #6
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Si tu commences par Java, tu seras démotivé pour faire du C++ car Java répondra à toutes tes attentes ^^

  7. #7
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Citation Envoyé par ®om
    Si tu commences par Java, tu seras démotivé pour faire du C++ car Java répondra à toutes tes attentes ^^
    +1 car dans l'ordre ( sommaire ) des langages c'est :
    assembleur -> C --> C++ --> java
    Commencer par java, pourquoi pas, c'est vrai que c'est plus simple, pas besoin de gérer la mémoire ( en dirait du BASIC à première vue ), mais lorsque l'on commence à maitriser, il y a un grand nombre d'incompréhensions vis à vis du langage ( notament les référence mémoire ) qui pourraient être évitées en commençant par le début, c'est à dire C/C++ ( pas besoin par contre d'aller jusqu'à l'assembleur, quoique pour les opérations binaires... ).
    Donc pour moi : C et C++ avant java, c'est loin d'être obligatoire, mais cela évite beaucoup de questions par la suite.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 136
    Par défaut
    Moi je connais pas mal les deux, et je dirais que C++ est quand même beaucoup plus dur que Java. Noramment en C++ on trouve:

    -Surcharge des opérateurs
    -Héritage multiple
    -Fenêtres windows où on gère toutes les boucles infinies "à la main"

    Mais aussi et surtout gestion de la mémoire (segmentation fault) et débugging (exception généralisées en Java, ce qui simplifie pas mal de choses pour débugger).

    Donc si tu cherches la simplicité, c'est Java. Si par contre tu as un impératif (temps de calcul extrêmement rapide, exécutables natifs par ex.) alors C++ peut se justifier, mais c'est vraiment un language hardcore. Aussi il existe de bien meilleurs outils gratuits pour Java (Eclpise) que pour C++ (Dev C++).

    A+

  9. #9
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par L. Sierra
    Donc si tu cherches la simplicité, c'est Java. Si par contre tu as un impératif (temps de calcul extrêmement rapide, exécutables natifs par ex.) alors C++ peut se justifier, mais c'est vraiment un language hardcore. Aussi il existe de bien meilleurs outils gratuits pour Java (Eclpise) que pour C++ (Dev C++).
    Souvent, pour ce qui est calcul rapide, tu peux faire en C... Le reste en JAVA et tu peux exécuter du C à partir de java en JNI...

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Ca dépend un peu du but final...
    Si c'est pour trouver du travail, je commencerais par java (plus porteur)
    Java est plus simple, mais c++ est plus complet (héritage multiple...).
    D'un point de vue purement POO, java suffit pour commencer

    Pour bien apprendre Java :
    - Tutoriels pour apprendre Java : http://java.developpez.com/cours/
    - Cours Java de jmdoudou : http://jmdoudoux.developpez.com/cours/developpons/java/

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    à la place de complet je dirais plutôt permissif, et acessoirement d'un point de vue Objet l'héritage multiple est plutôt dangereux (conflits entre implémentations d'une même méthode dans deu. Au final il vaut peut être mieux peut être lui préférer le système d'interfaces de java au niveau sureté du code.

  12. #12
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par L. Sierra
    Donc si tu cherches la simplicité, c'est Java. Si par contre tu as un impératif (temps de calcul extrêmement rapide, exécutables natifs par ex.) alors C++ peut se justifier, mais c'est vraiment un language hardcore. Aussi il existe de bien meilleurs outils gratuits pour Java (Eclpise) que pour C++ (Dev C++).
    Il existe de bons outils pour C++ également dont ...Eclipse avec le projet CDT.

    La question du premier langage est pas toujours facile. Personnellement, mon parcours a été C->C++->Java->C++ (puis Java ou C++ selon les besoins). Lorsqu'il s'agit de débuter en C++, on conseille générallement au débutant de s'abraire des détails de trop bas niveau en utilisant les chaînes de caractères fournies par la bibliothèque standard std::strings (qui permettent d'éviter de rentrer trop rapidement dans la complexité de la gestion des chaînes de caractère à la mode C), et la classe std::vector (qui permet de simplifier la gestion des tableaux). Le but dans un premier temps est de laisser les détails complexes du langage de côté pour se concentrer sur le côté algorithmique de la programmation. Pour cela, Java convient tout aussi bien que C++. L'apprentissage de la gestion des pointeurs en C++ est toutefois certainement très instructif.

    Malgré ma préférence pour C++, j'aurais tendance à recommander Java comme 1er langage, car il permet de vraiment se concentrer exclusivement sur l'implantation des algorithmes et évite de perdre des heures avec des détails bas niveau qui ne sont probablement pas d'importance capitale pour un débutant. De plus, je ne crois pas que de goûter à Java fait qu'on a plus envie de se plonger dans C++ par la suite. Tout d'abord, pour chaque problème ou tâche, il convient d'utiliser l'outils le plus adapté. Si Java répond à mes besoin, je ne vais pas m'embêter à coder en C++, de la même manière que si mon problème peut trouver une solution en Python, je vais considérer cette alternative avant toute autre. Dans certains cas, notamment le calcul scientifique où la rapidité de traitement est un facteur important, C++ s'impose.

    IL faut également envisager un aspect culture générale de la programmation qui va avec C et C++. Ce sont des langages qui comptent dans le monde de l'informatique, et je pense qu'il est important d'être familier avec ces langages. Toutefois, on s'éloigne du domaine de l'initiation.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  13. #13
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par OButterlin
    Ca dépend un peu du but final...
    Si c'est pour trouver du travail, je commencerais par java (plus porteur)
    Java est plus simple, mais c++ est plus complet (héritage multiple...).
    D'un point de vue purement POO, java suffit pour commencer

    A+
    L'héritage multiple a mauvaise presse, même auprès des programmeurs C++, et apporte plus de problèmes qu'il n'en résoud. Le mécanisme des interfaces en Java est à mon sens plus propre.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  14. #14
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 291
    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 291
    Par défaut
    Citation Envoyé par plegat
    Personnellement, je ferais ça dans le sens Java puis C++. Au moins pour éviter de se plonger dans la gestion mémoire et toute la gestion des pointeurs et compagnie, qui peut être un point assez ardu si tu débutes...
    Ah la la. Faut arréter de véhiculer ces clichés du temps du C avec classes.
    Même nous en production on évite au maximun d'avoir à manipuler la mémoire explicitement. Le RAII est notre ami (méconnu) pour gérer implicitement et de façon déterministe la mémoire. Et en plus, ça marche pour toutes les ressources, BD comme pots de peintures.
    Et si nous sommes beaucoup à conseiller de voir le C++ avant le C, c'est justement parce qu'un débutant, en C++, n'a pas besoin de s'encombrer avec ces considérations dès le 2e chapitre.


    Quant à l'héritage multiple, encore un truc mécompris. AMHA, Il ne faut pas se jeter dedans tant que l'on n'a pas saisi la différence entre la subtituabilité (google -> LSP) et l'héritage de réutilisation (exécrable argument "commercial" (buzz-word compliant quoi) des années 80/90 en faveur de la POO). A ce sujet, j'ai beaucoup aimé l'approche de ruby que je trouve sémantiquement beaucoup plus claire.

    En fait, l'énorme problème du C++, c'est que sa syntaxe permet de faire bien des choses qui n'ont strictement aucun sens. Du coup, quand on commence à faire des choses sémantiquement incorrectes, on produit vite du n'importe-quoi, cela participe à la compléxité du langage, et entâche clairement sa réputation -- vu que ceux qui l'enseignent ne savent pas toujours comment il faudrait l'utiliser. Le passage C->C++ (de ceux qui encadrent des apprentissages) n'a pas que du bon. Loin de là.

    En ce sens, voir Java avant a du bon. Vu qu'il limite ce que l'on peut faire, on est moins tentés d'utiliser à tords et à travers des choses comme p.ex. l'héritage. Arrivés en C++, étendre la notion d'interface pour définir des contrats devient alors une chose naturelle où l'héritage multiple est parfaitement à sa place.



    Pas vraiment d'opinion pour ce qui est de voir l'un avant l'autre. Perso, j'aurais tendance à partir sur des langages moins "commerciaux" histoire de prendre un peu de recul dès le début. AMA, algorithmie et abstraction sont les choses les plus importantes à assimiler au départ.
    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...

  15. #15
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 109
    Par défaut
    J'ai suivit un ordre un peu different.

    En premier j'ai appris le C pour composants, avec des microcontroleur PIC.
    Bref c'était du C brut, pour dire vrai j'étais régulierement limité par l'espace de stockage du code, la vitesse de traitement (tres faible), l'espace des registres.
    Je crois pouvoir dire que c'était encore plus extreme que le C ou C++ pour ordinateur. (imaginé vos programmes sur un 16mhz, quelques octets de memoire et une dixaine de kiloOctets de stockage)

    J'ai voulu naturellement continuer sur le C++, mais je trouve que c'est inutile. Pourquoi s'embeter avec la gestion des pointeurs,de la memoire...etc... quand le java le fait?

    Les pcs sont bien assez puissants. Le java a repondu a mon attente, plus simple que le C++, plus "propre", mieux "structuré" (c'est discutable). Mais surtout on gagne enormement de temps et on se soulage l'esprit de la memoire pc ...etc...

    en pratique je n'ai jamais eu besoin d'execution qui necessite une ultra-rapidité, donc C++, pas pour moi.

  16. #16
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 291
    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 291
    Par défaut
    Citation Envoyé par eclesia
    J'ai voulu naturellement continuer sur le C++, mais je trouve que c'est inutile. Pourquoi s'embeter avec la gestion des pointeurs,de la memoire...etc... quand le java le fait?
    Oui, excellente question. Pourquoi s'embêter à gérer précisément la mémoire en C++, quand le C++ (je ne parle pas de Java) permet de ne pas se préoccuper de libérer explicitement mémoire comme pôts de peinture ?
    (OK, j'avoue, il faut sortir boost/loki/ACE/... ou attendre le C++09)

    Ce n'est pas parce que l'on peut s'embéter à faire des trucs compliqués en C++ qu'il faut nécessairement le faire.
    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...

Discussions similaires

  1. Apprendre Java J2EE
    Par Oraman dans le forum Langage
    Réponses: 8
    Dernier message: 07/07/2011, 09h05
  2. Combien de temps pour apprendre Java ?
    Par Amine_sas dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 15/10/2008, 19h12
  3. [Débutant] Conseils pour apprendre Java
    Par emary dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2006, 23h31
  4. [Info]Quel livre me conseillez-vous pour apprendre Java?
    Par Sébastien L dans le forum Langage
    Réponses: 25
    Dernier message: 09/02/2006, 21h54
  5. Apprendre JAVA
    Par JAVAPYTHON dans le forum Langage
    Réponses: 5
    Dernier message: 05/02/2006, 23h14

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