Java ou C ++ pour les cours CS universitaires?

11

Je suis en train de m'inscrire à l'école pour obtenir un diplôme CS. L'école que je regarde propose en fait à la fois Java et C ++ pour les cours d'introduction au développement de logiciels (programmation orientée objet, modèles de conception, ce genre de choses). C'est l'étudiant qui choisit la piste à suivre, mais il n'y a que le temps d'en suivre une.

Sachant ce que vous savez maintenant, si vous aviez le choix, établiriez-vous votre base de programme CS en Java ou C ++?

Mon débat actuel ressemble actuellement à ceci:

Un bon ami (qui a un doctorat en IA) vante Java comme le meilleur choix indépendamment de ce que je fais, ne serait-ce que pour ouvrir plus de possibilités d'emploi plus tard, bien qu'il puisse être biaisé puisque tout son travail a été à Java (il J'adore ça). J'habite dans la région de Boston, MA, USA et je vois une quantité égale de travail Java et C.

D'un autre côté, bien que je ne sois pas encore tout à fait d'accord sur ce que je veux faire avec le degré quand j'ai terminé, ma préférence serait de développer pour le Mac, ce que je fais maintenant, bien que dans une capacité limitée. À cette fin, je reçois déjà une exposition limitée au C ++, mais je n'en ai pas eu avec Java, et en regardant mes projets dans mon travail de jour, je ne vois pas la nécessité de l'utiliser de sitôt, "bientôt" mesuré d'au moins deux ans.

Je devrais probablement noter que je suis un adulte qui retourne à l'école après 20 ans (je n'ai actuellement aucun diplôme), donc je cherche à maximiser les opportunités et le temps passé du mieux que je peux. Je penche en quelque sorte vers le C ++ mais je suis toujours ambivalent, et quelques conseils objectifs extérieurs pourraient aider ici.

Ou je pourrais juste y penser trop dur.

MISE À JOUR: Il s'avère que la sélection de la langue n'était pas aussi claire que je l'avais initialement supposé. Alors que quelques cours de base se sont concentrés sur Java, certains des autres cours de base fonctionnent principalement en C et en Java, mais aussi quelques autres pour faire bonne mesure. En fait, le reste de mon semestre sera en Objective-C après avoir passé du temps en Java et Javascript. Le semestre dernier, C, Javascript et PHP, ainsi que quelques autres ont été ajoutés en tant que devoirs requis. Étant donné que les choses étaient à peu près réparties dans le milieu et que j'obtiens toujours des réponses à cela, j'essaie maintenant de travailler mon programme de manière à répondre à toutes les exigences du diplôme, mais à absorber autant de langues que je peux raisonnablement gérer. . Jusqu'à présent, mes notes n'ont pas souffert en essayant de le faire.

Philip Regan
la source
1
Tout le monde dans l'environnement de recherche universitaire vante Java en ce moment. De plus, quelle que soit la langue, vous devez apprendre à l'université comment apprendre de nouvelles langues. C ++ existe tout comme Java, mais il n'y a pas d'affirmation qu'ils le seront dans 5 ans. De nouvelles langues / technologies arrivent toujours, vous devez donc être prêt à les acquérir et à devenir rapidement des adeptes.
Chris
1
@Chris: C'est pourquoi ma recommandation serait d'apprendre quelque chose qui facilite l'apprentissage, plutôt que quelque chose qui est populaire maintenant. Je recommanderais C ++ ou Python plutôt que Java (évidemment pour différentes raisons).
David Thornley
Ce n'est pas cette langue qui compte. C'est le concept abstrait. Obtenez le bon concept, afin que les élèves puissent facilement apprendre quoi que ce soit plus tard dans sa vie.
J-16 SDiZ
1
Je suis dans une situation (étrangement) similaire: retourner à l'école pour CS après 20 ans d'absence de l'école. Mon école a également une piste partagée Java / C ++. Après avoir tout lu ici, et même donné +1 à la première réponse, je vais continuer avec Java, et voici pourquoi, au cas où cela vous serait utile: je viens du développement web (Javascript, PHP, Python) , donc la prise en charge des bibliothèques Java est un plus. En supposant que je prenne également le temps de vraiment capturer les principes de la POO, je ne pense pas que passer au C ++ (si nécessaire) sera si difficile. Java est le juste milieu entre l'écriture de scripts et la compilation.
soyez hollenbeck
2
Je pense que je suis en désaccord avec chaque réponse. Ça n'a vraiment pas d'importance . Vous apprendrez des concepts similaires dans les deux langues, et vous apprendrez l'autre langue que vous n'avez pas choisie et d'autres aussi au cours de vos études et de votre carrière.
Matsemann

