Was ist sinnvoller zu lernen C++ oder Java oder doch etwas anderes?

Das Ergebnis basiert auf 21 Abstimmungen

Java 57%
Andere Sprache 33%
C++ 10%

14 Antworten

Java

Am Anfang geht es hauptsächlich erst einmal darum, die Grundprinzipien des Programmierens zu verstehen, da ist es relativ egal, welche Sprache man dafür nutzt, solange sie die anwendet.

Möchtest Du eher eine moderne Programmiersprache lernen, solltest Du wohl Java lernen, C++ ist schon recht alt und verwendet hier und da Techniken, die in anderen Programmiersprache anders umgesetzt sind.

Das soll jetzt nicht heißen, dass Java in allen Belangen das Maß der Zeit definiert, allerdings würde ich doch sagen, dass sie für den Anfang besser geeignet ist.

Von Python würde ich Dir für den Anfang abraten, das weicht vor allem von der Syntax an einigen Stellen recht stark von anderen Sprachen ab.

Ob Dir eine Programmiersprache am Ende etwas nützt, ist zum Lernen meines Erachtens egal, weil Du, wenn Du das Prinzip Programmieren verstanden hast, jede (bzw. die meisten) Programmiersprache mit Leichtigkeit erlernen kannst.

Ich habe meine ersten „Programme“ damals mit Batch geschrieben und würde heute von mir behaupten, dass ich mich doch recht schnell in die meisten neuen Programmiersprachen einarbeiten kann.

Wenn Du etwas sehr einfaches zum Einsteigen suchst, kannst Du Dir auch mal C anschauen, Problem ist hier nur, dass mir hierfür kein gutes IDE bekannt ist. Solltest Du allerdings eines finden, kann ich es Dir sehr ans Herz legen, Dir die Sprache mal anzuschauen, weil im Grunde alle modernen Programmiersprachen davon abstammen.

Du wirst mit der Zeit aber auch selbst merken, dass die Unterschied nicht so groß sind, wie man im ersten Augenblick annimmt. Von daher wünsche ich Dir viel Spaß und Glück beim Erlernen Deiner neuen Programmiersprache.


regex9  22.10.2018, 23:07
(...) C++ ist schon recht alt (...)

Hierzu würde ich gern anmerken, dass die Sprache in den letzten Jahren einen größeren Wandel vollzogen hat.

(...) Problem ist hier nur, dass mir hierfür kein gutes IDE bekannt ist.

An Hochschulen wird an dieser Stelle wohl Visual Studio genutzt oder Code::Blocks. Ich würde den QtCreator empfehlen.

1
colum123  22.10.2018, 23:19
@regex9

Ich glaube im Vergleich zu IntelliJ Idea ist Visual Studio nicht so toll, kann das sein?

0
regex9  22.10.2018, 23:45
@colum123

Hast du diesbezüglich konkrete Punkte? So viel Erfahrung habe ich mit IDEA noch nicht gemacht, als dass ich mich da weitschweifend äußern könnte. Ob ein Vergleich zudem etwas bringen würde, könnte man anzweifeln, immerhin unterstützen beide ziemlich unterschiedliche Sprachen.

Grundsätzlich halte ich die JetBrains-Software für ziemlich qualitativ. Tools wie ReSharper oder dotPeek können VS ziemlich stark erweitern.

Besondere Argumente für Visual Studio, die mir gerade einfallen, sind zum einen die starke Anpassbarkeit (durch Erweiterungen, Einstellungen bezüglich der Menüs und Schaltflächen), die integrierten Tools (Konsole, ein ziemlich starker Debugger, Profiling-Tools, Package Manager, das C# REPL) sowie die weit ausgebauten Tools zum Erstellen grafischer Oberflächen mit Windows Forms oder WPF. Im Moment fällt mir da keine IDE mit vergleichbarem GUI-Builder-Tool ein.

0
c796e01f2adbe8f  22.10.2018, 23:41
Möchtest Du eher eine moderne Programmiersprache lernen, solltest Du wohl Java lernen, C++ ist schon recht alt und verwendet hier und da Techniken, die in anderen Programmiersprache anders umgesetzt sind.

Da bist du auf dem Stand von vor 20 Jahren stehen geblieben. :)

Modernes C++ ist - rein im Bezug auf Sprachkonzepte - Java deutlich überlegen! C++ hat mehr und modernere Konzepte, auch wenn Java an einigen sehr wenigen Stellen über Dinge verfügt, die es in C++ (noch) nicht gibt.

Deshalb ist Java auch einfacher für Einsteiger zu erlernen, einfach weil es da gar nicht so viel zu lernen gibt. :)

