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

Langages de programmation Discussion :

Apprendre le Java pour éventuellement passer ensuite à C#, bonne ou mauvaise idée ?


Sujet :

Langages de programmation

  1. #1
    Membre expert
    Homme Profil pro
    Inscrit en
    octobre 2011
    Messages
    2 514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2011
    Messages : 2 514
    Points : 3 253
    Points
    3 253
    Par défaut Apprendre le Java pour éventuellement passer ensuite à C#, bonne ou mauvaise idée ?
    Bonsoir,

    Je me demandais si apprendre le Java pour éventuellement passer ensuite à C# (dont j'entends aussi beaucoup parler) était une bonne idée ?

    Les raisons qui me poussent à cela sont entre autres qu'il y a beaucoup de ressources en français pour apprendre Java, que les outils de développements sont performants et gratuits et bien sûr que ces deux langages ont semble-t-il beaucoup de points communs.

    Il y a aussi le fait que j'ai de toute façon du mal à choisir un langage de programmation par conséquent en procédant ainsi je me dis que j'aurais au moins goûter à Java ce qui serait toujours un plus.

    J'ai l'impression qu'il est possible d'acquérir de bonnes bases avec Java mais en réalité je ne m'y connais pas suffisamment pour faire un choix en connaissance de cause d'où cette présente discussion que j'ouvre pour vous demandez ce que vous en pensez...

    Alors qu'en pensez-vous ?

    Merci.

  2. #2
    Expert éminent sénior
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    6 569
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : décembre 2007
    Messages : 6 569
    Points : 30 812
    Points
    30 812
    Par défaut
    La logique sous-tendue est similaire. C#, d'ailleurs, est au départ destiné à contrer Java. Il permet donc de faire approximativement les mêmes choses, approximativement de la même manière.

    Par contre, les détails changent. Comme tout changement de langage, il nécéssite de changer plein d'habitudes. Mais ça ne sera pas une torsion du cerveau, comme de passer de Cobol à Lisp, par exemple.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : mai 2009
    Messages : 97
    Points : 304
    Points
    304
    Par défaut
    Quel est objectif ? Est-ce que c'est pour appliquer ses connaissances dans son travail ou pour améliorer son niveau de programmation en général ?

    Si c'est pour le 2e objectif, je propose une solution plus décalée. Apprendre l'Haskell ou tout autre langage fonctionnel pure. Pourquoi ? Tout simplement pour améliorer sa capacité d'abstraction, apprendre à tirer partie du Système de typage, à bien poser le problème et pleins d'autres choses.

    Java et C# n'ont pas tant de choses que ça offrir (Leur librairies par contre sont tops). C# (dans sa version 3.0 minimum) offre cependant quelques friandises comme les lambdas expressions et LinQ (les devs de langages fonctionnels ont directement vu que c'était la Monad List "castrée" qui se cachait derrière )

    IMHO, Non encadré, ces langages laissent prendre de (très) mauvaises habitude comme l'utilisation abusive de l'héritage au lieu de la composition par exemple.

  4. #4
    Membre expert
    Homme Profil pro
    Inscrit en
    octobre 2011
    Messages
    2 514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2011
    Messages : 2 514
    Points : 3 253
    Points
    3 253
    Par défaut
    Bonsoir,

    Merci à vous deux et +1 à vous deux pour la peine...

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    novembre 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : novembre 2011
    Messages : 36
    Points : 33
    Points
    33
    Par défaut Dan quel environnement développe tu?
    Si tu as l'habitude de travailler dans un environnement Windows alors va directement à C# afin d'être déjà immédiatement productif dans cet environnement. C# bénéficiant d'une mega-entreprise comme Microsoft derrière lui a beaucoup de tutos de cours et autres versés à profusion sur le net. Il bénéficierait des atouts de Java et C++ selon Microsoft.

    Ensuite après une bonne connaissance de C# tu peux si tu veux passer à java pour bénéficier des privilèges d'un langage portable.

  6. #6
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 2 741
    Points : 5 459
    Points
    5 459
    Par défaut
    Je dirais que pour C# il y a aussi de bons outils performants et gratuits (la version express de VS) et pas mal de ressources en français. Il ne me semble pas nécessaire de passer par la case Java pour aller vers C#.

    Quant à sauter rapidement de l'un à l'autre, non. La syntaxe et la sémantique sont souvent proches voire identiques. Mais apprendre un langage comme C# ou Java c'est d'abord apprendre une plateforme et ses milliers de types et ses dizaines de milliers de fonctions. Et sur ce plan là les similarités existent mais sont beaucoup moins nombreuses.

    Je crois plutôt qu'il faut choisir l'un des deux et s'y investir, d'autant que leurs usages se recoupent rarement : on peut avoir besoin dans un même projet de C#, C++, javascript et python mais je n'ai encore jamais vu de projet où l'on aurait à la fois besoin de C# et Java. Quant à savoir lequel choisir, les deux ont leurs avantages. Personnellement je préfère de loin C# : d'abord parce qu'il est né plus propre en apprenant des erreurs commises par java, ensuite parce que MS a déployé son énorme machine pour apporter tout un tas de choses sexy (aspects fonctionnels, graphes d'expression, inférence de type, typage dynamique, bientôt un "compiler as a service" prometteur, etc) que Java copie avec quelques années de retard : de plus en plus, à lire les changelogs de Java, j'ai l'impression de lire celles de dotnet d'il y a quatre ans. Il n'est évidemment pas parfait mais, de tous les langages, c'est celui avec le moins de points noirs, celui qui me rend le moins amer, me force à faire le moins de compromis et me bride le moins. Une vraie réussite de MS.

    Maintenant, en termes d'emplois, Java est devant me semble t-il. Et l'avenir du mobile dira dans quel sens les choses évolueront. Pour l'instant l'inertie est en faveur de Java même si MS est bien décidé à inverser la tendance.

  7. #7
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : novembre 2002
    Messages : 1 960
    Points : 3 639
    Points
    3 639
    Par défaut
    compilateur as a service, c'est un buzz word pour dire qu'il y a une api pour piloter le compilo ?
    si c'est ca, je veux pas dire, mais ca existe en java depuis un bon moment.
    http://docs.oracle.com/javase/6/docs...e-summary.html

  8. #8
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 2 741
    Points : 5 459
    Points
    5 459
    Par défaut
    @Lunatix
    Non, non, ça aussi ça existe depuis la v1 en dotnet. Non, "compiler as a service" ça recouvre un compilateur c# modulable, écrit en c#, sous forme d'API indépendantes intégrées au framework permettant d'isoler chacune des étapes du pipeline de compilation (parsing, analyse sémantique, de flux et binding, émission de code) et fournissant des services destinés au formatage de code. Enfin, VS a été reconstruit au-dessus de cette pile et offre divers points d'intégration pour des plugins.

    Concrètement, aujourd'hui ça permet :
    * De l'interprétation de code C# à la volée. Aujourd'hui on peut compiler à la volée une assembly à partir de code c# mais là on pourra par exemple évaluer du code référençant des variables locales Eval.Run("myFunc(x + 5)")
    * Écriture aisée de plugins pour générer/refactoriser/transformer le code, forcer des règles personnalisées de qualité de code (reportés comme des warnings dans l'éditeur de code) ou supporter un nouveau langage. Tout cela était bien sûr déjà possible mais il fallait réinventer la roue : créer sa propre analyse sémantique, s'appuyer sur un parser externe (antlr ou autre), etc. Tous ces services étant désormais exposés, cela devient beaucoup plus facile.

    Enfin, à terme, sont évidemment en perspective pour la version suivante la méta-programmation pour par exemple écrire des plugins permettant de supporter un nouveau mot-clé. Cela dit on pourrait déjà, avec la beta, réécrire un parser C# pour ça mais ce serait encore un peu fastidieux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Un livre pour apprendre le Java EE 7
    Par zakii2plus dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 24/06/2015, 16h10
  2. Comment apprendre Java pour faire du développement web
    Par mlaiti dans le forum Développement Web en Java
    Réponses: 14
    Dernier message: 09/02/2008, 17h09
  3. Réponses: 3
    Dernier message: 06/06/2007, 09h18
  4. [débutant]ou mettre un fichier java pour une appli jsp?
    Par zozolh2 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/05/2004, 15h20
  5. java pour gsm
    Par matterazzo dans le forum Développement Mobile en Java
    Réponses: 3
    Dernier message: 11/11/2003, 02h52

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