Réponses:

51

Je choisirais personnellement C ++ car il vous donnera un aperçu du fonctionnement de certaines parties de Java sous le capot (pointeurs par exemple). Passer à Java à partir de C ++ est assez trivial, alors que le déplacement dans l'autre sens est sans doute plus difficile.

La chose vraiment difficile à propos de l'écosystème Java est son grand nombre de frameworks, bibliothèques, etc. - il est peu probable qu'ils couvrent tout cela à l'Université de toute façon.

A la fin de la journée , il ne va pas à la matière que beaucoup la langue que vous choisissez, aussi longtemps que vous apprenez les principes.

Mon JUG va me tuer pour avoir approuvé C ++ ;-)

Martijn Verburg
la source
1
+1 pour un excellent point sur la taille de l'écosystème Java et l'explication de la transition.
Jas
1
Le problème avec l'apprentissage d'un grand écosystème dans une université est que cela ne sera pas utile tout au long de votre carrière professionnelle. Il vaut mieux apprendre moins de bibliothèques et de concepts d'apprentissage ou se familiariser avec les fonctionnalités réelles du langage.
David Thornley
2
Un autre point de départ pour C ++ est que vous pourriez alors faire du C ++ managé sur le .NET Framework, vous donnant une introduction à l'apprentissage de C #, F # et de tout autre langage sur ce runtime. Java a également une grande introduction à la JVM et à des langages comme Scala, mais il n'y a pas de JVM C ++ à ma connaissance.
CodexArcanum
En tant que quelqu'un qui aime penser qu'il est assez décent en C ++ (et Java), je ne pense pas qu'un cours de programmation d' introduction moderne devrait être en C ++. C'est tout simplement trop difficile. Si l'université n'enseigne pas du tout le C ++, continuez, bien sûr, mais pour une introduction, j'irais avec quelque chose de plus simple et de plus joli comme Java. Peut-être que si je ne pensais pas qu'ils étaient tous mauvais, j'aurais peut-être même recommandé un langage typé dynamiquement.
Dukeling
Dans certains de nos jours avant Java, nous n'avions pas ce choix et nous avons tous appris le C ++, donc je ne vois aucun problème avec les gens qui apprennent encore le C ++ en premier. Je suppose que l'intro en Java est meilleure que l'intro en Turbo Pascal.
Bratch
18

Je dois être en désaccord avec la plupart des gens qui préconisent Java ici. L'apprentissage du C ++, même si vous n'avez pas étudié l'architecture des ordinateurs et des microprocesseurs, vous donne tellement de précieuses informations sur le fonctionnement et le fonctionnement des programmes informatiques.

