Java oder C ++ für Universitäts-CS-Kurse?

11

Ich bin gerade dabei, mich in die Schule einzuschreiben, um einen CS-Abschluss zu bekommen. Die Schule, die ich mir anschaue, bietet sowohl Java- als auch C ++ - basierend auf den Einführungskursen zur Softwareentwicklung (objektorientierte Programmierung, Entwurfsmuster usw.) an. Es ist die Wahl des Schülers, welcher Spur er folgen soll, aber es bleibt nur Zeit, einer zu folgen.

Wenn Sie wissen, was Sie jetzt wissen, würden Sie, wenn Sie die Wahl hätten, Ihre CS-Lehrplangrundlage in Java oder C ++ festlegen?

Meine aktuelle Debatte sieht derzeit so aus:

Ein guter Freund (der einen Doktortitel in KI hat) wirbt für Java als die bessere Wahl, unabhängig davon, was ich mache, um später mehr Arbeitsmöglichkeiten zu eröffnen, obwohl er möglicherweise voreingenommen ist, da seine gesamte Arbeit in Java war (er) liebt es). Ich lebe in der Region Boston, MA, USA und sehe gleich viel Java- und C-Arbeit.

Auf der anderen Seite, obwohl ich mich noch nicht ganz entschieden habe, was ich mit dem Abschluss machen möchte, wenn ich fertig bin, würde ich es vorziehen, für den Mac zu entwickeln, was ich jetzt mache, wenn auch in begrenzter Kapazität. Zu diesem Zweck habe ich bereits eine begrenzte Erfahrung mit C ++, aber ich hatte noch keine mit Java, und wenn ich mir meine Projekte bei meiner täglichen Arbeit anschaue, sehe ich keine Notwendigkeit, sie bald zu verwenden, "bald" gemessen um mindestens zwei Jahre.

Ich sollte wahrscheinlich beachten, dass ich ein Erwachsener bin, der nach 20 Jahren wieder zur Schule geht (ich habe derzeit keinen Abschluss), also versuche ich, die Gelegenheit und die Zeit, die ich verbringe, so gut ich kann zu maximieren. Ich neige zu C ++, bin aber immer noch ambivalent, und einige externe, objektive Ratschläge würden hier helfen.

Oder ich könnte einfach zu viel darüber nachdenken.

UPDATE: Es stellte sich heraus, dass die Sprachauswahl nicht so eindeutig war, wie ich ursprünglich vermutet hatte. Während sich einige Kernkurse auf Java konzentrierten, arbeiten einige der anderen Kernkurse hauptsächlich in C und Java, aber auch einige andere, die für ein gutes Maß eingesetzt werden. Tatsächlich wird mein Rest meines Semesters in Objective-C sein, nachdem ich einige Zeit in Java und Javascript verbracht habe. Letztes Semester waren C, Javascript und PHP sowie einige andere, die als erforderliche Aufgaben eingesetzt wurden. Da die Dinge in der Mitte insgesamt ziemlich aufgeteilt waren und ich immer noch Antworten darauf bekomme, versuche ich jetzt, meinen Lehrplan so zu gestalten, dass ich alle Anforderungen für den Abschluss erfülle, aber so viele Sprachen wie möglich aufnehmen kann . Bisher haben meine Noten nicht gelitten, dies zu versuchen.

Philip Regan
quelle
1
Jeder im akademischen Forschungsumfeld wirbt gerade für Java. Unabhängig von der Sprache müssen Sie von der Universität lernen, wie man neue Sprachen lernt. C ++ gibt es genauso wie Java, aber es gibt keine Behauptung, dass es in 5 Jahren sein wird. Es kommen immer neue Sprachen / Technologien, daher müssen Sie darauf vorbereitet sein, sie zu erlernen und schnell geschickt zu werden.
Chris
1
@Chris: Aus diesem Grund würde ich empfehlen, etwas zu lernen, das das weitere Lernen erleichtert, und nicht etwas, das jetzt beliebt ist. Ich würde entweder C ++ oder Python anstelle von Java empfehlen (offensichtlich aus verschiedenen Gründen).
David Thornley
Es ist nicht diese Sprache, die zählt. Es ist das abstrakte Konzept. Machen Sie das Konzept richtig, damit die Schüler später in seinem Leben leicht etwas lernen können.
J-16 SDiZ
1
Ich bin in einer (unheimlich) ähnlichen Situation: Ich gehe nach 20 Jahren von der Schule zurück zur Schule für CS. Meine Schule hat auch einen Java / C ++ Split Track. Nachdem ich hier alles gelesen und sogar +1 für die Top-Antwort gegeben habe, werde ich mich immer noch für Java entscheiden. Hier ist der Grund, falls es für Sie hilfreich ist: Ich komme aus der Webentwicklung (Javascript, PHP, Python). Daher ist die Unterstützung der Java-Bibliotheken von Vorteil. Angenommen, ich nehme mir auch die Zeit, um die OOP-Prinzipien wirklich zu erfassen, denke ich nicht, dass der Wechsel zu C ++ (falls erforderlich) so schwierig sein wird. Java ist der Mittelweg zwischen Skripten und Kompilieren.
Hollenbeck
2
Ich glaube, ich bin mit jeder Antwort nicht einverstanden. Es ist wirklich egal . Sie werden ähnliche Konzepte in beiden Sprachen lernen, und Sie werden die andere Sprache, die Sie nicht gewählt haben, und andere auch durch Ihr Studium und Ihre Karriere lernen.
Matsemann

