Warum wird C++ Code nicht in Bytecode kompiliert?

... komplette Frage anzeigen

5 Antworten

C++ wird in normalerweise direkt in Maschinencode compiliert und nicht in Bytecode.

Das hat Vorteile, der entstehende Code ist (zumeist) kompakter und schneller. Es hat aber auch Nachteile, nämlich dass er stärker Maschinenabhängig ist.

Die Java Virtual Machine, die diesen Bytecode ausführt ist auf Java ausgelegt. Microsoft hat eine Common Language Runtime (CLR), für die man C++-Programme schreiben kann, die aber nicht "normales" C++ sind. Sie würden also außerhalb der CLR nicht ohne Weiteres laufen.

Das liegt wohl daran, dass es schwierig ist, sämtliche Features von c++ zu einer CLR zu portieren. Insbesondere maschinen-nahe Dinge werden schwer zu portieren sein. Häufig ist aber gerade die Nähe zum Maschinencode bei der Nutzung von C++ interessant.

Kommentar von Azasel
27.02.2016, 22:04

Verstehe, danke.
Was ist den dann mit den Spielen wie GTA San Andreas die mit C++ und weiteren codiert wurden.
Das Spiel gibt es auf für Smartphones.
Gibt es dann sozusagen eine weitere C++ Version m it der man für den Compiler schreiben kann.
Ich weiss das bedeutete dann mehr und mehr extra Code, gibts das denn ?

0

Zwar wird C++ normalerweise direkt in Maschinencode compiliert - dann für jede Plattform einzeln, wie schon W00dp3ckr gesagt hat.

Aber das Microsoft Visual Studio - Microsofts Antwort auf Java - übersetzt den Code erstmal in einen Zwischencode (die Microsoft Intermediary Language), der dann wie bei Java "on the fly" in den endgültigen Maschinencode übersetzt wird.

Und Visual Studio kennt auch einen Dialekt der Sprache C++.

Spätestens seit Microsoft den Quellcode seines Visual Studio offengelegt hat, gibt es auch Bestrebungen, den Zwischencode auch für Nicht-Microsoft-Plattformen verfügbar zu machen. (Das Projekt Mono gibt es noch länger.)

Damit man ein plattformunabhängiges C++ haben könnte, müsste man Speichertechnische Sachen wie Pointer abschaffen ... Und nach dieser Reduktion hätte man im Prinzip eine Sprache, die Java sehr ähnlich ist, aber keine Überlegenheit bietet.

Wenn man C++ Code mit den gängigen Compilern kompiliert, sollte man eigentlich (wenn keine Plattformspezifischen Bibliotheken verwendet werden) für Linux, OSX und Windows lauffähige Programme erzeugen können.

Für mobile Entdgeräte (auf die deine Frage abzuzielen scheint) muss man auch Java Programme meist komplett neu schreiben, von daher bietet der Bytecode in der Hinsicht keinen Vorteil.

Also C++ wird schon kompiliert, da es eine Compilersprache ist.

C++ wird aber in nicht in Bytecode sondern in Assembler und dann in Maschienensprache übersetzt. (Ich hoffe das ist so richtig)
Also wird C++ schon kompiliert, bloß halt nicht wie Java.

Mehr weiß ich leider auch nicht darüber.

MfG gerlochi

Weil C++ keine Laufzeitumgebung nutzt und zur Laufzeit gelinkt wird.

C++ wird kompeliert und danach gelinkt! Und wenn man die Komponenten einbindet, dann funktioniert das von mir aus auf jeder Windowskiste.

Für Java brauchst du IMMER die laufzeitumgebung auf der Kiste. DAs frisst nicht nur Platz, sondern auch Rechenzeit!

Außerdem kann man mit C/C++ viel tiefer programmieren, als es mit Java je möglich wäre.

Was möchtest Du wissen?