Nota bene, je ne préconise PAS que vous ne devriez pas apprendre Java (mieux encore, C #) car ce sont des langages de développement d'applications modernes et rapides et d'énormes frameworks ont été construits autour d'eux vous donnant accès à de nombreuses fonctionnalités "gratuites", comme accès aux fichiers abstraits et similaires, mais un véritable ingénieur logiciel devrait connaître au moins un certain C ++, C ou au moins assembleur, car c'est ce qui vous sépare des types script-kiddie.

Une fois que vous maîtrisez raisonnablement le C ++, que vous maîtrisez la gestion de la mémoire et le STL, choisir Java / C # devrait être un jeu d'enfant.

Jas
la source
D'accord, je suis convaincu qu'apprendre Java si vous maîtrisez déjà C ++ sera beaucoup, beaucoup plus facile que d'apprendre C ++ si vous maîtrisez déjà Java.
Carson63000
Le problème de devenir «raisonnablement compétent avec C ++» est que cela prendra des années et que vous n'apprendrez toujours qu'un petit sous-ensemble de POO.
Henry
Java n'est pas un langage de développement rapide d'applications. Il peut être légèrement supérieur à C ++, mais il est loin du niveau d'abstraction de Python, Ruby, Perl ou Visual Basic.
Evan Kroske
@Evan - Oui, Java est un langage de développement "rapide" si rien d'autre pour ses vastes bibliothèques (il est communément dit que tout développeur Java a des documents API Java ouverts pendant le travail) ainsi que de ne pas avoir à faire de gestion manuelle de la mémoire. Et l'homme qui a conçu Java l'a conçu parce qu'il n'arrivait à rien en utilisant C ++. De plus, le grand nombre d'applications Java déployées aujourd'hui (barrière d'entrée inférieure) est un autre argument pour sa «rapidité».
Jas
9

Les écoles et les universitaires qui préconisent Java comme premier choix devraient faire examiner leur tête (ou simplement trouver un vrai travail.) Je dis cela en tant que personne qui a fait à la fois le développement d'applications et de systèmes en Java au cours des 12 dernières années. Java est un langage atroce pour l'enseignement.

La raison en est la suivante: sauf les surdoués, la plupart des élèves peuvent (et ne le feront probablement jamais) saisir l'orientation des objets sans comprendre la programmation modulaire. Et ils ne peuvent pas comprendre la programmation modulaire sans d'abord comprendre la programmation structurée dans un langage procédural. Clair et simple. Le témoignage de cela (entre autres choses) est que même si nous connaissons l'OO depuis 3-4 décennies maintenant, les gens écrivent toujours des hyper-spaghettis dans la pratique.

De plus, une personne qui s'appuie uniquement sur un langage basé sur gc (que ce soit Java ou .NET) ne peut jamais vraiment se rapprocher du matériel. À moins que votre ambition ne soit de créer des pages Web dynamiques, devinez quoi? Vous devez être à l'aise pour vous rapprocher de la langue.

Vous allez dans une école CS pour devenir un informaticien et un programmeur complet (espérons-le avec quelques heures de crédit de pratique en programmation dans de nombreux langages de programmation.) Si vous ne connaissez que Java (ou .NET ou C ou Python peu importe) alors vous êtes un "programmeur Java" (pas un programmeur qui peut travailler sur Java, mais un "programmeur Java"). Et cela a autant de sens que de dire que vous êtes un "menuisier marteau" ou un "mécanicien de tournevis Phillip", n'est-ce pas?

Une bonne école vous exposera au C (ou à un autre langage procédural comme Pascal ou Ada), puis au C ++ et à un assemblage, vous permettant d'apprendre Java par vous-même tout en poursuivant des cours de synthèse de projet pendant votre année junior / senior. En outre, il devrait vous fournir une exposition aux langages fonctionnels afin que vous compreniez le concept de passage de blocs de calcul en tant qu'arguments, de calculs libres d'effets secondaires, de transparence de l'emplacement et similaires (qui ont de réelles applications pratiques, même sur le Web.)