Antworten:

51

Ich persönlich würde mich für C ++ entscheiden, da es Ihnen Einblicke in die Funktionsweise von Teilen von Java unter der Haube gibt (z. B. Zeiger). Die Umstellung von C ++ auf Java ist ziemlich trivial, während die Umkehrung wohl schwieriger ist.

Das wirklich Schwierige am Java-Ökosystem ist die große Anzahl von Frameworks, Bibliotheken usw. - es ist unwahrscheinlich, dass sie all das an der Universität abdecken.

Am Ende des Tages wird es nicht so wichtig sein , welche Sprache Sie wählen, solange Sie die Prinzipien lernen.

Mein JUG wird mich umbringen, weil ich C ++ unterstützt habe ;-)

Martijn Verburg
quelle
1
+1 für einen hervorragenden Punkt über die Größe des Java-Ökosystems und die Erklärung des Übergangs.
Jas
1
Das Problem beim Erlernen eines großen Ökosystems an einer Universität ist, dass dies während Ihrer beruflichen Laufbahn nicht sinnvoll ist. Sie sollten weniger Bibliotheken und Lernkonzepte lernen oder sich mit den tatsächlichen Sprachfunktionen vertraut machen.
David Thornley
2
Ein weiterer Vorteil für C ++ ist, dass Sie dann verwaltetes C ++ in .NET Framework ausführen können, um C #, F # und jede andere Sprache zu dieser Laufzeit zu lernen. Java hat auch einen guten Einstieg in die JVM und Sprachen wie Scala, aber es gibt keine JVM C ++, die ich kenne.
CodexArcanum
Als jemand, der gerne denkt, dass er in C ++ (und Java) ziemlich anständig ist, denke ich nicht, dass ein moderner Einführungskurs in C ++ sein sollte. Es ist einfach zu schwierig. Wenn die Universität überhaupt kein C ++ unterrichtet, machen Sie sicher weiter, aber für eine Einführung würde ich mich für etwas Einfacheres und Schöneres wie Java entscheiden. Wenn ich nicht gedacht hätte, dass sie alle böse sind, hätte ich vielleicht sogar eine dynamisch getippte Sprache empfohlen.
Dukeling
In einigen unserer Tage vor Java hatten wir diese Wahl nicht und wir haben alle C ++ gelernt, daher sehe ich kein Problem mit Leuten, die noch zuerst C ++ lernen. Ich denke, Intro in Java ist besser als Intro in Turbo Pascal.
Bratch
18

Ich muss den meisten Leuten widersprechen, die hier Java befürworten. Das Erlernen von C ++ bietet Ihnen so viele wertvolle Einblicke in die Funktionsweise und Funktionsweise von Computerprogrammen, auch wenn Sie noch keine Computer- und Mikroprozessorarchitektur studiert haben.