Bei der Standardbibliothek sieht die Sache dann allerdings wieder etwas anders aus ...

1
Java

Wenn Du tatsächlich ein Interesse an der Informatik und der Programmierung hast, brauchst Du dir nicht zu sehr Gedanken über die erste Programmiersprache machen. Denn Du wirst in Zukunft noch weitere Sprachen lernen. Ein guter Programmierer beherrscht nicht nur eine einzige Programmiersprache, sondern hat sich wissen zu mehreren Programmiersprachen und Skriptsprachen angeeignet.

Ich empfehle Dir für den Anfang aber Java. Die Sprache ist leicht zu lernen, sehr verbreitet und wird auch in vielen Unternehmen eingesetzt. Gerade die weite Verbreitung ermöglicht Dir, schnell auf Hilfe/Lösungen im Internet zu stoßen, wenn Du mal ein Problem hast.

Wenn Du Java beherrschst, kannst Du im Anschluss immer noch andere Sprachen lernen. Aber bis Du wirklich richtig gut in Java bist und dich mit den gängigen Bibliotheken vertraut gemacht hast, wird einige Zeit vergehen. Java programmieren ist mehr als nur ein Hello World ausgeben oder ein paar Objekte erstellen.

Bei Java sehe ich auch den Vorteil, dass die Sprache nicht ganz so leicht ist wie noch modernere Sprachen. Dadurch lernst Du mehr.

Aber wenn Du dich für C++ entscheidest, ist das auch in Ordnung. Modernes C++ ist gut und sehr mächtig. Nur hast Du in C++ noch viele weitere Möglichkeiten, die Dich als Anfänger überfordern.

Java
(...) hab so ein wenig mit java angefangen, (...)

Dann mache damit weiter. Denn was bringt es dir, mit etwas Neuem zu beginnen, bevor du Java auch nur annähernd abgeschlossen hast? Genügend Themen gibt es da noch und in Java findest du einige Konzepte, die auch in anderen modernen Sprachen eine Rolle spielen (z.B. OOP).

Falls du die Sprache allerdings bisher als zu schwierig empfunden haben solltest, kannst du dich aber auch erst Processing widmen. Diese Sprache basiert auf Java, ist aber in seiner Komplexität mehr reduziert.

(...) nur möchte ich halt durchaus Universell später mal bisschen Programmieren. (...)

Da bist du bei Java eigentlich goldrichtig. Die Sprache spielt in sehr vielen Bereichen eine Rolle, u.a. lassen sich mit ihr Desktop-, Web- und mobile Anwendungen gut entwickeln. Lies für Weiteres hier.

Andere Sprache

Hallo.

Es kommt drauf an was du machen willst. Eine Sprache ist ein Werkzeug und je nach dem was du machen willst oder musst eignet sich die eine oder andere Sprache besser.

Nehmen wir mal deine drei Kandidaten:

  1. C/C++ ist dort gefragt wo es um zeitkritische Dinge geht (zB 3D Animation, Videoediting, Spieleentwicklung, usw.) oder eine bestimmte Hardwarenähe verlangt wird (zB Betriebssysteme, Firmware, usw.)
  2. Java ist am größten im Bereich Geschäftsanwendungen und bei Android Apps. Man kann einiges mehr damit machen aber in dem Bereich kommt Java in der Praxis am ehesten zum Einsatz.
  3. Python ist eine recht universelle Sprache von kleinen Wartungsscripts über Hackingtools bis hin zu allen möglichen kleinen Tools und sogar GUI-Programme und Webseiten lassen sich damit machen. Außerdem kommt Python oftmals zum Einsatz um Abläufe in Programmen zu Automatisieren oder um Plugins für Software zu schreiben.

Im Grunde ist es egal was du zuerst lernst wenn du auf andere Aufgaben stößt wirst du oftmals andere Sprachen brauchen:

zB ein Webprojekt - das könntest du mit Python, Java oder sogar C++ auch realisieren aber das wird nicht auf jedem Webserver oder Hosting-Paket laufen. Da ist PHP der Platzhirsch der so gut wie überall läuft. Also lernst du PHP und arbeitest damit und kannst den Webspace für 24,90 EUR/Jahr nutzen oder du nimmt Python und musst ein entsprechend größeres und teureres Paket verwenden oder sogar einen anderen Anbieter.

Wenn du als Programmierer in einer Firma anfängst die Ihre Software mit VisualBasic schreiben dann wirst du eben diese Sprache lernen müssen.

