"facilement portable sur toutes les applications alors Java ou C# conviennent très bien"
Et puis en fait c'est pas tout à fait vrai pour C#. Erf j'ai posté trop vite ![]()
Je ne sais pas qui a dit que "sur ce forum on aimait pas Java" mais aussi loin que je sache c'est totalement faux. Parce qu'aussi loin que je sache ce genre de discussion se termine toujours -et à très juste titre- par les doyens qui stipulent que "le langage importe peu, ou a très faible échelle et on ne peut comparer des langages juste pour le plaisir de les comparer sans d'autre critère que celui de l'esthétisme ou de la portabilité".
Pour débuter en POO, j'ai tendance à conseiller un langage tel que JAVA ou C# qui ont comme grand intérêt d'être dédié à la chose (notamment l'utilisation des bibliothèques standards déjà orienté objet) et surtout ne pas s'embêter avec la notion de pointeur, et car le code est plus "lisible". Mais bon, ce n'est que mon avis.
Double Post dsl :
@Aldebran, je crois qu'il y a le projet Mono pour exécuter du C# sur des machines non Windows, mais bon j'ignore si c'est efficace ou non.
"
@Aldebran, je crois qu'il y a le projet Mono pour exécuter du C# sur des machines non Windows, mais bon j'ignore si c'est efficace ou non."
c'est nul, t'as pas le JIT sous ios. ![]()
pierreonxbox dit "Pour débuter en POO, j'ai ..."
Pourquoi il faudrait commencer par la POO ? D'ailleurs quand tu apprends JAVA ou C#, tu commences pas par la POO. Tu commences par les structures de controles et les variables qui sont les memes dans tous les langages imperatifs.
(Quelqu'un a deja vu un cours qui presente les notions d'objets avant les structures de controles ? Perso j'en ait jamais vu, mais ca pourrait avoir du sens...)
Perso j'ai officiellement eu un cours sur l'orienté objet en Java avant de voir les boucles while et for... ![]()
Officieusement on les connaissait déjà donc ça a pas changé grand-chose. ![]()
Officieusement tu entends quoi ?
Si ton cursus pedagogique prevoit que tu ais vu d'autres langages en amont ca ne sert pas a grand chose de revoir les variables dans tous les cas. Pour les structures de controles elles sont tellement similaires avec C++ dans tous les cas en Java que tu peux les voir sur le tas dans l'introduction a la POO, la vraie, la dure, la made in Java.
(De toute facon pedagogiquement parlant un cours de POO illustre avec d'autres exemples qu'en Java n'a pour moi pas grand sens (tention j'ai bien dit illustre)).
@godrik, tu m'as mal lu, j'ai n'ai pas dit qu'il fallait démarrer par la POO, mais que si une personne doit ce familiariser avec (Sous entendu, les bases de la programmation sont connues), il vaut mieux commencer avec JAVA plutôt que du CPP
Pour résumer un peu les forces et faiblesses des 3 langages(avis très personnel dû à ma propre expérience) si ça peut t'aider:
Java et C#:
+Bons IDE(notamment au niveau de l'autocompletion)
++Garbage collector
+Faciles à prendre en main
+Bibliothèques de bases bien fournies
+Reflextion(et tout ce qui va avec comme la sérialisation)
+Threads intégrés au language
-Machine virtuelle(lenteur)
-Contrôle limité sur la mémoire
Java:
-POO obligatoire, pas de paradigme alternatif
-Language assez pauvre par rapport au C#
-pas de surcharge d'opérateurs
C#:
+Lambdas, délégués, LINQ(requêtes dans le langage lui-même)...
+Possibilité de typage dynamique
+Contôle plus fin de la mémoire et des variables que JAVA (structs et nullables, passages ref et out, pointeurs, destruction déterministe...)
+plein d'autres choses
C++:
+Templates extrêmement puissants, encore plus avec les templates variadiques de 1x
+Toutes les nouveautés du C++0x(lamdas, inférence, list-initializers, rvalue ref...)
+Performance
-Trop verbeux
-IDE moins bons, surement à cause de la complexité du language
-Mauvaises surprises vite arrivées si on fait pas assez attention
-Typage très statique, surement pour les performances
Je réagis la-dessus :
"-Language assez pauvre par rapport au C# "
Un des points reprochés à Java est justement la profusion de bibliothèque tierce, à tel point qu'on ne sait plus vraiment où donner de la tête.
Vu que tu bases ceci sur ton expérience, comment en es-tu arrivé à cette "conclusion" ? (c'est de la curiosité simple hein
).
Tiens du coup je me suis mis a jour sur le C++0x grace a ton message et je t'en remercie, il etait temps.
Je reviens sur quelques points (de maniere pacifique
)
Un langage est un langage, si on commence a s'amuser avec les IDE ca devient dangereux. D'ailleurs je n'ai pas compris le probleme avec le C++. Avec Intelisense et la fonction d'auto-completion quasi trouvable sur tous les IDE C++ je ne vois pas ou est le probleme et donc la difference avec les deux autres zigotos.3
Concernant Java il faudrait se mettre d'accord. Si le garbage collector c'est bien mais tu as un controle limite sur la memoire alors je ne sais plus trop quoi penser personnellement. Alors c'est bien le garbage collector ou c'est pas bien selon toi
?
Que veux tu dire par lang-uage assez pauvre par rapport au C# ?
Le C++ trop verbeux ?... Pourquoi pas. Par rapport a C# et Java ?! Alors la je dis non ! Si on fait la somme des keywords on va s'amuser je crois
"-Mauvaises surprises vite arrivées si on fait pas assez attention " C'est a dire ?
"-Typage très statique, surement pour les performances" C'est a dire aussi ?
PS: C'est langage en francais pas language.
Merci pour tes eclaircissements ![]()
Il a voulu dire que d'un point de vue purement langage, java a du retard par rapport à son concurrent, et je pense aussi que C# est supérieur sur un plan langage.
En c#, il y a bien plus de sucres syntaxiques qu'en java, les génériques supportent sans douleur les types primitifs etc...
Je me permet de répondre
""Un langage est un langage, si on commence a s'amuser avec les IDE ca devient dangereux. D'ailleurs je n'ai pas compris le probleme avec le C++. Avec Intelisense et la fonction d'auto-completion quasi trouvable sur tous les IDE C++ je ne vois pas ou est le probleme et donc la difference avec les deux autres zigotos.""
De mon expérience, les IDE java sont 10x supérieurs. L'autocompletion avec doc capable de trouver des classes non importées, le refactoring étendu, la correction à la volée.
Le C++ est extrêmement dur à parser et les possibilités de complétion sont difficiles à indexer, contrairement à java où un classpath est clairement défini.
Pour avoir eu l'occasion de comparer les 2, ce n'est pas parce que ça s'appelle "autocompletion" dans les 2 cas que c'est aussi poussé.
""Concernant Java il faudrait se mettre d'accord. Si le garbage collector c'est bien mais tu as un controle limite sur la memoire alors je ne sais plus trop quoi penser personnellement. Alors c'est bien le garbage collector ou c'est pas bien selon toi
?""
Dans la majorité des cas c'est bien de par la sécurité que ça apporte. Maintenant il faux savoir qu'il existe des GC en C++ mais ce n'est pas dans le standard.
""Que veux tu dire par lang-uage assez pauvre par rapport au C# ""
Voir mon post ci-dessus
""Le C++ trop verbeux ?... Pourquoi pas. Par rapport a C# et Java ?! Alors la je dis non ! Si on fait la somme des keywords on va s'amuser je crois
""
Scala, qui contient une foule de keywords est considéré comme très concis. En C++ pour une classe tu as déjà systématiquement 2 fichiers par unité de compilation qui contiennent souvent une bonne partie des noms en double déjà.
""-Mauvaises surprises vite arrivées si on fait pas assez attention " C'est a dire ?""
Fuite de mémoire due à une ressource mal libérée, ou dangling pointers etc... Cela dit on a pleins de solutions pour éviter ça mais faut être prudent une exception mal placée est vite arrivée.
Enfin pour ma part, la chose que je reproche au C++, c'est le temps de compilation surtout.
Pour les IDE de toute facon on est d'accord que le Java ca dechire... Mais encore une fois est-ce que ca a clairement un sens de comparer un langage pour son IDE ? C'est une question ouverte hein.
C'est vrai que par verbeux j'entendais plutot "inutilement complexe et riche en keyword".. mais si j'en crois le dictionnaire c'est faire fausse route de ma part. Or nous sommes d'accord qu'en tres grande majorite le C++ est plus long que du Java ou C#... Ce qui est de toute facon l'inevitable consequence d'un langage plus bas niveau.
Well en fait concernant le Garbage Collector moi j'ai mon avis sur la question depuis bien longtemps je voulais juste savoir clairement le sien car ces deux avantages et inconvenients mis bout a bout faisait un bug de reference a la compilation.
Et le truc _skip c'est que en fait oui tu reponds pour lui c'est un peu dommage car je pointais juste du doigt des phrases qui a mon sens laissaient libre court a l'interpretation (et qui dans le cadre de ce topic didactique necessiterait d'etre un peu plus verbeuses et explicites pour le coup). Parce que hyrulink toi et moi savons bien ce qu'il y a derriere ces phrases un peu floues de toute facon, je pense juste que l'auteur du topic meritait de le savoir ![]()
_skip a bien répondu à la plupart des points selon mon point de vue.
Pour les IDE je suis d'accord que c'est dangeureux de les mettre dans la comparaison mais dans la pratique un bon IDE apporte tellement de confort qu'on ne peut pas y faire abstraction et comme je l'ai dit c'est personnel donc il existe peut-être un IDE qui prends en charge le C++ aussi bien que C# pour Visual et JAVA pour NETBeans/Eclispe mais pour ce que j'ai pu tester(Visual, Borland, CodeBlocks) ce n'est pas le cas et ça me semble normal vu la grande complexité du C++ qui n'a pas été fait dans cette optique à la base.
Le GC n'est pas "bien" ou "mal" mais comme tout ça dépend du projet, dans un projet où les perfs sont cruciales il faut éviter mais sinon ça apporte un gain de sécurité et de stabilité tel qu'il est quand même difficile de s'en passer.
Au niveau du typage: en C++, les informations de type ont quasiment disparues après la compilation, il est possible d'avoir des infos dessus avec dynamic_cast et co mais ça reste très limité, ipmossible de faire de la réflexion de manière standard étant donné qu'il n'y a pas de norme concernant le stockage des infos de type dans l'executable, chaque compilateur fait comme il veut.
Alors qu'en C# et JAVA les types sont beaucoup plus facilement manipulables à l'execution, il est même possible de typer dynamiquement les variables en C# avec le mot clé dynamic.
Au niveau de la "verbosité" du C++, je ne pense pas que ca soit à cause du bas niveau, mais plûtot à cause du fait que C++ doit être rétrocompatible avec le C et à cause de l'absence de vraies "unités" de code à cause de l'héritage de C encore une fois et enfin des templates, mais c'est excusable vu la puissance gagnée en retour.
tbop2 Voir le profil de tbop2
Posté le 9 juin 2011 à 11:12:52 Avertir un administrateur
Pour les IDE de toute facon on est d'accord que le Java ca dechire... Mais encore une fois est-ce que ca a clairement un sens de comparer un langage pour son IDE ? C'est une question ouverte hein.
Pour un projet professionnel, je dois dire que ça joue un certain rôle à mon avis, voire un rôle certain.
Après le ressenti est toujours différent suivant les personnes, certains jurent que par visual studio, d'autres préfèrent eclipse etc... (Et moi j'en utilise plusieurs, intelliJ étant mon préféré.)
J'ai évalué python/Qt dernièrement, l'absence de complétion satisfaisante, l'intégration doc et tests unitaires assez pourris (ou peut être de ma capacité à les configurer?) sur les différents IDE ont contribué à me faire déchanter.
La présence d'une toolchain de qualité, ça ne doit pas être sous-estimé je pense, surtout sur des gros projets.
En dehors de cela, je pense qu'un IDE de qualité augmente grandement les chances d'une techno de gagner en popularité.
Java, car c'est automatiquement dispo pour tout les OS ;)
Merci pour les réponses