Boro Geschrieben 24. Februar 2003 Geschrieben 24. Februar 2003 Hallo, ich suche nach einer verständlichen Erklärung für den Unterscheid zwischen Compilern und Interpretern und zwar am Beispiel von Visual Basic. Ich frage mich nämlich ob ich es bei VB mit einem Compiler oder einem Interpreter zu tun habe. Ich dachte immer dass ein Compiler ein Quellprogramm in ein Zielprogramm übersetzt und dieses ausführt, während der Interpreter einzelne Zeilen ausführt und dabei kein Objektprogramm hinterläßt. Vor einiger Zeit hab ich mal gelesen dass im Hintergrund von VB der Compiler von VC++ läuft, aber jetzt bin ich mir nicht mehr sicher, denn schließlich kann doch während des Debuggen einzelne Anweisung ausführen und diese auch noch zwischendurch verändern. Und dass ist eher dass Verhalten eines Interpreters, oder ? :confused: Das ist jetzt kein konkretes Problem, es interessiert mich einfach. Gruss Feivel Zitieren
Guybrush Threepwood Geschrieben 24. Februar 2003 Geschrieben 24. Februar 2003 Hi, ein Interpretor führt ein bestimmtes Script aus, d.h. wenn du das Script startest wird immer der Interpretor gestartet der dann das Script umsetzt. Wenn du das Script jetzt auf einem anderen PC ausführen willst muß hier auch der Interpretor installiert sein. Ein Compiler überprüft eigentlich nur deinen Quelltext ob das alles so in Ordnung ist. Danach erstellt dann ein Linker aus dem Quelltext den Maschinencode, sodass man die Anwendung ausführen kann ohne dass jedesmal der Linker die Anweisungen umsetzten muß. Wie das jetzt genau beim debuggen aussieht, kann ich dir auch nicht genau erklären. Gruß Guybrush Zitieren
Klotzkopp Geschrieben 24. Februar 2003 Geschrieben 24. Februar 2003 Der Compiler übersetzt nur, er führt nicht aus. VB ist definitiv eine Compilersprache. ... denn schließlich kann doch während des Debuggen einzelne Anweisung ausführen und diese auch noch zwischendurch verändern. Und dass ist eher dass Verhalten eines Interpreters, oder ? :confused:Debugging ist wieder eine ganz andere Geschichte. Viele Betriebssysteme bieten Mechanismen, mit denen sich ein Debugger an ein laufendes Programm hängen und dessen Programmfluss steuern kann. Bei manchen Debuggern geht auch das, was du beschreibst (Edit and Continue). Was da im einzelnen unter der Haube passiert, hängt von der Programmiersprache ab, aber das ist kein Indiz für die Unterscheidung zwischen Compiler- und Interpretersprache. Zitieren
Pico Geschrieben 24. Februar 2003 Geschrieben 24. Februar 2003 mir wurde es so beigebracht: ein interpreter übersetzt ein programm zur laufzeit zum betrieb wird dieser also benötigt ein compiler übersetzt ein programm vorher und wird zum betrieb später nicht benötigt gruß Pico Zitieren
Kalle1748 Geschrieben 25. Februar 2003 Geschrieben 25. Februar 2003 Moin Moin Außerdem werden Programmgröße und Geschwindigkeit wähend des Compilierens optimiert. d.h. Compilerte Programme laufen schneller ab ( ca 10 - 20 mal) Zitieren
Die Murmel Geschrieben 27. Februar 2003 Geschrieben 27. Februar 2003 @Klotzkopp: Ob VB eine Compilersprache ist oder nicht darüber kann man sich streiten. Es ist Interpreter wie Compiler. Als Programmierer müßte man das erkennen, denn wenn man ein Projekt erstellt unter VB, so kann man 1. das Programm auch ohne eine EXE-Datei abfahren lassen. Während man z.B. bei C/C++ ein Programm ohne EXE erst gar nicht zum laufen bekommt. 2. Bei VB läuft solange das Programm bis der Fehler auftaucht, bei C++, was definitiv eine Compilersprache ist, wird erst gar nicht das Programm gestartet, wenn im Code ein Fehler vorhanden ist, weil der Compiler erst im Code nach Fehlern sucht @Feivel: Ob VB nun Compiler oder Interpreter ist kann man nicht direkt abgrenzen. Es ist beides. Ein Interpreter führt Zeile für Zeile des Codes SOFORT aus! Ein Compiler muß erst den Code übersetzen, es wird dann eine Datei erzeugt, wo daraus der Linker dann die EXE erstellt und der Loader dann das ganze in den Arbeitsspeicher stellt. Zitieren
Timon Geschrieben 3. März 2003 Geschrieben 3. März 2003 Ein Compiler überprüft eigentlich nur deinen Quelltext ob das alles so in Ordnung ist. Danach erstellt dann ein Linker aus dem Quelltext den Maschinencode, sodass man die Anwendung ausführen kann ohne dass jedesmal der Linker die Anweisungen umsetzten muß. Das stimmt so nicht ganz. Der Compiler erzeugt den Maschinencode. Der Linker erzeugt dann das Executable mit absoluter Adresslage. Seine Aufgabe ist eigentlich nur die Speicherzuteilung und das Verbinden einzelner Module. Zitieren
smile Geschrieben 5. März 2003 Geschrieben 5. März 2003 Moin! Ich bin der Meinung, das VB ein Interpreter ist. Frühere VB Versionen bis 5.0 waren das so oder so, denn man musste auf jedem Rechner, auf dem VB Programme laufen sollten, die VB Runtime DLLs installieren, die nichts weiter als der Interpreter waren. Dass das nie so offensichtlich war, lag daran dass sie meist schon bei Windows dabei waren oder automatisch bei irgendwelchen Installationen im Hintergrund mit raufgepackt wurden. Wie es sich mit moderneren VB Versionen verhält, weiss ich nicht, dort wird aber meines Wissens die benötigten Runtime Funktionen gleich in jedes Programm mit hineingepackt, sodass die Runtime nicht seperat installiert werden muss. AFAIK werden VB Programme in eine Art Bytecode compiliert, der dann interpretiert wird. Ein echter Compiler war, ist und wird VB nie werden, denn VB.net ist so oder so bytecode-orientiert, ähnlich wie Java. Das kann jetzt alles die übelste Fehlaussage sein, deshalb würde ich eher mal danach googlen. Kenn mich mit VB nicht sonderlich gut aus (RAD mache ich mit Delphi/ Kylix)... bis denne Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.