Solltest du ein Plugin für Photoshop oder Lightroom schreiben dann brauchst du (soweit ich mich erinnere) Lua.

Willst du eine iOS App schreiben dann wäre am ehesten Swift gefragt.

Das Gute ist allerdings, dass alle Sprachen sehr ähnlich arbeiten und Konzepte die Verzweigungen, OOP, Variablentypen, usw. sehr ähnlich sind. Der Umstieg von Java zu Sprache X ist daher nicht besonders schwer. Sogar die Befehle sind oftmals ähnlich oder ident.

Was solltest du tun - übe weiter mit Java und arbeite dich besser ein oder wenn du magst steig zu Python um - im Grunde ist es egal. Meine Erfahrung als Trainer ist, dass vor allem Anfänger besser mit Python klarkommen. Meiner Meinung nach erlaubt es Python auch sehr einfach in viele Bereiche hineinzuschnuppern.

Woher ich das weiß:Berufserfahrung

c796e01f2adbe8f  23.10.2018, 00:38
Also lernst du PHP und arbeitest damit und kannst den Webspace für 24,90 EUR/Jahr nutzen oder du nimmt Python und musst ein entsprechend größeres und teureres Paket verwenden oder sogar einen anderen Anbieter.

Wirklich ziemlich gute Anbieter, die dir Webspace für 1€ pro Monat inkl. Domain und PHP und Python und SQL und und und anbieten, gibt es wie Sand am Meer. Für Kleinstprojektchen von Anfängern reicht das völlig aus. Für knapp 25€ pro Jahr bekommste natürlich noch etwas bessere Konditionen. :)

Der Umstieg von Java zu Sprache X ist daher nicht besonders schwer. Sogar die Befehle sind oftmals ähnlich oder ident.

Genau darin liegt die Gefahr, nämlich das unerfahrene Entwickler plötzlich in Java so programmieren, als würden sie Code für Sprache X schreiben, was so gut wie nie in "gutem" bzw. qualitativ hochwertigem Code enden wird, oder schlicht und einfach ausnutzbare Sicherheitslücken aufreißt.

Die folgenden Beispiele kann man auch anders schreiben, und sie enthalten alle sogar den selben Fehler, auf den ich jetzt aus Platzmangel aber nicht weiter eingehen werde.

Disclaimer: Das, was jetzt folgt, ist nur eine Demo, und kein Beispiel für defensive Programmierung!

Nehmen wir mal an, wir wollen nur die erste Zeile einer Datei lesen, das Ergebnis als String zurück bekommen, und der Aufrufer erwartet mögliche Fehler als Ausnahmen.

  • Java:
public static readFirstLine(final String fnam) throws IOException {
  try (BufferedReader br = new BufferedReader(new FileReader(fnam))) {
    return br.readLine();
  }
}
  • Python:
def readFirstLine(fnam):
	with open(fnam) as fh:
		return fh.readline()
  • C++:
string readFirstLine(const string & fnam) {
	ifstream ifs { fnam };
	ifs.exceptions(ifstream::failbit);

	string result;
	getline(ifs, result);

	return result;
}

Wie du siehst, ist das ist eine KOMPLETT andere Herangehensweise!

Bei Java musst du wissen, was "try with ressources" bedeutet, bei Python, was ein "scope guard" ist, und bei C++ wie "RAII" funktioniert.

Diese drei Konzepte sind so nur in der jeweiligen Sprache verfügbar, und ich habe mir jetzt für dieses kleine Beispiel nur EIN Konzept von unzähligen rausgesucht!

RVO wäre ein anderes Konzept, welches es hier in dieser Form nur bei dem C++ Beispiel gibt, aber egal ...

Fazit: Keine Sprache ist wie die andere! Anfänger neigen dazu, in Sprachen B und C genauso wie in A zu programmieren, weil sie es einfach nicht anders kennen, bzw. ihnen überhaupt nicht die sprachlichen Unterschiede bewusst sind.

Ich kann dir aus Erfahrung sagen, dass Python Code von reinen Java-Entwicklern einfach nur schlecht ist, sofern sich diese nicht schon länger mit der Materie befasst haben. Umgekehrt genauso.

Ein Hammer ist ein wunderbares Werzeug, aber man sollte damit keine Schrauben in eine Betonwand prügeln. Es ist oftmals mehr von Nutzen, sich mit der Funktionsweise einer Schlagbohrmaschine und dem Konzept eines Dübels vertraut zu machen. Wenn man darüber hinaus noch weiß, wie ein Schraubendreher zu bedienen ist, sind alle froh.