Vous devez savoir ce qu'est un défaut de segmentation. Vous devez savoir ce que la pagination, la mémoire virtuelle et toutes ces conneries signifient. Vous devez savoir comment décomposer les problèmes dans les modules (qu'ils soient procéduraux et basés sur OO). Vous devez savoir comment les systèmes OO sont réellement mis en œuvre sous le capot (afin d'en connaître le coût.) Vous devez savoir où l'abstraction OO se brise (et ils le font parce que le monde et les problèmes complexes ne sont pas nécessairement orientés objet.)

Vous avez besoin de tout savoir pour devenir un informaticien complet, capable de travailler soit en entreprise, soit à très bas niveau en implémentant des choses au niveau du système, que ce soit pour le secteur commercial ou le secteur public, à grande ou à petite échelle. échelle.

Les universitaires qui ont fait pression pour que Java soit le seul et unique langage à les gouverner ne savent absolument pas ce dont l'industrie a vraiment besoin. Aucune idée. Impardonnable sans aucune idée. C'est ce qui arrive quand ils travaillent sur des tours d'ivoire en regardant l'industrie à distance.

Ils ont transformé les départements d'informatique en écoles professionnelles coûteuses de 4 ans, produisant des poneys à un langage de programmation. Et cela pourrait être pardonnable s'ils pouvaient au moins enseigner aux étudiants des compétences de base en affaires / entreprise / organisation (c'est-à-dire abandonner la façade CS et adopter un programme MIS). à l'industrie, à l'économie et finalement aux étudiants.

Je vous suggère de lire l'article de Joel Spolsky sur "Java Schools".

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

En résumé, s'ils ne vous enseignent pas un langage de programmation procédurale (que ce soit un langage industriel comme C ou Ada ou un assez bon pour enseigner comme Pascal), et ils vous donnent si C ++ (si vous avez de la chance) ou Java / C # (si vous n'avez pas de chance), je chercherais une autre école. Clair et simple, d'un gars qui utilise Java pour vivre dans le monde réel depuis un bon moment.

luis.espinal
la source
De quelqu'un qui connaît assez bien Java, C et C ++ et qui n'a pas obtenu son diplôme il y a trop longtemps, je vais devoir être en désaccord. C (ou C ++) VS Java - Java est beaucoup plus «facile». Peut-être que si je commençais avec C ++ (qui je pense est assez génial (mais pas facile) btw) (au lieu de (Delphi (eww) +) Java), il est tout à fait possible que j'aurais été démotivé, abandonné et ne pas devenir programmeur (même si peut-être nous venons d'avoir un mauvais professeur C ++). Mais oui, apprendre le C ++ pour comprendre les composants internes de Java était absolument inestimable. Et je suppose que 95% des programmeurs de nos jours "ne se rapprochent jamais vraiment du matériel".
Dukeling
" C (ou C ++) VS Java - Java est bien plus" facile " " - c'est une donnée bien connue. Je ne sais pas ce que cela a à voir avec mon message, cependant (?????)
luis.espinal
Plus facile à comprendre, plus facile à enseigner, plus facile à apprendre, donc je ne suis pas d'accord sur le fait que "Java est un langage atroce pour l'enseignement" et que vous devez d'abord apprendre le C (peut-être qu'un langage procédural plus simple est bien). Je dis aussi que C ou C ++ est bon à savoir, mais pas pour commencer, car dans ce cas, vous risquez de faire peur à tous sauf aux programmeurs les plus hardcore, car je suis sûr que c'est tout ce qui survivra à une introduction à programmation via C ++. Pas que ça me dérange un monde de programmeurs hardcore, mais d'autres personnes pourraient. Oui, vous êtes en train de dire être bien équilibré, mais je dis avance avec Java ou similaire.
Dukeling
Plus facile à comprendre et à enseigner ne se traduit pas nécessairement par une langue adéquate à des fins pédagogiques. Après 12 ans de travail avec Java, j'en suis convaincu. Un langage pédagogique bien meilleur qui est plus facile que le C ou le C ++ serait Python, par exemple ... ou tout langage qui n'oblige pas chaque méthode à être dans une classe, c'est-à-dire un langage qui est vraiment multi-paradigme par opposition à Java où tout est «soi-disant» un objet, où il n'y a pas de bonne alternative à la portée au-delà des classes et des packages, etc. Il limite la capacité à enseigner la modélisation appropriée.
luis.espinal
Java, en vous forçant à apprendre la programmation dans un mode orienté nom, tout en tant qu'objet, il fournit des métaphores de modélisation médiocres pour d'autres paradigmes qui conviennent mieux à la modélisation du monde réel. Un développeur professionnel des tranchées peut contourner cette limitation. Les étudiants ne le font pas, et pardonnez-moi, mais très peu de professeurs d'université ont une expérience des tranchées pour connaître la distinction. Je choisirais Python ou Ruby (ou en fait Lisp ou BASIC) sur Java si C / C ++ est trop hardcore.
luis.espinal
4