Nota bene, ich befürworte NICHT, dass Sie Java nicht lernen sollten (noch besser C #), da es sich um moderne, schnelle Anwendungsentwicklungsschritte handelt und riesige Frameworks um sie herum erstellt wurden, die Ihnen Zugriff auf viele "kostenlose" Funktionen wie z abstrahierter Dateizugriff und ähnliches, jedoch sollte ein echter Softwareentwickler mindestens einige C ++ -, C- oder zumindest Assembler-Kenntnisse haben, da dies Sie von den Script-Kiddie-Typen unterscheidet.

Sobald Sie mit C ++ einigermaßen vertraut sind und mit Speicherverwaltung und STL vertraut sind, sollte es ein Kinderspiel sein, Java / C # zu erlernen.

Jas
quelle
Ich bin mir einig, dass das Erlernen von Java, wenn Sie bereits mit C ++ vertraut sind, viel, viel einfacher sein wird als das Erlernen von C ++, wenn Sie bereits mit Java vertraut sind.
Carson63000
Das Problem, "einigermaßen kompetent mit C ++ zu werden", besteht darin, dass es Jahre dauern wird und Sie immer noch nur eine winzige Teilmenge von OOP lernen.
Henry
Java ist keine schnelle Anwendungsentwicklungssprache. Es ist möglicherweise etwas höher als C ++, aber es kommt der Abstraktionsebene von Python, Ruby, Perl oder Visual Basic bei weitem nicht nahe.
Evan Kroske
@Evan - Ja, Java ist eine "schnelle" Entwicklungssprache, wenn auch nichts anderes für seine umfangreichen Bibliotheken (es wird allgemein gesagt, dass jeder Java-Entwickler während der Arbeit Java-API-Dokumente geöffnet hat) und keine manuelle Speicherverwaltung durchführen muss. Und der Mann, der Java entworfen hat, hat es entworfen, weil er mit C ++ nicht weiterkam. Die schiere Anzahl der heute bereitgestellten Java-Apps (untere Eintrittsbarriere) ist ein weiteres Argument für die "Schnelligkeit".
Jas
9

Schulen und Wissenschaftler, die Java als erste Wahl befürworten, sollten ihre Köpfe untersuchen lassen (oder einfach einen richtigen Job bekommen). Ich sage dies als eine Person, die in den letzten 12 Jahren sowohl Anwendungs- als auch Systementwicklung in Java durchgeführt hat. Java ist eine grausame Unterrichtssprache.

Der Grund ist folgender: Abgesehen von Begabten können (und werden die meisten Schüler wahrscheinlich nie) die Objektorientierung erfassen, ohne die modulare Programmierung zu verstehen. Und sie können modulare Programmierung nicht verstehen, ohne zuerst strukturierte Programmierung in einer prozeduralen Sprache zu verstehen. Schlicht und einfach. Ein Beweis dafür (unter anderem) ist, dass die Menschen, obwohl wir OO seit 3-4 Jahrzehnten kennen, in der Praxis immer noch Hyper-Spaghetti schreiben.

Darüber hinaus kann eine Person, die sich ausschließlich auf eine gc-basierte Sprache verlässt (sei es Java oder .NET), der Hardware nie wirklich nahe kommen. Wissen Sie was, es sei denn, Ihr gesamtes Ziel ist es, dynamische Webseiten zu erstellen? Sie müssen sich mit der Sprache vertraut machen.

Sie besuchen eine CS-Schule, um ein vielseitiger Informatiker und Programmierer zu werden (hoffentlich mit einigen Kreditstunden praktischer Programmierpraxis in vielen Programmiersprachen). Wenn Sie nur Java (oder .NET oder C oder Python was auch immer) dann sind Sie ein "Java-Programmierer" (kein Programmierer, der mit Java arbeiten kann, sondern ein "Java-Programmierer"). Und das macht genauso viel Sinn wie zu sagen, dass Sie ein "Hammerschreiner" oder ein "Phillip-Schraubenziehermechaniker" sind, nicht wahr?

Eine gute Schule setzt Sie C (oder einer anderen prozeduralen Sprache wie Pascal oder Ada), dann C ++ und einer Versammlung aus, sodass Sie Java selbst lernen können, während Sie in Ihrem Junior- / Senior-Jahr Projekt-Schlusssteinkurse absolvieren. Außerdem sollten Sie mit funktionalen Sprachen vertraut gemacht werden, damit Sie das Konzept der Übergabe von Rechenblöcken als Argumente, nebenwirkungsfreie Berechnungen, Standorttransparenz und dergleichen verstehen (die auch im Web echte praktische Anwendungen haben).

Sie müssen wissen, was ein Segfault ist. Sie müssen wissen, was Paging, virtueller Speicher und all dieser Mist bedeuten. Sie müssen wissen, wie Probleme in Modulen zerlegt werden (sei es prozedural und OO-basiert). Sie müssen wissen, wie OO-Systeme wirklich unter der Haube implementiert werden (damit Sie die Kosten kennen). Sie müssen wissen, wo die OO-Abstraktion bricht (und das tun sie, weil die Welt und komplexe Probleme nicht unbedingt objektorientiert sind.)

Sie müssen all diese Dinge kennen, damit Sie ein vielseitiger Informatiker werden, der in der Lage ist, entweder im Unternehmen oder auf sehr niedriger Ebene zu arbeiten und Dinge auf Systemebene zu implementieren, entweder für den kommerziellen oder den öffentlichen Sektor, sowohl für große als auch für kleine Rahmen.

Akademiker, die auf Java als die einzige Sprache gedrängt haben, um sie alle zu regieren, wissen überhaupt nicht, was die Branche wirklich braucht. Ahnungslos. Unverzeihlich ahnungslos. Das passiert, wenn sie an Elfenbeintürmen arbeiten und die Industrie aus der Ferne betrachten.

Sie haben die Informatikabteilungen in teure 4-Jahres-Berufsschulen verwandelt, in denen Ponys mit einer Programmiersprache eingesetzt werden. Und das könnte verzeihlich sein, wenn sie den Schülern zumindest grundlegende geschäftliche / unternehmerische / organisatorische Fähigkeiten beibringen könnten (dh die CS-Fassade verlassen und einen MIS-Lehrplan annehmen). Aber sie tun das nicht einmal, was ich für einen großen Nachteil halte für die Industrie, die Wirtschaft und letztendlich die Studenten.

Ich würde vorschlagen, dass Sie Joel Spolskys Artikel über "Java Schools" lesen.

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

Zusammenfassend gesagt, wenn sie Ihnen keine prozedurale Programmiersprache beibringen (sei es eine industrielle wie C oder Ada oder eine, die gut genug ist, um wie Pascal zu unterrichten), und sie geben Ihnen, ob C ++ (wenn Sie Glück haben) oder Java / C # (Wenn Sie Pech haben), würde ich nach einer anderen Schule suchen. Schlicht und einfach, von einem Mann, der Java schon seit einiger Zeit für seinen Lebensunterhalt in der realen Welt verwendet.

luis.espinal
quelle
Von jemandem, der Java, C und C ++ ziemlich gut kennt und der vor nicht allzu langer Zeit seinen Abschluss gemacht hat, muss ich nicht zustimmen. C (oder C ++) VS Java - Java ist viel einfacher. Wenn ich mit C ++ angefangen hätte (was ich übrigens ziemlich genial (aber nicht einfach) finde) (anstelle von (Delphi (eww) +) Java), wäre ich möglicherweise demotiviert, aufgegeben und kein Programmierer geworden (obwohl wir vielleicht gerade einen schlechten C ++ - Lehrer hatten). Aber ja, C ++ zu lernen, um die Interna von Java zu verstehen, war absolut von unschätzbarem Wert. Und ich würde vermuten, dass 95% der Programmierer heutzutage "nie wirklich in die Nähe der Hardware kommen".
Dukeling
" C (oder C ++) VS Java - Java ist viel 'einfacher' " - nun, das ist eine bekannte Selbstverständlichkeit. Ich bin mir nicht sicher, was das mit meinem Beitrag zu tun hat (?????)
luis.espinal
Leichter zu verstehen, leichter zu lehren, leichter zu lernen, daher bin ich nicht der Meinung, dass "Java eine grausame Sprache für den Unterricht ist" und dass Sie zuerst C lernen sollten (vielleicht ist eine einfachere Verfahrenssprache in Ordnung). Ich sage auch, dass C oder C ++ gut zu wissen ist, aber nicht zu Beginn, denn in diesem Fall werden Sie wahrscheinlich alle außer den Hardcore-Programmierern abschrecken, weil ich sicher bin, dass das alles ist, was eine Einführung überleben wird Programmierung über C ++. Nicht, dass mir eine Welt von Hardcore-Programmierern etwas ausmacht, aber andere Leute könnten es. Ja, Sie sind zu sagen sein , gut gerundet, aber ich sage Blei mit Java oder ähnlichem.
Dukeling
Leichter zu verstehen und zu lehren bedeutet nicht unbedingt, eine angemessene Sprache für pädagogische Zwecke zu sein. Nach 12 Jahren Arbeit mit Java bin ich davon überzeugt. Eine viel bessere pädagogische Sprache, die einfacher als C oder C ++ ist, wäre beispielsweise Python ... oder eine Sprache, die nicht jede Methode dazu zwingt, in einer Klasse zu sein, dh eine Sprache, die im Gegensatz zu wirklich mehreren Paradigmen ist Java, wo alles "angeblich" ein Objekt ist, wo es keine guten Alternativen zum Scoping über Klassen und Pakete hinaus gibt, und so weiter und so fort. Es schränkt die Fähigkeit ein, die richtige Modellierung zu lehren.
Luis.espinal
Java zwingt Sie dazu, das Programmieren in einem Nomen-orientierten Alles-als-Objekt-Modus zu lernen, und bietet schlechte Modellierungsmetaphern für andere Paradigmen, die für die tatsächliche Weltmodellierung besser geeignet sind. Ein professioneller Entwickler aus den Gräben kann diese Einschränkung umgehen. Studenten tun es nicht und verzeihen mir, aber nur sehr wenige Hochschulprofessoren haben Erfahrung aus dem Graben, um den Unterschied zu kennen. Ich würde Python oder Ruby (oder eigentlich Lisp oder BASIC) über Java wählen, wenn C / C ++ zu hardcore ist.
Luis.espinal
4

Ich denke, viel hängt von Ihrer Persönlichkeit ab. Zumindest aus meiner Sicht haben Java und C ++ radikal unterschiedliche Ausrichtungen, die wesentlich unterschiedliche Arten von Menschen ansprechen.

Java ist eigentlich meistens eine große Klassenbibliothek mit einer Sprache, die ausreicht, um Objekte zu instanziieren und Methoden aus dieser Bibliothek aufzurufen. "Java lernen" besteht zu einem großen Teil darin, sich zu merken (oder zumindest bewusst zu werden), was sich in der Bibliothek befindet und wie sie organisiert ist, damit Sie die gewünschten Dinge finden können, wenn Sie sie möchten.

C ++ legt viel weniger Wert auf die Bereitstellung von vorab geschriebenem Code. Während es eine Bibliothek (STL 1 ) enthält, geht es in dieser Bibliothek weniger um den enthaltenen Code als um einen Stil und eine Reihe von Prinzipien. Es ist durchaus möglich, Code zu schreiben, der klar und leicht als "STL" -Code erkennbar ist, obwohl nur wenig oder gar kein vorab geschriebener Code verwendet wird.

Es gibt auch einen ziemlich wesentlichen Unterschied in der Verwendung der Sprachen. Java hat großen Wert darauf gelegt, die Sprache einfach zu halten. Dies macht es einfach, Tools zu erstellen, die Java-Code auf verschiedene Arten bearbeiten (z. B. zum Refactoring). Dies bedeutet auch, dass Sie in der Regel Tools benötigen , die dies können, da das Refactoring häufig erhebliche Änderungen an großen Codemengen erfordert.

C ++ ist eine viel komplexere Sprache, die Mittel (unter anderem) , dass Werkzeuge Gebäude C ++ Quellcode zu manipulieren , ist enorm schwieriger als für Java. Das Gleichgewicht dazu ist, dass es viel weniger notwendig ist - ein Refactoring-Job, der Hunderte von Änderungen an Dutzenden von Dateien in Java beinhalten kann, kann durch (zum Beispiel) Ändern eines einzelnen Vorlagenparameters in C ++ erreicht werden.

Java legt viel mehr Wert darauf, leicht zu erlernen. C ++ legt viel mehr Wert darauf, einfach zu bedienen zu sein - aber (leider) nur, wenn Sie wirklich wissen, was Sie tun.

Ich werde mich nicht für das eine oder andere einsetzen. Meine Meinung zu den Sprachen ist viel weniger relevant, als dass Sie eine Vorstellung davon haben, was Sie von den einzelnen Sprachen erwarten können, und sich ehrlich ansehen, um herauszufinden, welche wahrscheinlich besser zu Ihnen passt.

1 Ja, ich weiß, dass das nicht wirklich richtig ist, aber ich versuche zu verhindern, dass daraus ein Buch wird ...

Jerry Sarg
quelle
3

Ich kann nicht glauben, dass die Leute C ++ als Muttersprache befürworten! Sie werden die meiste Zeit damit verbringen, Kesselplatten zu schreiben und zu versuchen, die Einschränkungen und Angelhaken in der Sprache zu umgehen, als tatsächlich das Programmieren zu lernen.

Java ist eine viel einfachere Sprache und steht Ihrem Lernen nicht im Wege.

Wenn Sie C ++ lernen müssen, lernen Sie die Konzepte mit Java und gehen Sie dann zu C ++ oder noch besser zu OBJ-C, wenn Sie Mac-Software schreiben möchten. Java und OBJ-C sind sich nicht zu unähnlich.

Zu Ihrer Information Ich habe 10 Jahre als kommerzieller C ++ - Entwickler verbracht.

Henry
quelle
Dies wird nicht meine Muttersprache sein. Ich bin ein Programmierer, der jetzt wieder zur Schule geht, um tatsächlich einen Abschluss zu machen. Meine Erfahrung mit C ++ und Java ist begrenzt, aber ich habe Erfahrung mit C und Objective-C. Aber danke, dass Sie sich die Zeit genommen haben, um zu antworten.
Philip Regan
3
Java wird Ihr Lernen behindern. Es wird Ihnen völlige Nichtwahrheiten über sprachunabhängige Konzepte beibringen.
DeadMG
2

Ich würde C ++ empfehlen. Ich hatte einige Kurse in Java und einige in C ++ im College, und die sprachspezifischen Fähigkeiten, die ich in C ++ gelernt habe, haben mir beim späteren Erlernen weiterer Sprachen mehr geholfen. Obwohl ich viel mehr Java als C ++ - Stellenangebote sehe, suchen die meisten nach einem vollständigen Java-Stack, wie zum Beispiel:

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

Und es besteht die Möglichkeit, dass ein Java-basierter Lehrplan Sie nicht viel besser vorbereitet als ein C ++ -basierter Lehrplan gegen eine solche Liste.

Chris
quelle
1
Ich würde hinzufügen, dass (zumindest in meiner Region) C ++ - Jobs auch einiges besser bezahlen als Java-Jobs (objektiv) und im Allgemeinen interessanter (subjektiv) sind.
Cercerilla
2

Es ist schwierig, weil Java zweifellos leichter zu erlernen ist. Sie werden mit Java eher früher arbeiten.

C ++ ist eine viel schwierigere Sprache. Zeiger und Speicherverwaltung sind konzeptionell und praktisch schwierig zu handhaben. C ++ bietet Ihnen keine Sicherheitsnetze.

Auf lange Sicht wäre es nützlich, all die Dinge zu verstehen, die C ++ Ihnen beibringt. Auch der Übergang von C ++ zu Java ist weitaus einfacher als in die andere Richtung.

Aber ich frage mich, ob zu Beginn und während vieler Studienprojekte der zusätzliche Aufwand und das Debuggen, die Sie leisten müssen, um etwas in C ++ zum Laufen zu bringen, Ihre Projekte tatsächlich schwieriger machen, Ihre Fristen schwieriger einzuhalten und Ihr Leben weitaus frustrierender . Um dasselbe in C ++ und Java zu erreichen, würde ich sagen, dass Sie in fast allen Fällen die Arbeit in Java schneller erledigen und auf weniger störende Probleme stoßen würden. Das könnte eine wirklich große Sache sein, wenn Sie am Ende eines Semesters sind und fünf Kurse am selben Tag ihr Projekt zum Ende des Kurses benötigen.

Die andere Seite davon ist, dass wenn Sie durch diese Versuche nicht das Handtuch werfen müssen, Sie ein besserer Programmierer werden, wenn Sie C ++ beherrschen. Und wenn Ihre Karriere mit C # oder Java oder Python ist und Sie nie einen anderen Zeiger in Ihrem Leben berühren müssen, werden Sie es viel mehr zu schätzen wissen ...

Glenatron
quelle
2

C ++ ist flexibler und bietet ein tieferes Verständnis. Ohne Frage werden Sie mehr von C ++ als von Java profitieren. C ++ ist auch schwieriger, weil es komplexer ist.

Allerdings sind C ++ - Jobs bei weitem nicht so häufig wie Java-Jobs.

Java und sein Nachkomme C # sind die Standardlösungen für den Codierungsbereich für Unternehmen und Unternehmen. Ich empfehle dringend, eines der beiden in Ihrem zweiten Jahr zu lernen und sich bis zum Abschluss Ihres Studiums damit sehr wohl zu fühlen. Dadurch können Sie Jobs viel einfacher bekommen. Das bedeutet nicht, dass diese Jobs im Durchschnitt ein erhebliches intellektuelles Interesse haben. Ich habe kürzlich Craigslist-Software-Jobs in den Rocky Mountains durchlaufen, und die meisten Jobs waren C # / Java und bezogen sich auf die sogenannte " CRUD " -Software. IMO das ist sehr langweilig.

Paul Nathan
quelle
1

Nachdem ich sowohl C ++ als auch Java auf College-Ebene unterrichtet habe, würde ich Java wärmstens empfehlen .

Java unterstützt den Lernprozess und fördert ein gutes Programmierverhalten. Die integrierten Bibliotheken für Java sind nützlich und bei jeder Installation leicht verfügbar. Die Möglichkeit , eine GUI - Anwendung in einem Satz zu erstellen, die integrierten Bibliotheken mit in jedem Java installieren und das Match aller Tutorials die Schüler in einer Google - Suche finden ist, von entscheidenden Bedeutung für die Unterstützung der Schüler über die Sprache und beginnen verstehen Programmierung Konzepte .

Die IDEs für Java bieten Unterstützung für Anfänger und Fortgeschrittene. Wenn Sie leistungsstarke Refactoring-Tools frühzeitig in die Konversation einbeziehen (z. B. während Sie über OOP sprechen), lernen die Schüler, wie man wartbaren Code schreibt.

Während C ++ eine nützliche Sprache ist, sind die zusätzlichen Konzepte, die in C ++ erlernt wurden, den zusätzlichen Aufwand der gesamten Sprache nicht wirklich wert. Es gibt eine große zusätzliche Menge von "Fallstricken", die zu einem späteren Zeitpunkt eingeführt werden müssen (Speicherverwaltungsprobleme und Pufferüberläufe, um nur einige zu nennen). Wenn die Schüler diese verstehen müssen, bevor sie mit Konzepten wie algorithmischer Komplexität und Vererbung fortfahren, werden Sie langsamer. Die Art und Weise, wie ein Fahrer den Reifendruck vor dem Fahren verstehen muss, würde Driver's Ed verlangsamen. Klar, du musst es wissen. Aber Sie müssen es nur als etwas wissen, das Sie eines Tages falsch machen werden, nicht als Baustein eines größeren Konzepts.

Alex Feinman
quelle
2
Wenn Sie auf ernsthafte Probleme mit Pufferüberläufen und Speicherverwaltung stoßen, lehren Sie C ++ falsch. Welcher der Standardcontainer kann wie ein Puffer überlaufen?
David Thornley
Arrays? Möglicherweise habe ich C ++ tatsächlich falsch unterrichtet. Das war vor weit über einem Jahrzehnt.
Alex Feinman
0

Ich denke, die größere Frage, die Sie sich stellen müssen, ist, ob Sie ein guter Programmierer sein oder sich auf Informatik konzentrieren möchten. Wenn CS Ihr Ziel ist und Sie auf einer Doktorandenroute sein möchten, ist Java vielleicht der richtige Weg. Java stellt die Java-Sammlungsklassen bereit, die viele vorgefertigte Datenstrukturen und Algorithmen aufweisen. Dies hat zwei Vorteile: Erstens können Sie mit den Datenstrukturen und Algorithmen herumspielen, um zu sehen, was sie tun, bevor Sie sich Gedanken darüber machen, wie sie aufgebaut sind. Zweitens bietet dies den Professoren mehr Gelegenheit, CS-Prinzipien zu vermitteln, die Datenstrukturen verwenden, ohne sich um das Wesentliche kümmern zu müssen. Später können sie zurückgehen und ihre Schüler die Strukturen von Grund auf neu erstellen lassen.

C ++ hingegen ist eine niedrigere Sprache. Es zwingt Sie, Zeiger und Speicherbereinigung zu berücksichtigen. Die Lernkurve ist etwas steiler, aber am Ende, wenn Sie sich mit externen Frameworks auf dem Weg zur Programmierung befinden, werden Sie weniger das Gefühl haben, sich nur auf verborgene Magie zu verlassen. Darüber hinaus verwenden viele größere Unternehmen immer noch C ++. Es ist schwieriger, von Java nach C ++ zu wechseln als von C ++ nach Java.

Kavet Kerek
quelle
Im Moment ist es mein Ziel, einfach in die Softwareentwicklung einzusteigen, um ein besserer Programmierer zu werden. Ich habe an dieser Stelle wenig Interesse an weitreichenden akademischen Aktivitäten.
Philip Regan