[C/C++] Ein paar allgemeine Fragen (Assembler, Compiler und Interpreter)

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Kirill, 28. Januar 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 28. Januar 2010
    Ein paar allgemeine Fragen (Assembler, Compiler und Interpreter)

    Hallo,
    erstmal im Voraus, ich habe bereits google und Wiki befragt. Es geht mir jetzt primär um den Feinschliff bzw. was ich aus Wiki nicht herauslesen konnte.

    Und zwar, was ist der genaue unterschied zwischen Assembler, Compiler und Interpreter?


    Was ich nun verstanden habe:


    Assembler:
    Übersetzt direkt in die Maschinensprache (Binär).

    Compiler:
    Übersetzt den ganzen Quellcode und macht ihn dann Ausführbar.

    Vorteil:
    Beim Ausführen ist er schnell

    Nachteil:
    Muss für jede Plattform neu kompiliert werden

    Interpreter:
    Übersetzt/Dolmegt den Quellcode Zeile für Zeile in Bytecode und wir dann in einer Umgebung wie Java oder .Net kompiliert.

    Vorteil:

    Plattformunabhängig

    Nachteil:
    Langsam, da er jedes mal kompiliert werden muss


    Habe ich das so richtig verstanden?


    Also müsste C++ eine Compiler-Sprache sein und C# und Java eine Interpreter-Sprache sein oder?

    Danke im Voraus!

    Grüße
    Kirill
     
  2. 28. Januar 2010
    AW: Ein paar allgemeine Fragen (Assembler, Compiler und Interpreter)

    Mit Java/C# hast du nicht ganz recht:
    Bytecode – Wikipedia

    Es wird nicht jedes Mal kompiliert, sondern zur Laufzeit in den richtigen Maschinencode übersetzt.
     
  3. 28. Januar 2010
    AW: Ein paar allgemeine Fragen (Assembler, Compiler und Interpreter)

    Erstmal danke!!

    Also muss man sagen, dass Java und C# erstmal kompiliert zu ByteCode und erst dann mit einer Virtual Machine interpretiert zur Laufzeit.

    Dabei handel es sich bei Java und C# um Kompiler und Interpreter? Dann ist PHP und Bash-Scripting eine reine Interpreter-Sprache?
     
  4. 28. Januar 2010
    AW: Ein paar allgemeine Fragen (Assembler, Compiler und Interpreter)

    du meinst das richtige.

    c++ wird kompiliert (in eine assembler variante/maschinencode) und kann anschließend direkt ausgeführt werden.

    bei java oder allen .net-sprachen wird eine zwischensprache generiert (ähnlich asm - sog. op- oder bytecode) und anschließend in einer virtuellen maschine (vm) ausgeführt.

    dadurch das diese sprachen in einer zwischenform gespeichert werden, werden sie gleichzeitig plattform unabhänig, da lediglich eine spezielle virtuelle maschine für die jeweiligen plattformen erstellt werden muss (siehe java).

    eine weitere variante dieser sprachen sind die scriptsprachen, mit dem unterschied das hierbei das erstellen des opcodes zur laufzeit passiert. ebenso sind die meisten scriptsprachen nicht [so streng] typisiert.

    zur verdeutlichung: vom source bis zur ausführung

    c++: compiler+linker -> ausführbarer code -> fertig
    java/.net: compiler -> opcode -> vm -> opcode ausführen -> fertig
    php: compiler -> opcode -> vm -> opcode ausführen -> opcode verwerfen -> fertig
     
  5. 28. Januar 2010
    AW: Ein paar allgemeine Fragen (Assembler, Compiler und Interpreter)

    OK, danke Leute!! Habe es nun verstanden.

    BWs sind an euch raus.
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.