Je pense que cela dépend beaucoup de votre personnalité. Au moins de mon point de vue, Java et C ++ ont des orientations radicalement différentes qui font appel à des types de personnes sensiblement différents.

Quand vous y arrivez, Java est vraiment surtout une grande bibliothèque de classes, avec suffisamment de langage pour pouvoir instancier des objets et invoquer des méthodes à partir de cette bibliothèque. "Apprendre Java" consiste, en grande partie, à mémoriser (ou du moins à prendre conscience de) ce qui se trouve dans la bibliothèque et comment elle est organisée, afin que vous puissiez trouver les choses que vous voulez quand vous les voulez.

C ++ met beaucoup moins l'accent sur la fourniture de code pré-écrit. Bien qu'elle comprenne une bibliothèque (STL 1 ), cette bibliothèque concerne moins le code inclus que le style et l'ensemble de principes. Il est tout à fait possible d'écrire du code clairement et facilement reconnaissable en tant que code "STL", même s'il n'utilise que peu ou pas du tout de code pré-écrit.

Il existe également une différence assez importante dans la façon dont les langues sont utilisées. Java a mis l'accent sur la simplicité du langage. Cela facilite la création d'outils qui manipulent le code Java de diverses manières (par exemple, pour la refactorisation). Cela signifie également que vous avez généralement besoin d' outils capables de le faire, car le refactoring implique souvent des modifications assez importantes de grandes quantités de code.

Le C ++ est un langage beaucoup plus complexe, ce qui signifie (entre autres) que la création d'outils pour manipuler le code source C ++ est extrêmement plus difficile que pour Java. L'équilibre est qu'il est beaucoup moins nécessaire - un travail de refactorisation qui pourrait impliquer des centaines de modifications de dizaines de fichiers en Java pourrait être accompli en (par exemple) en modifiant un seul paramètre de modèle en C ++.

Java met beaucoup plus l'accent sur la facilité d'apprentissage. C ++ met beaucoup plus l'accent sur la facilité d'utilisation - mais (malheureusement) seulement si vous savez vraiment ce que vous faites.

Je ne vais pas défendre l'un ou l'autre. Mon opinion sur les langues est beaucoup moins pertinente que d'avoir une idée de ce à quoi s'attendre de chacun et de se regarder honnêtement pour déterminer ce qui vous convient le mieux.

1 Oui, je sais que ce n'est pas vraiment exact, mais j'essaie d'éviter que cela ne se transforme en livre ...

Jerry Coffin
la source
3

Je ne peux pas croire que les gens préconisent le C ++ comme première langue! Vous passerez la majeure partie de votre temps à écrire une plaque de chaudière et à essayer de contourner les limites et les hameçons dans la langue plutôt que d'apprendre à programmer.

Java est un langage beaucoup plus simple et ne gênera pas votre apprentissage.

Si vous devez apprendre le C ++, apprenez les concepts avec Java puis passez au C ++, ou mieux encore, OBJ-C si vous voulez écrire un logiciel Mac. Java et OBJ-C ne sont pas trop différents.

