Markus Nordhaus: Was genau bedeutet "compilieren"?

Beitrag lesen

Hallo,

Aber Unix und Windows laufen doch z.B. auf denselben "maschinden", >>aber die verstehen doch nicht denselben Quellcode?! Das OS muß da >>doch auch irgendwas mit zu tun haben.

Das ist Richtig, denn das OS stellt, kurz gesagt, die Funktionen für die Ein und Ausgabe zur Verfügung. dazu gehört das Dateisystem und die meist graphische Benutzeroberfläche. Diese Funktionen Unterscheiden sich von System zu System. Der Zugriff auf diese Funktionen gestaltet sich (auf jeden fall auf der Mashienensprachen Ebene) von System zu System unterschiedlich z.B. beim "guten" alten DOS über den Software Interupt 21h als Hauptkomponente für die Ein und Ausgabe.

Die einzelnen Programme führen nur ihre Algoritmen aus die, Vorrausgesetzt das OS tritt nicht als Virtuelle Maschiene auf, im Prinzip (abgesehen davon das man eventuell auf das Scheduling des einzelenen OS eingehen muss ...) auf der Ebende der Maschienensprache gleichkompeliert werden müssten. Die Ein und Ausgabe erledigt dann Das Betriebsystem denn das ist eine der Hauptaufgeaben eines OS.

Und bei dieser Zwischenstufe, die kann auf mehrern OS installiert >>werden, und wird jeweils unterschiedlich interpretiert, oder nur >>auf verschiedene Maschienen bezogen?

Das ist soweit richtig denn diese Zwischenstufe die Du meinst (wenn wir uns richtig verstehen) ist nichts anderes als ein Virtueller Maschienencode, der von einer Software interpretiert wird, die für das Betriebsystem und die Maschiene (s.o.) kompeliert wurde.
solche Software nennt man auch Virtuelle Maschiene.

Somit ist dieses Programm auf jedem System Lauffähig für das eine solche Software installiert wurde.

Also C, C++, C# und Java werden alle mehr oder wenig konsequent(nenn  ich das jetzt mal) kompiliert, und ggfs beim ausführen noch interpretiert. PHP und PERL dagegen werden nicht kompiliert, sondern beim ausführen interpretiert(hatte auch mal was gehört das der PERL Interpreter jedesmal neu geladen werden muß, und bei PHP als Modul der Interpreter die ganze Zeit geladen ist, oder so ähnlich:-).
Nur für mein Verständnis, es gibt ja von vielen Programmen(z.B. PHP) immer den Sourcecode, ist der für alle Maschinen und OS gleich? Also kann das wenn man will jeder durch seinen entsprechenden Compilier laufen lassen, und alle habe aus demselben Code eine andere maschinen/os-Spezifisches Programm? Die Binary-Distributions gibt es ja auch für alle OS einzelnd.
Und noch eine Frage zum Schluß, Javascript und html - die werden vom Browser einfach nur interpretiert, d.h. an dieser Stelle in Bytecode übbersetzt, den die Maschine versteht?

Viele Grüße und nochmal vielen Dank für die zahlreichen Antworten!

Andreas