Was ist der Unterschied zwischen Laufzeit und Kompilierzeit?
Antworten
Zu viele Anzeigen?Hier ist ein Zitat von Daniel Liang, dem Autor von 'Einführung in die JAVA Programmierung', zum Thema Kompilierung:
"Ein in einer Hochsprache geschriebenes Programm wird Quellprogramm oder Quellcode genannt. Da ein Computer kein Quellprogramm ausführen kann, muss ein Quellprogramm für die Ausführung in maschinencode übersetzt werden. Die Übersetzung kann mit einem anderen Programmierungswerkzeug namens Interpreter oder Compiler durchgeführt werden." (Daniel Liang, "Einführung in die JAVA Programmierung", S. 8).
...Er fährt fort...
"Ein Compiler übersetzt den gesamten Quellcode in eine maschinen-code Datei, und die maschinen-code Datei wird dann ausgeführt"
Wenn wir hoch entwickelten/menschlich lesbaren Code eingeben, ist dies zunächst nutzlos! Es muss in eine Sequenz von 'elektronischen Vorgängen' in Ihrer winzigen CPU übersetzt werden! Der erste Schritt dazu ist die Kompilierung.
Einfach ausgedrückt: Ein Kompilierungsfehler tritt während dieser Phase auf, während ein Laufzeitfehler später auftritt.
Denken Sie daran: Nur weil ein Programm ohne Fehler kompiliert wurde, heißt das nicht, dass es ohne Fehler ausgeführt wird.
Ein Laufzeitfehler tritt im bereiten, laufenden oder wartenden Teil eines Programmlebenszyklus auf, während ein Kompilierungsfehler vor dem 'Neu'-Stadium des Lebenszyklus auftritt.
Beispiel für einen Kompilierungsfehler:
Ein Syntaxfehler - Wie kann Ihr Code in maschinelle Anweisungen kompiliert werden, wenn er mehrdeutig ist? Ihr Code muss zu 100 % den syntaktischen Regeln der Sprache entsprechen, da er sonst nicht in funktionierenden Maschinencode kompiliert werden kann.
Beispiel für einen Laufzeitfehler:
Speicherplatzmangel - Ein Aufruf einer rekursiven Funktion könnte beispielsweise zu einem Stacküberlauf führen, wenn eine Variable eines bestimmten Grades gegeben ist! Wie kann dies vom Compiler vorausgesehen werden? Das kann er nicht.
Und das ist der Unterschied zwischen einem Kompilierungsfehler und einem Laufzeitfehler
Zum Beispiel: In einer stark typisierten Sprache könnte ein Typ zur Kompilierzeit oder zur Laufzeit überprüft werden. Zur Kompilierzeit bedeutet dies, dass der Compiler sich beschwert, wenn die Typen nicht kompatibel sind. Zur Laufzeit bedeutet, dass Sie Ihr Programm problemlos kompilieren können, aber zur Laufzeit eine Ausnahme ausgelöst wird.
Stellen Sie sich vor, Sie sind ein Chef und Sie haben einen Assistenten und eine Haushälterin, und Sie geben ihnen eine Liste von Aufgaben, die der Assistent (Kompilierzeit) übernehmen wird. Er überprüft diese Liste, um zu sehen, ob die Aufgaben verständlich sind und Sie keine seltsame Sprache oder Syntax verwendet haben. Er versteht, dass Sie jemandem eine Aufgabe zuweisen möchten, also weist er sie für Sie zu. Er versteht, dass Sie gerne Kaffee möchten, und damit ist seine Aufgabe erledigt. Die Haushälterin (Laufzeit) beginnt dann diese Aufgaben auszuführen. Sie geht also los, um Ihnen Kaffee zu machen, aber plötzlich stellt sie fest, dass sie keinen Kaffee hat. Da macht sie es nicht oder handelt anders, indem sie Ihnen Tee macht (wenn das Programm aufgrund eines Fehlers anders handelt).
In einfachen Worten der Unterschied zwischen Kompilierzeit & Laufzeit.
Kompilierzeit: Der Entwickler schreibt das Programm im .java-Format und konvertiert es in Bytecode, der eine Klassen-Datei ist. Während dieses Kompilierungsvorgangs kann ein Fehler, der auftritt, als Kompilierzeitfehler definiert werden.
Laufzeit: Die generierte .class-Datei wird von der Anwendung für ihre zusätzliche Funktionalität verwendet und die Logik erweist sich als falsch, was zu einem Laufzeitfehler führt.
Kompilierzeit: Die Zeit, die benötigt wird, um den Quellcode in einen Maschinencode umzuwandeln, damit er ausführbar wird, wird als Kompilierzeit bezeichnet.
Ausführungszeit: Wenn eine Anwendung läuft, spricht man von der Ausführungszeit.
Kompilierzeitfehler sind Syntaxfehler, fehlende Dateiverweisfehler. Laufzeitfehler treten auf, nachdem der Quellcode in ein ausführbares Programm kompiliert wurde und während das Programm ausgeführt wird. Beispiele sind Programmabstürze, unerwartetes Programmverhalten oder Funktionen, die nicht funktionieren.