Pour info j'ai passé 10 ans en tant que développeur commercial C ++.

Henri
la source
Ce ne sera pas ma première langue. Je suis programmeur et je retourne à l'école pour obtenir un diplôme. Mon expérience avec C ++ et Java est limitée, mais j'ai une expérience avec C et Objective-C. Mais merci d'avoir pris le temps de répondre.
Philip Regan
3
Java va obtenir de la manière de votre apprentissage. Il vous apprendra des non-vérités totales sur les concepts indépendants du langage.
DeadMG
2

Je recommanderais C ++. J'ai eu quelques cours en Java et certains en C ++ au collège, et les compétences spécifiques au langage que j'ai apprises du C ++ m'ont aidé davantage lors de l'apprentissage de langues supplémentaires plus tard. De plus, bien que je vois beaucoup plus d'offres d'emploi Java que C ++, la plupart recherchent une pile Java complète, comme:

  • EJB 1.x / 2.0, JNDI, JMS, JTA / JTS, RMI, JDBC, Servlets, JSP, SAX / DOM, Services Web, SOAP, WSDL, UDDI, JAXB, JavaMail, WAP, WML, HTML
  • Tomcat, Apache Xalan, Apache Xerces, Jserv, JRun, JBuilder, TogetherJ, Web Logic 5.x / 6.x, Websphere 3.5 / 4

Et les chances sont qu'un programme basé sur Java ne vous préparera pas beaucoup mieux qu'un programme basé sur C ++ contre une liste comme ça.

Chris
la source
1
J'ajouterais que (au moins dans ma région) les emplois C ++ paient également un peu mieux que les emplois Java (objectif) et sont généralement plus intéressants (subjectifs).
Cercerilla
2

C'est difficile car Java est indéniablement plus facile à apprendre. Vous ferez plus tôt avec Java.

Le C ++ est un langage beaucoup plus difficile à utiliser. Les pointeurs et la gestion de la mémoire sont conceptuellement et pratiquement difficiles à utiliser. C ++ ne vous offre aucun filet de sécurité.

À long terme, il serait utile de comprendre tout ce que le C ++ vous enseigne. De plus, la transition de C ++ à Java est beaucoup plus facile que dans l'autre sens.

Mais je me demande si lors du démarrage et pendant de nombreux projets de diplôme, les frais supplémentaires et le débogage que vous devez faire pour que quelque chose fonctionne en C ++ rendraient vos projets plus difficiles, vos délais plus difficiles à respecter et votre vie beaucoup plus frustrante. . Pour réaliser la même chose en C ++ et Java, je dirais que dans presque tous les cas, vous obtiendrez un travail plus rapide en Java et rencontrerez moins de problèmes ennuyeux. Cela pourrait être un gros problème lorsque vous êtes à la fin d'un semestre et que cinq cours ont besoin de leur projet de fin de cours le même jour.

L'autre côté de cela est que si ces essais ne vous obligent pas à jeter l'éponge, ils feront de vous un meilleur programmeur si vous maîtrisez le C ++. Et si votre carrière est en C # ou Java ou python et que vous n'avez jamais à toucher à un autre pointeur de votre vie, vous l'apprécierez beaucoup plus ...

glénatron
la source
2

Le C ++ est le plus flexible et offre une compréhension plus approfondie. Incontestablement, vous gagnerez plus en C ++ qu'en Java. C ++ est également plus difficile, car il est plus complexe.

Cela dit, les travaux C ++ ne sont pas aussi courants que les travaux Java.

Java et son descendant, C #, sont les solutions standard pour l'espace de codage Big-Iron d'entreprise / entreprise. Je recommande fortement d'apprendre l'une des deux au cours de votre deuxième année et d'être très à l'aise avec celle-ci au moment où vous terminez votre diplôme. Cela vous permettra d'obtenir des emplois beaucoup plus facilement. Cela ne signifie pas que je pense que ces emplois présentent en moyenne un intérêt intellectuel important. J'ai récemment fait un tour dans les emplois de logiciels de craigslist dans les Rocheuses et la plupart des emplois étaient C # / Java et liés à ce qu'on appelle les logiciels " CRUD "; OMI c'est très ennuyeux.

