Sprachunterschiede

C++, C# und Java gehören zu der Familie der auf C basierenden Sprachen. Somit ist es ist nicht verwunderlich, dass diese Sprachen sich an vielen Stellen sehr ähneln oder sogar gleich sind. Der Vorteil: wer eine dieser Sprachen beherrscht findet den Einstieg in eine andere meist einfacher.
Auch wenn Geschwindigkeit ein Thema ist, so ist es in Zeiten von Sechskernern wichtiger sauberen Code zu schreiben als sich auf die Performace einer Sprache Gedanken zu machen.

C++ welches als direkter Nachfolger der Sprache C gilt ist sowohl in der Systemprogrammierung als auch in der Programmierung von Anwendungsprogrammen weit verbreitet. In der Systemprogrammierung sind als typische Beispiele Betriebssysteme, Treiber oder virtuelle Maschinen zu nennen. Wenn Programmabläufe möglichst schnell und Ressourcenschonend ablaufen müssen, wird meistens zu C++ gegriffen.
Bei der Anwendungsentwicklung wird C++ immer mehr von C# und Java zurück gedrängt, da man in diesen Sprachen schneller zum Ergebnis kommt. Eine Ausnahme liefern hier kommerzielle Computerspiele so wie Grafik- oder Physikengines und Simulationssoftware da es hier vor allem auf Geschwindigkeit ankommt.
Hinter C++ stehen mächtige Bibliotheken die nahezu unbegrenzte Möglichkeiten liefern. Natürlich bringt diese Mächtigkeit auch Nachteile mit sich. So gilt C++ als eine der am schwersten zu meisternden Sprachen. Die Vielzahl an Bibliotheken verlangt eine entsprechend lange Einarbeitungszeit.

C# wird von Microsoft entwickelt und knüpft an das .Net (gesprochen "dot Net") Framework an. Eben dieses Framework ist das was C# als Sprache so Attraktiv macht. Der hohe Grad an bereits fertigen Funktionen in .Net die, zum Teil, in C++ erst programmiert oder extra per Bibliothek eingebunden werden müssen machen die Erstellung von Software deutlich schneller.
Im Gegensatz zu C++ benutzt C# einen sogenannten garbage collector. Eine Implementierung zur automatischen Speicherbereinigung die einem viel Arbeit abnimmt.
Aber auch hier ist nicht alles Gold was glänzt. Bis vor kurzem war .Net, und damit C#, Windows-Exklusiv. Durch das Open Source Projekt Mono ist es aber mittlerweile möglich auch für Unix-basierende Betriebssysteme wie Mac OS oder Linux in C#/.Net zu entwickeln.
Auch wenn C# in den meisten Fällen schneller als Java ist, kommt es nicht an die performace von C++ ran.

Java besticht in erster Linie mit seiner Plattformunabhängigkeit. Bei Java läuft die Ausführung des geschrieben Codes ein wenig anders als bei C++ oder C#. Das erste was auffällt ist, dass der Compiler keine alt bekannte .exe Datei liefert sondern eine .jar Datei die den Bytecode beinhaltet. Dieser wird dann in einer virtuellen Umgebung, dem JRE (Java Runtime Environment) ausgeführt. Hier sollte man erkennen, dass das auf Kosten der Geschwindigkeit geht.
So wie C# bietet Java einen garbage collector und ist syntaktisch einfacher als C++. Ein weiterer Vorteil ist die eingangs erwähnte Plattformunabhängigkeit. Egal ob PC oder Mac, ohne dem JRE läuft nichts, und da diese für alle Plattformen erhältlich ist, ist der Code auch auf allen Maschinen (nahezu) gleich.
Der Nachteil dieser Strategie ist allerdings die fehlende Hardwarenähe. So kann zB. keine CD mittels Java ausgeworfen werden und der Zugriff auf USB-Geräte bleibt ebenfalls untersagt.

Nachfolgend eine kurze Übersicht: (diese stellt keinerlei Anspruch auf Vollständigkeit)
  Vorteile Nachteile
C++ Gilt gemeinhin als am schnellsten, zahlreiche Bibliotheken (auch für die Plattformunabhängigkeit), hardwarenahe Programmierung möglich Komplexe Syntax (Stichwort Zeiger), für GUI Entwicklung umständlicher als die "Konkurenz", manuelle Speicherverwaltung nötig
C# Automatische Speicherverwaltung, mächtiges .Net Framework, leichtere Syntax als C++, breites Anwendungsspektrum Für Mac nur über Mono oder ähnlichem zugänglich, .Net Framework muss intalliert sein
Java Plattformunabhängig, leichtere Syntax als C++, automatische Speicherverwaltung, breites Anwendungsspektrum Wird meist als langsam Abgestempelt, keine Hardwarenahe Programmierung möglich


Hast du dich entschieden? Dann geht es hier weiter.