Journal Livre Java ou C++

Posté par  .
Étiquettes : aucune
0
23
juil.
2003
Cher journal,

j'aimerais un langage orienté objet. Je pensais au livre "Apprendre java et C++ en parallèle" aux editions Eyrolles. Mais voilà, il est épuisé. Je n'ai pas envie d'attendre le réédition. Que choisir comme langage? Que choisir comme livre?
Je connais déjà le Turbo Pascal (qui est mort à ce que je sache) et le C.
Je pensais à:
- "Programmer en langage C++" de Claude Delannoy
ou
- "Introduction à Java" aux éditions O'Reilly

...
  • # Re: Livre Java ou C++

    Posté par  . Évalué à 2.

    >> j'aimerais un langage orienté objet

    => j'aimerais apprendre un langage orienté objet
    • [^] # Re: Livre Java ou C++

      Posté par  . Évalué à 1.

      Je ne connais pas les livres que tu donnes ...

      Mais AMHA, commence en Java : c'est moins puissant, mais plus simple à programmer ...

      A priori, je me méfierais de "Apprendre Java et C++ en parallèle", je n'en voit pas l'intérêt ... Apprends Java, et après tu passera à C++ avec les fonctionnalités spécifiques (templates, surcharges d'opérateurs, ...).

      Les problèmes d'apprentissage du C++ par rapport à Java étant :
      - Tout plein de choses possibles, ça devient parfois le bordel de savoir quoi faire
      - C'est proche du C, mais d'un autre coté ça s'en éloigne (programmation objet et tout et tout ...), il y a un risque de transposer des habitudes de programmation en C en C++ (et ça peut être très mal)
      - Si tu commence à utiliser quelques fonctionnalités du C++ (Templates, STL entre autres), la lecture des codes d'erreurs devient très vite le bordel intégral


      Donc mon conseil :
      Commence par Java _seul_

      Je vais essayer de jeter un oeil aux bouquins pour te dire ce que j'en pense ...
      • [^] # Re: Livre Java ou C++

        Posté par  . Évalué à 1.

        Bon, en regardage de table des matières, celui-là à l'air pas mal (mieux) :
        Celui Le langage Java / Ken Arnold, James Gosling, David Holmes ; traduction de S. Chaumette et A. Moussine-Pouchkine ; Vuibert 2001

        Si la bibliothèque de la fac est ouverte demain (pas gagné fin juillet :( ), j'irais y jeter un oeil ...
  • # Re: Livre Java ou C++

    Posté par  (site web personnel) . Évalué à 1.

    Claude Delannoy bof ! (j'ai lu le bouquin dont tu parles et il en a ecrit d'autres notamment comment apprendre C-- avec Visual Chiotte).

    Le livre "Thinking in Java" de Bruce Eckel est dispo sur son site web http://bruceeckel.com/(...) comme son excellentissime Thinking in C++ (il y a 2 tomes pour Thinking in C++ dont 1 pas encore fini).

    La traduction francaise de Thinking in Java est dispo http://penserenjava.free.fr(...)

    Tu peux trouver ces bouquins sur toutes les librairies electroniques et meme en version occasion ca coute beaucoup moins cher. sur Amazon il y a les commentaires permettent aussi d'y voir plus clair.

    Pascal est pas tout a fait mort puisqu'il y a Delphi (windows) et Kylix (linux i386 ?) de Borland qui sont tres (ont ete ?) populaires (Delphi au moins). Il y a aussi freepascal une implementation libre de Pascal + des extensions provenants de Delphi mais peut de monde au niveau des logiciels libres l'utilise compare a C C++ Java ou meme Python.
    • [^] # Re: Livre Java ou C++

      Posté par  . Évalué à 1.

      merci.
      je commence à lire Thinking in Java (version française). Ca a l'air bien, mais je me vois mal lire 500 pages sur mon écran. Le papier c'est plus confortable (mais ça coûte cher).
      • [^] # Re: Livre Java ou C++

        Posté par  (site web personnel) . Évalué à 1.

        Si tu es a l'aise avec l'anglais technique (c'est vraiment pas dur. il y a pratiquement pas de vocabulaire - c'est indispensable en informatique, tous les bons bouquins sont en anglais), achetes toi tout simplement d'occass le livre sur internet, c'est ce que j'ai fait il y a 1 an.
        Par exemple sur amazon (je sais amazon c'est pas bien d'apres la FSF a cause du brevet 1click debile mais ca donne un ordre d'idee et un point de depart).

        http://www.amazon.com/exec/obidos/tg/detail/-/0131002872/qid=105898(...)
        http://www.amazon.fr/exec/obidos/ASIN/0130273635/402-1141180-213531(...)

        Amazon US est souvent moins cher que le FR, quelques fois des bouquins d'occass coutent une bouchee de pain. Ca m'avait pris 3 jours par la poste.

        Je te conseille vivement d'apprendre Java en premier car c'est un language mieux foutu que C++ et on y prend des bonnes habitudes.
        • [^] # Re: Livre Java ou C++

          Posté par  . Évalué à 1.

          "Je te conseille vivement d'apprendre Java en premier car c'est un language mieux foutu que C++ et on y prend des bonnes habitudes."

          "mieux foutu" : Ils ont pas les même objectifs / contraintes / fonctionnements, donc on peut pas dire que Java soit "mieux foutu" que le C++. Plus facile à apprendre / comprendre, oui certainement. Mais il y a des moments ou j'aimerais bien avoir certaines choses du C++ (template, surcharge d'opérateurs) sous Java ...

          "On y prend de bonne habitudes" : Faux. Et même archi-faux. On ne prend pas de bonnes habitudes à cause (ou grâce à ;) ) un langage, mais grâce à un effort de réflexion / programmation. En ce moment je travaille sur des projets faits par des DESS d'informatique (Bac+5) qui ont pourtant eut de bons profs de Java, et ben ils ont réussi à saloper ça d'une façon à peine croyable :(

          Bref Java j'aime beaucoup, C++ aussi, mais c'est pas fait de la même façon et dans le même but ... Par contre à apprendre je conseillerais aussi très fortement Java en premier ...

          Note : une lecture intéressante : The Design and Evolution of C++, de Bjarne Stroustrup, qui explique les choix et les contraintes fait pour le C++. Ca se lit assez facilement, et ça permet de se rendre compte pourquoi la super fonctionnalité de-la-mort-qui-tue de [Nom du langage préféré] n'y est pas ...
          • [^] # Re: Livre Java ou C++

            Posté par  (site web personnel) . Évalué à 0.

            > "mieux foutu" : Ils ont pas les même objectifs / contraintes / fonctionnements,
            > donc on peut pas dire que Java soit "mieux foutu" que le C++.

            Clairement que si !
            Java a ete cree apres C++ et a ameliore certains aspects (on ne s'amuse pas a refaire - toutes - les erreurs du passe), c'est evident tout comme il est evident que les objectifs / contraintes / fonctionnements sont differents.
            Je prefere largement les interfaces aux heritages multiples, les import aux namespaces, les conventions Java a jeFaisCeQueJeVeux du C++, la lib complete et homogene de Java, les fonctionnalites de haut niveau de Java, le ramasse-miettes ect...
            Surtout que les avantages du C++ par rapport a Java dans un contexte d'apprentissage sont beaucoup moins importants que dans la vrai vie.


            > "On y prend de bonne habitudes" : Faux. Et même archi-faux.
            > On ne prend pas de bonnes habitudes à cause (ou grâce à ;) ) un langage,
            > mais grâce à un effort de réflexion / programmation.

            Je prefere largement Java au C++ ou l'on peut encore utiliser des char *, printf() et programmer non objet. Rien qu'en regardant la doc de Java ca donne envie de joliment programmer tout comme regarder la doc de Qt (surtout comparer aux MFC).
            Par exemple avec Java on va naturellement mettre des commentaires javadoc ce que peu de gens ont l'idee de faire lorsqu'ils programment en C++.
            Je trouve donc que l'on prend beaucoup plus facilement de bonnes habitudes en Java qu'en C++, ca veut pas dire pour autant que si l'on programme en Java on acquiert automatiquement les bonnes habitudes.

            Les infomaticiens que tu connais auraient peut etre programmes encore plus crado si cela avait ete fait en C++ et s'ils n'avaient pas eu de cours de Java.
            • [^] # Re: Livre Java ou C++

              Posté par  . Évalué à 3.

              Java pour apprendre mieux que le C++ -> On est d'accord :)

              Après, Java à des gros avantages en pratique (Javadoc, ramasse-miette, ...) -> on est encore d'accord :)

              Mais le problème c'est que pour avoir ces avantages, il y a des choix qui ont été faits à l'origine ... Donc qui peuvent (parfois) te limiter ...

              Le C++ à quand même 2 objectifs qui expliquent pourquoi on a pas tout ça :
              - Compatibilité maximum avec le C (mais pas totale bien sûr).
              - Etre générique.

              C'est pour ça qu'il n'y a pas de ramasse-miette en C++, qu'il n'y a pas de conventions fixées ... Pourtant c'est des choses qui ont été étudiées et envisagées dans le cadre du développement du C++.

              Je pense qu'on peut résumer ça ainsi :
              En Java, on est plus guidé, tu as des conventions déjà définies, des libs complètes et faciles d'accès, une doc très très bien faite, ça devient de plus en rapide avec les versions, c'est plus simple à apprendre.

              En C++, tu as plus de possibilité parceque les choix de développement ont consisté à laisser le choix aux utilisateurs. Donc : tu est moins guidé, c'est moins facile à "bien" apprendre

              (Note -relançons le troll un coup ;) - : c'est quoi les "erreurs" du C++ ? )
              (Note 2 : On peut _aussi_ programmer proprement en non objet)
              (Note 3 : Je défend le C++, mais dans la pratique -je n'ai pas de besoins exceptionnels pour l'instant- je programme en Java ;) )
              • [^] # Re: Livre Java ou C++

                Posté par  (site web personnel) . Évalué à 1.

                > Note -relançons le troll un coup ;) - : c'est quoi les "erreurs" du C++ ?

                Tout simplement les objectifs / contraintes / fonctionnements du C++ de l'epoque sont obsoletes aujourd'hui ?

                Comparer les languages entre eux pour moi c'est simple (mais toujours discutable).
                Le but est de produire de bons programmes et pour moi un bon programme est:
                - exact, stable (ne plante pas et fait ce qu'on lui dit de faire)
                - perfomant (vitesse, occupation memoire)
                - portable
                - extensible
                - reutilisable
                - facilement maintenable (ce qui recoupe un peu son extensibilite)

                On peut imaginer que pour chaques caracteristiques d'un *bon* programme on attribut un coefficient suivant ce que l'on veut faire (programmer un avion, un OS, un site web ect...).
                D'apres mon experience (ce qui est donc discutable) Java est meilleur que C++ car j'arrive a un bon programme (bon etant definit par moi en fonction de ce que je veux faire) plus vite, plus facilement et avec moins de moyens. De la meme facon je peux dire que C++ est meilleur que le C.
                Comment C++ et Java arrivent au resultat (les contraintes et le fonctionnement), c'est pas mon probleme, je m'en fiche.

                C++ a des defaults car il est moins bien que d'autres languages pour arriver a un *bon* programme.


                > Note 2 : On peut _aussi_ programmer proprement en non objet

                oui je fais du Haskell.
  • # Re: Livre Java ou C++

    Posté par  (site web personnel) . Évalué à 3.

    Voila ! Voila ! J'arrive !

    Si tu veux un vrai langage à objet, le plus proche du Pascal est Eiffel.
    Compilo GNU ici : http://smarteiffel.loria.fr(...)
    Livre verbeux et ultra complet (il explique les principes de l'objet donc aplicable à tout les langages, les exemples étant en Eiffel) ici : http://www.eyrolles.com/php.informatique/Ouvrages/9782212091113.php(...)
    Par contre, le seul défaut, c'est que tu rentrera dans un monde où au mieux tu auras pitié des gens qui font du C++ et du Java.

    Si tu veux changer tes habitudes et opter pour le tout dynamique, il y a Ruby voire Small Talk.
    Ruby: interpréteur aussi facile à trouver que pour du perl. Pas de livre en francais il me semble (par contre si tu lis le japonais y'en a à la pelle).
    SmallTalk: c'est surtout utilisé par des universitaires et par Disney :)

    Si tu veux gagner des concours de programmation, il y a OCaml. C'est développé par des francophones (INRIA), il devrait y avoir de la doc p'tet meme des livres. Sinon méfie-toi c'est pas du 100% objet. Gros avantage: ya un interpréteur pour développer et des compilos pour faire peter les benchs.

    Si tu aimes les défis: CLOS. De l'objet dans du lisp (non typé). De mon point de vue qui est subjectif, c'est un peu l'orangina rouge des langages à objets. Par contre pour ce qui est des caractéristiques il y a un méta-niveau qui vaut le détour.

    Dans ton cas et vu tes baggages, Eiffel est très bien et la syntaxe ne devrait pas te perturber.
    • [^] # Re: Livre Java ou C++

      Posté par  (site web personnel) . Évalué à 3.

      c'est un peu l'orangina rouge des langages à objets.

      heu... et est ce tu connaitrais un équivalent du Perrier en matière de langage de programmation ?
    • [^] # Re: Livre Java ou C++

      Posté par  (site web personnel) . Évalué à 1.

      Ruby: interpréteur aussi facile à trouver que pour du perl. Pas de livre en francais il me semble

      il te semble mal (sur ce point ;-)

      http://www.oreilly.fr/catalogue/rubynut.html(...)
      • [^] # Re: Livre Java ou C++

        Posté par  . Évalué à 1.

        Sur tous les autres points aussi. Je connais ce lascar, c'est un universitaire qui n'a jamais tapé une seule ligne de code. Pour lui, la programmation c'est des espèces de notations pseudo-mathématiques (mais qui feraient rire aux éclats un vrai mathématicien).

        Le meilleur langage objet c'est le C++. Les autres sont loin d'être aussi puissants. Le C++ a tout pour lui : il est compilé, rapide, il a les généricités, l'héritage multiple, la redifinition des opérateurs, la surdéfinition des fonctions, etc. etc. etc. En plus sa syntaxe est un standard qu'on retrouve dans d'autres langages moins complets : le C, le Java, le C# et dans une moindre mesure le Perl, de sorte que si jamais on est obligé de les utiliser, on les apprend en l'espace d'un jour ou deux. Par ailleurs leTroll overflowed, core dumped
        • [^] # Java ou C++ : objets encore, gruik toujours

          Posté par  . Évalué à 0.

          Le C++ a tout pour lui : il est compilé, rapide [...]
          Il lui manque juste une documentation digne de ce nom ...

          En ce qui me concerne, j'adore le C++ mais je reprocherai au moins deux choses aux langages objets en général, ceux récents en particulier : la conception des logiciels repose sur le paradigme du langage, est imposée par la "philosophie" de ce dernier ET c'est désespérément consommateur de ressources (matérielles/humaines).
          Du coup, même si en théorie la conception n'est pas attachée à _un_ langage d'implémentation, l'architecte devient "obnubilé" par l'approche objet et la solution apportée à un besoin initial devient systématiquement : complexe, chère, non maintenable.
          Les seules exceptions que je voie concerne les développements _structurés_ de librairies qui se doivent d'être "faciles" à l'usage.

          A l'inverse, des langages comme le C, demandent une réflexion forte en amont, indépendament des "facilités" du langage mais libérée de l'interrogation de la faisabilité technique (avec le C, on peut _tout_ faire ;)

          Et dans tous les cas, la "discipline" de programmation est en chacun de nous. Un développeur ne s'étant jamais posé les questions du comment-réutilisable de projets en projets restera toujours un gros gruik quelque soit le langage _mais_
          - Avec un langage comme le C : ce sera très facile d'être un gruik mais tout aussi facile d'en venir à se poser des questions sur comment ne plus l'être car sinon ça se paie cash à chaque fois
          - Avec des langages comme le C++ et Java (encore plus vrai) : étant intrinséquement plus "structurés", c'est un poil plus difficille mais du coup on ne se pose pas nécessairement les bonnes questions et on se repose sur les facilités du langage...

          Pour finir, je dirai que le Perl est séduisant, une base de C, quelques concepts du shell, des possibilités objets mais pas trop.
  • # Re: Livre Java ou C++

    Posté par  . Évalué à 1.

    Je ne sais pas si c'est une bonne idée d'apprendre en parallèle Java et C++ dans le même bouquin, enfin c'est mon avis après tout... Sinon, je te conseillerai plus le Java que le C++ qui est davantage objet que C++, il est bien plus facile d'accès pour débuter après tu peux enchaîner sur le C++ éventuellement.
  • # Re: Livre Java ou C++

    Posté par  . Évalué à 1.

    Je pensais au livre "Apprendre java et C++ en parallèle" aux editions Eyrolles. Mais voilà, il est épuisé. Je n'ai pas envie d'attendre le réédition.

    La réimpression sera livrée dans le mois qui arrive.
  • # Et Python?

    Posté par  . Évalué à 1.

    Pour moi je prendrais Python.
    Pourquoi? Pasrce que Python est un langage concu POUR apprendre l'informatique, c'est un lagage progressif. Tu peux faire du cript, coder comme un cochon au début (mais moins qu'en Perl, les gardes-fous sont beaucoup plus importants) et passer au langage complètement objet.
    Honnêtement pour commencer cela me semble très bien. La passerelle vers l'apprentissage de Java est ensuite très simple.
    Pour le C++, si tu as pris les bonnes habitudes de programmation Python et Java tu devrais t'en sortir, mais tu risuqe de na pas voir l'intérêt, surtout que Python et Java sont portables de façon infiniment plus simple que C++, je ne rentre pas dans les détails type -précompilation et tout et tout, je dis juste que pour commencer à penbser objet autant apprendre un langage simple et très utilisé dans le monde du libre (essaye pas d'apprndre l'objet avec Perl par contre, c'est pas pour troller mais il vaut mieux avoir pris de bonnes habitudes AVANt de commencer PErl).

    Régis,
    • [^] # Re: Et Python?

      Posté par  (site web personnel) . Évalué à 1.

      > Pour moi je prendrais Python.
      > Pourquoi? [...] Tu peux coder comme un cochon au début [...]

      Faut vraiment pas avoir programme beaucoup en equipe pour considerer ca comme un avantage.
      Je suis pas pres de faire du Python (et encore moins du Perl).
      • [^] # Re: Et Python?

        Posté par  . Évalué à 2.

        Quand je parle de programmer comme un cochon je veux dire programmer comme un débutant ;-) Si pour commencer à faire ton Hello World un peu avancé il faut que tu te tapes la compréhension des makefiles et tout le toutim c'est dur. En Python l'apprentissage est PROGRESSIF.
        Au final Python est le langage le plus propre que je connais. L'indentation fait partie du langage, la documentation aussi. En travail d'équipe c'est parfait car relire du python est aisé, quel que soit le passé de chaque programmeur, et il est extrèmement difficile d'écrire du 'obfuscated python' -- même si cela existe : http://p-nand-q.com/python/obfuscated_python.html(...)
        D'ailleurs la chose la plus confuse en python ce sont les fonctions lambda, possibilité offerte aux programmeurs que l'auteur du langage regrette.
        Bon, l'exemple que je donne va contre moi. Mais regarde un peu du code Python et réjouit toi ami, il y a du joli code en ce monde:
        Tiré de la FAQ de GNUE (http://www.gnue.org(...)), projet on ne peut plus 'pro', à la question Pourquoi Python et pas Java ou Perl:
        "(...) Other free scripting languages could have been used. However, the same arguments against Perl usually hold for these as well. Perhaps other languages would have worked just as well. The bottom line, however, is that Python was chosen early on, has a tremendous standard library, has proven itself with respect to clean code, and is well-liked by the GNUe developers, so we see no reason to change. "

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.