Warum ist c++ nicht auch plattformunabhängig?



  • warum ist c++ nicht plattformunabhängig wie java

    das java bytecode und c++ maschinencode erstellt weiß ich.
    nur ist nicht auf jeden system ein prozessor, der den selben code ausführne kann, warum ?

    muss man für jedes system den c++ code abändern für den jeweiligen prozessor?



  • C++ ist plattformunabhängiger als Java. Wer hat dir den Scheiß erzählöt?



  • Java ist IMHO eine Plattform.



  • also: Der "normale" Prozessor eines Computers kann nur mit Maschienencode arbeiten. Dieser hängt nicht vom Betriebssystem (also von der Plattform). Auch ein Computer ohne jedes Betriebssystem versteht den. Jetzt laufen aber die meisten Programme unter einem bestimmten System wie z.B. Windows, Linux oder Mac. Diese laden dein Programm in den Arbeitsspeicher und sorgen dafür das es richtig abgearbeitet wird.
    Jedes Betriebssystem hat aber jetzt sein eigenes Format wie dein Programm auf der Festplatte vorliegen muss um korrekt geladen zu werden (z.B. PE für Windows http://de.wikipedia.org/wiki/Portable_Executable)

    Dies ist ein Grund wiso ein C++ Programm für jede Plattform neu kompiliert werden muss.
    Andererseits willst du aber auch mit dem Betriebssystem interagieren (z.B. Ausgabe, Eingabe, Festplattenzugriff usw.). Dafür haben die einzelnen Systeme wieder unterschiedlich Mechanismen und Funktionen.

    Der Java Compiler erstellt dir, wie du bereits gesagt hast, ein Program in einem Bytecode. Dieser Bytecode ist ungleich dem Maschienencode und kann deshalb nicht direkt vom Prozessor abgearbeitet werden.
    Hier kommt die Java VM ins Spiel, die den Bytecode interpretieren und ausführen kann. Die VM ist selbst ein Programm, das für verschiedene Plattformen programmiert und erstellt wurde. Deshalb kannst du deine class dateien nehmen und sie auf einer beliebigen Plattform benutzen sofern es für diese Plattform eine VM gibt.

    C++ bietet dir insofern eine plattformunabhängigkeit, alsdass du den code
    nehmen kannst und ihn auf jedem beliebigen System in ein natives Programm kompilieren kannst.

    VORSICHT: Das gilt nur für C++ Standart und spezielle Bibliotheken. 🙂



  • muss der code also nur immer anders von unterschiedlichen compilern complimiert werden für c++ oder auch anders geschrieben werden für die einzelnen systeme



  • das kommt drauf an was man fuer bibliotheken nutzt.

    c++ mit standard bibliotheken sollte sich problemlos fuer eine andere plattform kompilieren lassen, manchmal muss man dafuer nichtmal den compiler wechseln, sondern lediglich die zielplattform angeben. du musst auch nicht auf der anderen plattform sein um dafuer kompilieren zu koennen, du kannst unter windows/linux fuer dein handy compilieren wenn du einen compiler findest.

    wenn du crossplattform programmieren willst, haengt es dann aber auch von den libs ab, deswegen sollte man vorher schauen ob die libs die man nutzt auf allen plattformen vorhanden sind. aber das portieren ist bei gutem programmierstil auch nicht aufwendig, meist hat man saubere schnittstellen und implementiert die ein wenig um.



  • Anders geschrieben, weil sich die Befehle um z.B. ein fenster zu erstellen je nach betriebssystem unterschiedlich sind (sein können).



  • hab ich ja gesagt 😉



  • dfgfdgf schrieb:

    C++ ist plattformunabhängiger als Java.

    zwischen theorie und praxis ist nur ein feiner unterschied.
    🙂



  • Fencer schrieb:

    hab ich ja gesagt 😉

    ik wollts ja nu mal wiederhole :p 🙂



  • C ist Platformunabhängier als JAVA^^

    deswegen ist JAVA aus so langsam, weil die VM dazwischen hängt... man könnte die VM mit dem OS vergleichen, auf dem die anwendung läuft..



  • Schau mal nach plattformunabhängigen C++-GUI wie Qt oder wxWidgets.



  • noobyyy schrieb:

    C ist Platformunabhängier als JAVA^^

    nur kann man damit herzlich wenig machen, wenn man plattformunabhängig bleiben will.
    🙂


Anmelden zum Antworten