Bonjour,
Je sais, c'est un vieux débat sans réponse, mais je suis vraiment pas sûr dans tout ça.
J'habite en Australie, et je vais passer mon BAC d'ici deux semaines. La rentrée universitaire australienne se faisant en Fevrier (ou Mars, je sais plus), j'ai quelques mois d'attente.
J'ai l'intention de faire des étude d'ingénierie de logiciel (software engineering), ayant déjà fait de la programmation très amateur avant (un peu de java, un peu de C++, et un peu d'objectif-C, et beaucoup de langages web comme php et javascript). J'ai donc quelques notions dans ces différents langages.
J'ai décidé de vraiment m'investir dans une langue pour les mois à venir. Ayant fait un premier ratissage, j'en suis arrivé à trois concurrent :
un langage .NET (/ le C#)
le java
le C++
Bizarrement, seuls les deux derniers m'ont plus tenter. Disons que j'avais un tout petit peu d'expérience en ces langues, et puis bon...
J'en arrive donc à ça :
JAVA VS C++
Et là, je sais plus. Je sais que les deux nécessite des connaissances de la POO (notamment Java qui fait quasi que ça), que le C++ a les pointeurs, et donc accès à la mémoire, ce qui est dangereux et source d'erreur, tandis que le java a le garbagecollector qui fait tout mais qui ralentit, sachant que le java tourne sur une machine virtuel qui compile le byte-code à la volée et qui...
...
Ouais bon, j'ai fait des recherches sur le net quoi sur les différents débats existant entre ces deux langages, et ça m'a encore PLUS pommé. Mais au moins je suis pas le seul perdu. Il y a même une page wikipedia sur ça :
http://en.wikipedia.org/wiki/Comparison_of_Java_and_C%2B%2B
C'est dire...
J'ai entendu dire que pas mal de programmeur C++ se tournait vers le Java en ces temps. J'ai cherché pourquoi, j'ai pas trouvé, si vous avez la réponse...
Je me suis finalement intéressé aux capacités de ces langages. Aucun n'est plus puissant que l'autre, mais le C++ a quand même la classe (même si Java a aussi des classes... haha... non ?).
BREF ! Ça fait une semaine que je parcours le web et que je me POMME ! Je suis pas vraiment sûr quel langage choisir, j'ai pensé choisir en fonction de ce que je voulais faire (j'en ai aucune idée en fait, mais un jeu 2D à la zelda me tentait bien, même si c'est un projet qui m'est apparu il y a quelques années... je sais ça fait gamin, mais crée un univers de jeu vidéo est mon rêve de toujours, même si je n'ai pas commencé la programmation pour ça...), bref de toute façon je ne connais pas la limite des langages...
Je sais que vous pouvez pas me dire "fait tel langage.", mais si vous pouviez éclairer mon esprit sur tout ça, ce serait formidable de votre part. Merci...
C'est vrai que cette question revient assez souvent, et part vite en flame war.
Tu as de la gestion mémoire dans les deux.
En C++, c'est à la destruction qu'il faut surtout faire attention, en Java c'est à la création.
Avec du C++, tu peux faire une gestion mémoire beaucoup plus fine.
Le GC ralentit, mais c'est de moins en moins notable au fil du temps (comprendre "un programme fait avec les pieds sera lent, quel que soit le langage), et pour la vitesse, voir le sujet "Le langage le plus rapide" posté récemment.
Personnellement, je trouve le C++ plus complique que le Java, mais ça vient d'un de mes professeurs, donc ce n'est pas vraiment ça :/
Le C++ te permet plus de liberté, en te permettant de faire de l'objet, ou pas, ou un mix des deux ... ce qui n'est pas forcément une bonne chose quand on a de bases solides sur la compréhension objet, procédural ... je pense.
De toutes manières, que tu te lances dans l'un ou dans l'autre, les deux sont très utilisés.
Par contre, pour les jeux vidéos, sache que le C++ est BEAUCOUP plus utilisé que le Java dans ce milieu.
On peut dire que le C++ est plus compliqué par sa capacité ? Mais en même temps ça amène pas plus de possibilité de ce fait ?
Ton poste est interéssant, je vais voir le topic sur le langage le plus rapide merci ![]()
(même si la vitesse n'est pas forcément mon intérêt premier, mais plus de faire des trucs libre...)
Le truc c'est qu'il faut encore une fois differencier langage des API. Apprendre un langage (au sens bete du terme on va dire) ca ne prend generalement pas quatre mois. Apprendre a maitriser une architecture, des patterns recurrent, bien coder, et une API externe ca c'est un autre probleme.... et recurrent a TOUS les langages.
Moi je serais toi j'apprendrais les deux durant quatre ou six mois. Tu sembles assez ouvert d'esprit pour le faire de toute facon. Ensuite tu verras en fonction de ton projet et tes preferences ce que tu veux faire.
Moi perso pour faire les jeux en ce moment je conseille d'apprendre le C# et de passer par XNA. C'est un peu lourd mais a la fin vu comme le framework est super bien fait je pense que tu es gagnant sur tous les points si tu sais t'accrocher.
tbop2
Tu me fais penser à une question que je m'étais posé : Vaut-il mieux apprendre les concepts d'algorithmes et de la POO avant ou foncé tête baissé sur un (ou des du coup) langages ?
Et tu viens de me remettre en doute maintenant avec le C#, que j'avais "exclu" en parti parce que j'en entendais peu parler à côté du Java et C++
(même si j'en suis allé jusqu'à m'interessé au Fortran...).
Enfin merci, je vais me renseigner un peu plus sur le C#
J'ai lu le topic sur la vitesse, j'en ai compris la moitié (reimplementer std::vector et std::map. ? De quoi ?), mais on voit un peu les raisons qui font que java est préjugé comme lent, c'est intéressent ![]()
A mon avis, il est plus intéressant de voir d'abord la théorie de la POO, et ensuite de l'utiliser en cas pratique avec un langage OO, plutôt que de s'amuser à apprendre les concepts avec un langage.
Les théorie et les concepts ne changent pas (ou très peu), mais leur implémentation dans les langages ne sont pas les mêmes.
Ça fait deux choses à apprendre en fait, les théories et leurs pratiques dans les langages ?
"Apprendre a maitriser une architecture, des patterns recurrent, bien coder, et une API externe ca c'est un autre problème.... et recurrent a TOUS les langages. "
Ça aussi faudra que je le vois, mais ça varie tant que ça entre les langages ?
(Pour les API, je sais que ceux de C++ sont bordeliques et indépendants et ce de java sont tous de sun - et ceux de C#, j'en sais rien, mais c'est plus le reste qui m'interesse ici)
Tu sais mal
Les API c'est partout pareil, il y en a des bonnes et des moins bonnes. Et les API de C++ ont aussi leur chef d'oeuvre (cf toute API professionnelle tournant dans les milieux des jeux videos par exemple... ca reste du must en matiere d'opti, d'imbrication, d'esthetisme).
Apprendre le theorique pur c'est se faire du mal pour rien Bunyan, mettre en pratique avec son langage actuel c'est toujours mieux. Il faut jouer entre les deux c'est dix fois plus formateur et efficace de toute facon. La syntaxe varie mais c'est vrai que pour la POO le langage parfait de chez parfait pour mettre en pratique c'est Java et pas C++. Quoi que C# frole Java sur ce point quand meme.
C# ? En entendre peu parler ? Ah ouais ?
-> http://www.developpez.net/forums/d683199/general-developpement/debats-developpement-best-of/langage-programmation-prefere-2009-a/
Excuse mon ignorance
Pour le C#, le pire étant que je me suis basé sur ce sujet : http://www.developpez.net/forums/d991944/general-developpement/debats-developpement-best-of/langage-programmation-prefere-2010-a/ , qui montre le C# devant le C++. J'ai vraiment été aveugle...
J'ai fait des recherches dessus et sur le XNA, c'est intéressant, même si je trouve mal encore des exemples concrets de jeu fait ainsi (un service Xbox est apparament en place... youtuuuube
)
J'ai juste trouvé ça : http://www.developpez.com/actu/32281/Quel-avenir-pour-le-C-dans-les-jeux-videos-Pourra-t-il-concurrencer-le-C-dans-un-futur-proche/ ![]()
Il y a ce site aussi qui fait des sondages sur la popularité des langages de programmation:
http://www.langpop.com/
tbop2, concernant le théorique, j'ai fait un p'tit cours à un ami qui voulait se lancer dans le Java.
De son retour, il m'a beaucoup remercié de ce p'tit cours totalement théorique sur la POO quand il a lu plusieurs tuto sur le Java après =)
Après, je me suis mal exprimé je pense, je ne dis pas de connaître absolument toute la théorie par coeur, mais au moins avoir l'approche théorique histoire de ne pas du tout être perdu quel que soit le langage (fonction membre et méthode par exemple
).
Tu vas faire t'orienter génie logiciel donc?
Ce que je te conseil, c'est de regarder ton programme de l'année prochaine, de voir quel langage est le plus utilisé puis de l'apprendre.
Ça te fera d'une pierre deux coups (à part si le langage le plus utilisé est le Cobol....)
P.S : Si le langage le plus utilisé est le Cobol, change d'école ![]()
http://create.msdn.com/en/en-us/home/about/how_it_works
Si tu veux faire des jeux je trouve vraiment que l'architecture template du xna te permet de coder de maniere encadree et de bien comprendre comment s'emboitent les differentes parties d'un jeu.
Mais qu'on ne me fasse pas dire ce que je n'ai pas dit. C'est pas mieux "qu'un autre langage". Je pense juste que le framework XNA est vraiment super bien faite et ludique. Le mieux ca restera toujours de savoir au minimum C++/C/Java/C# de nos jours. Mais ton ecole te formera t'inquiete pas pour ca.
Ah moins que tu veuilles passer ta vie comme expert en securite des systemes informatiques financiers c'est pas trop genial non.
J'avais vu ça comme une manière plus "facile" d'approcher la programmation de jeux vidéo oui, pas forcément ludique mais j'étais pas loin.
Je pense avoir assez d'éléments maintenant (en tout cas j'ai plus de question), va falloir que je me décide. Merci pour votre aide à tous ! ![]()
Java a mauvaise réputation sur ce forum et dans mon école.
Donc comme ça je dirais C++ mais je m'y connais pas du tout.
Après si tu veux développer sur android c'est java qui faut prendre je crois.
Mais bon à mon avis les 2 se valent ![]()
Ils servent pas aux mêmes choses.
Yet antoher personnal opinion:
Pour apprendre la programmation, on se fout completement du langage. Celui ci n'est pas important. Que tu commence par du C, du C++, ou du JAVA, ca n'a franchement pas d'importance. Comme dit precedement dasn le topic, le langage en lui meme ne fait pas tout, il faut se reposer sur des API. Les premieres APIs dans lesquels on se plonge sont BEAUCOUP plus complique que le langage en lui meme.
JAVA a moins de "piege a la con insidieux que C++", mais de toute facon un bon cours te fera programmer sans tomber dans ces pieges la. Donc le langage on s'en fout.
Java, C++ ou C# j'ai tendance à dire que ça dépend surtout de l'objectif qu'on se fixe. Si on veut faire une application type bureautique facilement portable sur toutes les applications alors Java ou C# conviennent très bien. Si on veut faire des trucs beaucoup plus pointus comme de l'embarqué, du traitement d'image ou de la 3D temps réel, alors C++ pourra être un peu mieux. Enfin, si on veut faire du jeu vidéo en utilisant des bibliothèques déjà existantes (et pas des API bas niveau), alors le plus utilisé aujourd'hui c'est C++, mais C# gagne en popularité dans ce domaine.
M'enfin, une fois qu'on maîtrise un langage et les concepts sous-jacents, apprendre un nouveau langage c'est l'affaire d'une semaine ou deux.