<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>
	Kommentare zu: Java vs C++: was sind die Unterschiede?	</title>
	<atom:link href="https://www.yuhiro.de/java-vs-cpp/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.yuhiro.de/java-vs-cpp/</link>
	<description>Ihre Entwickler arbeiten in unserer Niederlassung in Indien</description>
	<lastBuildDate>Tue, 17 Dec 2024 05:25:53 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.5</generator>
	<item>
		<title>
		Von: Sascha Atrops		</title>
		<link>https://www.yuhiro.de/java-vs-cpp/#comment-22619</link>

		<dc:creator><![CDATA[Sascha Atrops]]></dc:creator>
		<pubDate>Thu, 07 Oct 2021 08:09:06 +0000</pubDate>
		<guid isPermaLink="false">https://www.yuhiro.de/?p=11315#comment-22619</guid>

					<description><![CDATA[Weder Java noch C++ sind anfängerfreundlich. Java ist ein Biest, was so tut als wäre es anfängerfreundlich, bis man dann glaubt, was zu können und in dem Glauben Profi zu sein dann unwartbaren Mist programmiert.

C++ zu lernen ist unglaublich frustrierend - aber man lernt, wenn man nicht aufgibt. Ich komme von Assembler und C. Für mich vereinfachte C++ unglaublich viel. Ich wusste aber auch, was ich vom Computer will.
Viele geben das Programmieren auf, weil sie gar nicht verstehen, wie Computer funktionieren und was man damit machen kann. Das ist wie BWL studieren, obwohl man sich mit Zahlen nicht beschäftigen mag.

Java ist als Lern-Plattform extrem ungeeignet, weil es ein virtuelles Verständnis vom Programmieren auf einer virtuellen Plattform vermittelt und den Leuten schlechtes Programmieren als State-of-the-Art präsentiert. Gute Java-Programmierung ist so mieserabel, dass man sie in professioneller C++-Programmierung als bewusste Sabotage aufgefasst werden muss. Das ist unterhalb von C++-Anfängerniveau, das ist absolut falsch. Java ist die Art von schlechter Programmierung, die C++-Entwicklung unterstellt wird. So beschissen programmiert aber kein C++-Anfänger wenn er wenigstens in einem semi-professionellen Umfeld arbeitet oder einen C++-Kurs aus diesem Jahrtausend liest.
Aber mehr geht in Java halt nicht. Das ist aber halt nicht die Denke, die man sich als Anfänger aneignen sollte.

Der Autor fasst &quot;C-Sprachen&quot; zusammen, unterstellt C# die Notwendigkeit die Speicherverwaltung selbst zu übernehmen. C# benutzt wie Java eine GarbageCollection.
C++ nutzt vorrangig RAII, hier wird kein Müll gesammelt, aber um die Speicherverwaltung muss man sich auch nicht kümmern, wenn man nicht will. Man kann es aber. 

Da ist die Aussage, dass C++ [nur?] auf Windows und Linux genutzt werden kann. Zu implizieren, dass Mac nicht möglich wäre ist Unsinn. C++ läuft auf so ziemlich allem, was irgendwie computerähnlich ist. Ich habe es auf dem Commodore Amiga gelernt und ich glaube, da gibt es bis heute aktuelle (!) Compiler für. Das letzte Amigamodell kam 1992(?) raus.
Der Begriff Plattformunabhängigkeit wird abstrus genutzt, denn Java ist auf Java-Plattformen nutzbar, die als VM auf Linux, Mac, Windows und Solaris verfügbar ist. Auf Arduino nicht. C++ ist auf mehr Plattformen verfügbar als die Java-Plattform.
Es ergibt keinen Sinn eine Anwendung auf einer anderen Plattform zu verwenden, als die, für die sie geschrieben wurde. Das funktioniert nicht.
Eine CAD-Software läuft aber nicht auf einem Embedded-System. Das liegt weniger daran, dass die Sprache nicht plattformunabhängig wäre, sondern dass ein Embedded-System keine Maus/Tastatur oder Bildschirm hat. Diese Plattform ist ganz einfach kein PC.

Ein Java-Programm für Dalvik kompiliert nicht auf einer JavaVM und auch nicht umgekehrt. Ein C++-Program für Qt lässt sich auf Mac, Linux und Windows kompilieren.
Hier unterscheiden sich C++ und Java nicht. Wie man Java gegen das Java-Framework kompiliert, kann C++ gegen beliebige C++-Frameworks kompiliert werden und ist damit genauso portabel wie die gewählten Frameworks.

Und weil das so ist, ergibt es auch keinen Sinn ein Programm für jeden Start neu zu kompilieren. Es ist einfach kein sinnvolles Szenario ein Programm auf eine Festplatte zu schreiben und dann stolz zu verkünden, dass man die Festplatte an Linux und Windows anschließen kann und das Programm starten kann. Wenn das tatsächlich ein benötigtes Szenario ist, dann kann ich das Programm auch für beide Plattformen vorkompiliert draufpacken. Aber hat irgendwer ernsthaft das Problem, dass er eine Software auf unterschiedlichen Betriebsystemen braucht, so dass er sich dafür eine Java-Plattform auf alle Systeme installiert? Warum installiert er sich nicht einfach das Programm auf alle Systeme und lässt dann JavaVM weg? Die Software wäre dann auch noch schneller, man könnte also billigere Computer einsetzen, die dann die gleiche Leistung bringen.

Das Gravierende ist, dass Sun eine milliardenschwere Werbe-Campagne für Java gestartet hat, weil das Projekt eine komplette Fehlplanung darstellt. Und all die Nachteile, die Sun da zu Vorteilen umdichtete, werden seitdem kritiklos nachgeplappert, auch dann, wenn es vollkommener Unsinn ist, sowas wie Java hat keine bösen, fehleranfälligen und &quot;schwerverständlichen&quot; Pointer. Java hat ausschließlich Pointer - mit allen Konsequenzen.

Die VM ist ja auch nicht entstanden, weil das irgendwie eine gute Idee wäre, sondern weil die Java-CPUs nicht kamen und man das Ding ansonsten komplett in die Tonne hätte werfen können. Sun stellte eigentlich Computer mit eigenen nicht Intel-kompatiblen CPUs her. Es wollte aber keiner Java haben, solange das nicht auf Intel-CPUs lief. Und es läuft nicht auf Intel, weil es toll ist, sondern damit man dann Java-CPUs kaufen sollte, die dann schneller wären. Ich habe Java in den 90ern gelernt, ohne JIT-Compiler. Java war so katastrophal langsam, da war ein C64 schneller. Dass konnte man nicht im Entferntesten ernst nehmen.

C++ ist eine gewachsene Sprache und da ist wirklich nicht alles schön. Im Gegenteil. Aber Java ist eine geplante Sprache und hat sich aus C++ vorrangig das rausgepickt, was anständige C++-Entwickler vermeiden. Das schöne an C++ ist: Man kann es vermeiden, man kann gut programmieren. Man kann auch große Scheiße mit fragiler Softwarearchitektur bauen, aber in Java muss man das. Das ist ein Unterschied.

Abschließend muss man sagen: Die Idee für Java ist, dass Ausbildung billiger wird, also geringere Gehälter bezahlt werden müssen und damit Software billiger wird. Das überzeugte Entscheider. 

Das ist alles in die Hose gegangen. Software ist teurer geworden, weil die Probleme sind die gleichen wie zuvor. Man kann sie in Java nur nicht mehr gut lösen.

Als C++-Entwickler ohne nennenswerte Java-Erfahrung arbeitete ich in einem Java-Unternehmen, weil die ausgebildeten Java-Entwickler ihre Bugs nicht mehr verstanden. Der Java-Anfänger(!) debuggt den Code derer, die das gelernt haben. &quot;Weil C++-Entwickler wissen, was sie tun&quot;, wie ein Projektleiter zu mir meinte. 
Wenn man C++-Kurse an Java-Programmierer gibt und hört &quot;Ich verstehe jetzt, was ich letztes Jahr programmiert habe&quot; dann ist das nicht gut.
Nicht zu wissen, was man tut, kann nicht das Ziel einer Sprache sein, die man zum Lernen auswählt.

C++ ist frustrierend, fangt mit C an: Das ist auch frustrierend, schafft aber erstmal eine Übersicht. Modern C++ ist anders. Aber wenn das jeder Depp spontan mit einem Udemy-Kurs Profi wäre, gäbe es auch keinen Grund mehr als Mindestlohn zu zahlen.]]></description>
			<content:encoded><![CDATA[<p>Weder Java noch C++ sind anfängerfreundlich. Java ist ein Biest, was so tut als wäre es anfängerfreundlich, bis man dann glaubt, was zu können und in dem Glauben Profi zu sein dann unwartbaren Mist programmiert.</p>
<p>C++ zu lernen ist unglaublich frustrierend &#8211; aber man lernt, wenn man nicht aufgibt. Ich komme von Assembler und C. Für mich vereinfachte C++ unglaublich viel. Ich wusste aber auch, was ich vom Computer will.<br />
Viele geben das Programmieren auf, weil sie gar nicht verstehen, wie Computer funktionieren und was man damit machen kann. Das ist wie BWL studieren, obwohl man sich mit Zahlen nicht beschäftigen mag.</p>
<p>Java ist als Lern-Plattform extrem ungeeignet, weil es ein virtuelles Verständnis vom Programmieren auf einer virtuellen Plattform vermittelt und den Leuten schlechtes Programmieren als State-of-the-Art präsentiert. Gute Java-Programmierung ist so mieserabel, dass man sie in professioneller C++-Programmierung als bewusste Sabotage aufgefasst werden muss. Das ist unterhalb von C++-Anfängerniveau, das ist absolut falsch. Java ist die Art von schlechter Programmierung, die C++-Entwicklung unterstellt wird. So beschissen programmiert aber kein C++-Anfänger wenn er wenigstens in einem semi-professionellen Umfeld arbeitet oder einen C++-Kurs aus diesem Jahrtausend liest.<br />
Aber mehr geht in Java halt nicht. Das ist aber halt nicht die Denke, die man sich als Anfänger aneignen sollte.</p>
<p>Der Autor fasst &#8222;C-Sprachen&#8220; zusammen, unterstellt C# die Notwendigkeit die Speicherverwaltung selbst zu übernehmen. C# benutzt wie Java eine GarbageCollection.<br />
C++ nutzt vorrangig RAII, hier wird kein Müll gesammelt, aber um die Speicherverwaltung muss man sich auch nicht kümmern, wenn man nicht will. Man kann es aber. </p>
<p>Da ist die Aussage, dass C++ [nur?] auf Windows und Linux genutzt werden kann. Zu implizieren, dass Mac nicht möglich wäre ist Unsinn. C++ läuft auf so ziemlich allem, was irgendwie computerähnlich ist. Ich habe es auf dem Commodore Amiga gelernt und ich glaube, da gibt es bis heute aktuelle (!) Compiler für. Das letzte Amigamodell kam 1992(?) raus.<br />
Der Begriff Plattformunabhängigkeit wird abstrus genutzt, denn Java ist auf Java-Plattformen nutzbar, die als VM auf Linux, Mac, Windows und Solaris verfügbar ist. Auf Arduino nicht. C++ ist auf mehr Plattformen verfügbar als die Java-Plattform.<br />
Es ergibt keinen Sinn eine Anwendung auf einer anderen Plattform zu verwenden, als die, für die sie geschrieben wurde. Das funktioniert nicht.<br />
Eine CAD-Software läuft aber nicht auf einem Embedded-System. Das liegt weniger daran, dass die Sprache nicht plattformunabhängig wäre, sondern dass ein Embedded-System keine Maus/Tastatur oder Bildschirm hat. Diese Plattform ist ganz einfach kein PC.</p>
<p>Ein Java-Programm für Dalvik kompiliert nicht auf einer JavaVM und auch nicht umgekehrt. Ein C++-Program für Qt lässt sich auf Mac, Linux und Windows kompilieren.<br />
Hier unterscheiden sich C++ und Java nicht. Wie man Java gegen das Java-Framework kompiliert, kann C++ gegen beliebige C++-Frameworks kompiliert werden und ist damit genauso portabel wie die gewählten Frameworks.</p>
<p>Und weil das so ist, ergibt es auch keinen Sinn ein Programm für jeden Start neu zu kompilieren. Es ist einfach kein sinnvolles Szenario ein Programm auf eine Festplatte zu schreiben und dann stolz zu verkünden, dass man die Festplatte an Linux und Windows anschließen kann und das Programm starten kann. Wenn das tatsächlich ein benötigtes Szenario ist, dann kann ich das Programm auch für beide Plattformen vorkompiliert draufpacken. Aber hat irgendwer ernsthaft das Problem, dass er eine Software auf unterschiedlichen Betriebsystemen braucht, so dass er sich dafür eine Java-Plattform auf alle Systeme installiert? Warum installiert er sich nicht einfach das Programm auf alle Systeme und lässt dann JavaVM weg? Die Software wäre dann auch noch schneller, man könnte also billigere Computer einsetzen, die dann die gleiche Leistung bringen.</p>
<p>Das Gravierende ist, dass Sun eine milliardenschwere Werbe-Campagne für Java gestartet hat, weil das Projekt eine komplette Fehlplanung darstellt. Und all die Nachteile, die Sun da zu Vorteilen umdichtete, werden seitdem kritiklos nachgeplappert, auch dann, wenn es vollkommener Unsinn ist, sowas wie Java hat keine bösen, fehleranfälligen und &#8222;schwerverständlichen&#8220; Pointer. Java hat ausschließlich Pointer &#8211; mit allen Konsequenzen.</p>
<p>Die VM ist ja auch nicht entstanden, weil das irgendwie eine gute Idee wäre, sondern weil die Java-CPUs nicht kamen und man das Ding ansonsten komplett in die Tonne hätte werfen können. Sun stellte eigentlich Computer mit eigenen nicht Intel-kompatiblen CPUs her. Es wollte aber keiner Java haben, solange das nicht auf Intel-CPUs lief. Und es läuft nicht auf Intel, weil es toll ist, sondern damit man dann Java-CPUs kaufen sollte, die dann schneller wären. Ich habe Java in den 90ern gelernt, ohne JIT-Compiler. Java war so katastrophal langsam, da war ein C64 schneller. Dass konnte man nicht im Entferntesten ernst nehmen.</p>
<p>C++ ist eine gewachsene Sprache und da ist wirklich nicht alles schön. Im Gegenteil. Aber Java ist eine geplante Sprache und hat sich aus C++ vorrangig das rausgepickt, was anständige C++-Entwickler vermeiden. Das schöne an C++ ist: Man kann es vermeiden, man kann gut programmieren. Man kann auch große Scheiße mit fragiler Softwarearchitektur bauen, aber in Java muss man das. Das ist ein Unterschied.</p>
<p>Abschließend muss man sagen: Die Idee für Java ist, dass Ausbildung billiger wird, also geringere Gehälter bezahlt werden müssen und damit Software billiger wird. Das überzeugte Entscheider. </p>
<p>Das ist alles in die Hose gegangen. Software ist teurer geworden, weil die Probleme sind die gleichen wie zuvor. Man kann sie in Java nur nicht mehr gut lösen.</p>
<p>Als C++-Entwickler ohne nennenswerte Java-Erfahrung arbeitete ich in einem Java-Unternehmen, weil die ausgebildeten Java-Entwickler ihre Bugs nicht mehr verstanden. Der Java-Anfänger(!) debuggt den Code derer, die das gelernt haben. &#8222;Weil C++-Entwickler wissen, was sie tun&#8220;, wie ein Projektleiter zu mir meinte.<br />
Wenn man C++-Kurse an Java-Programmierer gibt und hört &#8222;Ich verstehe jetzt, was ich letztes Jahr programmiert habe&#8220; dann ist das nicht gut.<br />
Nicht zu wissen, was man tut, kann nicht das Ziel einer Sprache sein, die man zum Lernen auswählt.</p>
<p>C++ ist frustrierend, fangt mit C an: Das ist auch frustrierend, schafft aber erstmal eine Übersicht. Modern C++ ist anders. Aber wenn das jeder Depp spontan mit einem Udemy-Kurs Profi wäre, gäbe es auch keinen Grund mehr als Mindestlohn zu zahlen.</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/

Page Caching using Disk: Enhanced 

Served from: www.yuhiro.de @ 2026-04-10 14:21:21 by W3 Total Cache
-->