Genauso ist es mit Software-Entwicklern! Wer drei Jahre lang in Python programmiert hat, der schult mal nicht eben binnen einem Monat auf C++ um, und kann dann automatisch guten Code schreiben ... nein, er wird katastrophalen Code zusammen frickeln, aber um das zu erkennen, muss er sich WESENTLICH länger als einen Monat mit C++ beschäftigen.

(Im vorigen Absatz kannst du "Python" und "C++" durch jede Kombination anderer Sprachen ersetzen, sogar "C" und "C++", denn die sind VIEL unterschiedlicher, als viele Anfänger meinen!)

3
Mark Berger  23.10.2018, 01:34
@c796e01f2adbe8f
Ich kann dir aus Erfahrung sagen, dass Python Code von reinen Java-Entwicklern einfach nur schlecht ist, sofern sich diese nicht schon länger mit der Materie befasst haben. Umgekehrt genauso.

Stimmt - aber eine Einarbeitungszeit in die Sprache setze ich bei meiner Ausführung voraus - natürlich sollte man nicht einfach 1:1 übersetzen da hast du vollkommen Recht!

Darum schreibe ich ja auch, dass grundsätzliche Konzepte wie Verzweigungen, OOP, Variablentypen, Funktionen, usw. ähnlich oder teilweise Ident sind. Natürlich gibt es immer Unterschiede im Detail...

Nicht jeder der zB Python programmiert schreibt besonders effizienten Code und egal ob man die erste Sprache lernt oder die zehnte - es geht um ein vielfaches schneller irgendetwas programmieren zu können als effektiv und sicher zu coden.

Wir sprechen hier allerdings von Anfängern und solche Posts wie deine sind m.M.n. kontraproduktiv denn die verkomplizieren alles unnötig und demotivieren oder verunsichern Beginner!

Ich habe so viele Beginner-Kurse geleitet und weiß ziemlich gut was da so mancher für Code abliefert - vom Kopieren diverse Codeblöcke anstatt eine Funktion zu verwenden bis hin zum schreiben von unnötigen Funktionen weil man die passende nicht in der Dokumentation gefunden hat oder zu faul war zum suchen sind alle möglichen Todsünden mit dabei!

Die grundsätzlichen Konzepte sind so gut wie ident - in Details wird sich immer was unterscheiden. Ich verstehe nicht warum speziell im EDV-Bereich Leute immer wieder das Bedürfnis haben Dinge unnötig zu verkomplizieren. Ich gebe dir durchaus Recht, dass ein tiefgreifendes Verständnis für Hauptberufler sehr wichtig wäre wennauch nicht immer vorhanden (sonst würde ich auch weniger verdienen...) aber in der Fragestellung lese ich weder etwas von einem Berufswunsch noch von sicherheitsrelevanten Anwendungen!

Für den Heimgebrauch sind die Dinge die su ansprichst zu 98% irrelevant. Weißt du wie viele Leute VBA-Kurse machen nur um lästige wiederkehrende Aufgaben zu automatisieren oder wieviele Administratoren einfache und primitive Scripte verwenden nur um Logdateien zu analysieren?

Ich nutze Python oft aus dem Grund weil es mir erlaubt in ein paar Minuten ohne Planung ein paar Zeilen schlampigen Code als POC hinzurotzen. Wenn ich ein langfristig eingesetztes Projekt für einen Kunden entwickle dann muss ich natürlich auf vieles achten, ausführlich Testen, über Sicherheit nachdenken, usw. Bei einem Proof of concept muss es einfach nur schnell gehen.

0
Java

Java ist eine sehr weit verbreitete Sprache und im Gegensatz zu C++ sehr viel einfacher. (Allein schon, weil du dir um Speicherverwaltung und Freigabe, Stack und Heap... keine Gedanken machen musst, eben so wenig wie um Pointer...)

Daher halte ich die Sprache definitiv für sinnvoll (und ich glaube auch recht einsteigerfreundlich). Weit verbreitet heißt auch, es gibt viele Tutorials und Hilfe und es gibt viele Bibliotheken, auf die du zurückgreifen kannst.

Das was auf Java zutrifft, trifft auch auf Python zu. Python ist sehr stark im kommen und wird als besonders einsteigerfreundlich beworben. Ebenso gibt es extrem viele Bibliotheken, die das Programmieren einer speziellen (z.B. mathematischen) Sache sehr einfach machen. Ich mag an Python jedoch die Syntax nicht... Sie ist so anders als in vielen anderen Sprachen...

Java, C, C++, C#, PHP, Javascript,... sind da ähnlicher, was z.B. die geschweiften Klammern angeht, das Semikolon nach jedem Befehl...