Warum ist Java so viel einfacher als C++!?

6 Antworten

Das Überladen von Operatoren ist ein vielgenutztes Feature in C++, das ggf. Schreibarbeit spart und manches auch eleganter aussehen lässt, aber nicht unbedingt zur Lesbarkeit beiträgt. In Java geht das halt nicht.

Bestes Beispiel mit dem Ausgabestream hat Nikity schon geschrieben, die definieren den Schiebeoperator << um, um da Daten in den Ausgabestream zu schreiben.

C++ hat noch mehr sinnvolle und praktische Features im Vergleich zu Java, die die Programmierung vom Aufwand her oft vereinfachen, aber oft dafür sorgen, das Programme schwieriger lesbar sind.

Zum Beispiel Mehrfachvererbung. Spart in C++ einfach das Definieren von zusätzlichen Interfaces, die in Java nötig sind.

Letztendlich ist es eine Frage des persönlichen Geschmackes und der Erfahrung mit den jeweiligen Programmiersprachen, welche man als einfacher betrachtet.

Woher ich das weiß:Berufserfahrung – Softwareentwickler & Admin

Java wurde explizit dafür entwickelt, einfach(er) zu sein, das war eines der Ziele.

Mit C++ muss man alles quasi manuell machen, jedes Detail muss man selber behandeln, insbesondere das Handling vom Arbeitsspeicher. Es gibt Frameworks, die das kapseln und vereinfachen, aber es bleibt immer noch eine erhebliche Komplexität.

Java hat eine Runtime, die sehr vieles automatisch im Hintergrund erledigt, insbesondere das Handling vom Arbeitsspeicher. Sie übernimmt das Allokieren, Überwachen und Aufräumen von Objekt-Lebenszeiten und kontrolliert Zugriffe auf den Arbeitsspeicher.

Das muss man bei C++ alles selber machen, das ist komplex und fehleranfällig.

C++ hat allgemein sehr viele sehr abstrakt technische Funktionen, und erlaubt einiges, was Java nicht erlaubt (zum Eigenschutz der Entwickler). Es gibt aber auch vieles, was über die Jahre so dazu kam, allein der Umfang macht viel aus.

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler

Wie schon geschrieben wurde, ist "einfacher" auch hier sehr subjektiv.

Grundsätzlich lässt sich allerdings sagen, dass Java schon deutlich mehr als High-Level-Sprache konzipiert wurde, und auch (zumindest anfangs) von den Sprachkonstrukten her einen deutlich einfacheren Umfang hat. Was nicht unbedingt negativ ist, speziell bei komplexen Softwaresystemen. Außerdem kann man sich in einer Managed-Sprache wie Java erst deutlich später unabsichtlich selbst in den Fuß schießen.


SikerimAMK31  03.11.2024, 15:37

Ergänzung: Ich würde sogar soweit gehen, dass gerade die "Einfachheit" und deutlich reduzierten Möglichkeiten sich unabsichtlich irgendwelche Sicherheits- und Speicherprobleme einzubauen z.B. bei komplexer Unternehmenssoftware ein deutlicher Vorteil sein kann und auch ist. Ich würde z.B. niemandem wirklich empfehlen sowas ein komplexes E-Commerce-System serverseitig in C++ zu aufzuziehen.

Das kommt auf deine Präferenzen und Wissensbasis an und vermutlich auch, welche Art software du baust; ich finde C++ für meine Zwecke deutlich angenehmer.

Woher ich das weiß:eigene Erfahrung – Langjähriger Poweruser & praktische Programmiererfahrung

C++ hat im Gegensatz zu Java ein abstraktes Aussehen. Jetzt mal ehrlich. C++ ist einfach hässlich.

Bild zum Beitrag

Bei so einem Code versteht keiner etwas wirklich. Warum ist die Main Funktion ein int? Warum muss man Milliarden verschiedene Zeichen gefühlt nutzen um Hello World zu schreiben, Zeichen die keiner versteht?

Bild zum Beitrag

Da ist Java viel verständlicher. Erst recht für Anfänger. 🤗

Woher ich das weiß:eigene Erfahrung
 - (Java, Programmiersprache, CPP)  - (Java, Programmiersprache, CPP)

zalto  02.11.2024, 23:21

"int" lässt sich in wenigen Worten erklären. Über "public", "static", "void" braucht es erstmal eine längere Abhandlung. Wirklich kurz wäre PRINT "Hello World".

Nikity  02.11.2024, 23:23
@zalto

Zum Glück braucht man in den neuen Version von Java kein public static void main mehr :O

SikerimAMK31  03.11.2024, 15:58
@Nikity

Auch Leute, was ist eigentlich aus den guten alten Flame Wars geworden? Früher wäre sowas hier doch der perfekte Einstieg gewesen, und wäre nicht gleich im dritten Beitrag wieder versandet :)