Paul Nathan
la source
1

Ayant enseigné le C ++ et Java au niveau collégial, je recommanderais fortement Java .

Java assiste le processus d'apprentissage et encourage un bon comportement de programmation. Les bibliothèques intégrées pour Java sont utiles et facilement disponibles dans chaque installation. Être capable de créer une application graphique en une phrase, en utilisant les bibliothèques intégrées disponibles dans chaque installation Java et qui correspondent à tous les tutoriels que les étudiants trouvent dans une recherche Google, est crucial pour aider les étudiants à dépasser le langage et à commencer à comprendre les concepts de programmation .

Les IDE pour Java prennent en charge les étudiants débutants et continus. L'intégration précoce d'outils de refactorisation puissants (tout en discutant de la POO, par exemple) aidera les élèves à écrire du code maintenable.

Alors que C ++ est un langage utile à connaître, les concepts supplémentaires appris en C ++ ne valent pas vraiment l'effort supplémentaire du langage dans son ensemble. Il existe un large ensemble supplémentaire de "gotchas" qui doivent être enseignés et qui peuvent être introduits ultérieurement (problèmes de gestion de la mémoire et débordements de tampon pour en nommer un couple). Obliger les étudiants à les comprendre avant de passer à des concepts tels que la complexité algorithmique et l'héritage vous ralentit, la manière exigeant qu'un conducteur comprenne la pression des pneus avant de conduire ralentirait l'Ed. Du conducteur. Bien sûr, vous devez le savoir. Mais il vous suffit de le savoir comme quelque chose que vous vous tromperez un jour, et non comme un élément constitutif d'un concept plus vaste.

Alex Feinman
la source
2
Si vous rencontrez de graves problèmes avec les dépassements de mémoire tampon et la gestion de la mémoire, vous enseignez mal le C ++. Lequel des conteneurs standard peut déborder comme un tampon?
David Thornley
Des tableaux? En fait, j'ai peut-être mal enseigné le C ++; c'était il y a bien plus d'une décennie.
Alex Feinman
0

Je pense que la plus grande question à vous poser est de savoir si vous voulez être un bon programmeur ou vous concentrer sur l'informatique. Si CS est votre objectif et que vous souhaitez suivre un itinéraire PHD, Java est peut-être la voie à suivre. Java fournit les classes de collections Java, qui contiennent de nombreuses structures de données et algorithmes prédéfinis. L'avantage est double: tout d'abord, vous pouvez jouer avec les structures de données et les algorithmes pour voir ce qu'ils font avant de vous soucier de la façon dont ils ont été construits. Deuxièmement, cela donne aux professeurs plus d'occasions d'enseigner les principes de CS qui utilisent des structures de données sans avoir à se soucier des moindres détails. Plus tard, ils peuvent revenir en arrière et demander à leurs élèves de créer les structures à partir de zéro.

C ++ d'autre part est un langage de niveau inférieur. Il vous oblige à considérer les pointeurs et la récupération de place. La courbe d'apprentissage est un peu plus abrupte, mais au final, lorsque vous vous retrouverez sur la programmation avec des cadres externes, vous vous sentirez moins comme si vous dépendiez simplement de la magie cachée. En outre, de nombreuses grandes entreprises utilisent encore C ++. Il est plus difficile de passer de Java à C ++ qu'à C ++ à Java.

Kavet Kerek
la source
En ce moment, mon objectif est de me lancer dans le développement de logiciels, alors devenez un meilleur programmeur. À ce stade, je ne m'intéresse guère aux activités académiques de grande envergure.
Philip Regan