Was ist der Unterschied zwischen Laufzeit-und compile-Zeit?
Also, was ist Laufzeit? Ist es eine virtuelle Maschine, die ausgeführt wird, Hälfte-kompilierten code läuft nicht auf einem bestimmten Prozessor. Wenn ja, dann was ist eine virtuelle Maschine? Gibt es eine andere software, die weiter übersetzt die Hälfte-kompilierten code zu Maschinen-spezifischen code? Was also, wenn wir sprechen eine dieser Sprachen, die nicht kompiliert intermediate code, sondern eher übersetzen/kompilieren direkt in Maschinen-code. Was ist eine Laufzeit in dieser situation? ist es die hardware (CPU und RAM)?
Auch, was ist der Unterschied zwischen compile-Zeit und Laufzeit? Sie sind Phasen des software-Lebenszyklus. Ich meine ein Programm ist ursprünglich eine Reihe von text-Dateien, richtig? Damit Sie kompilieren oder übersetzen, die zu einer form von Daten, die dann entweder in den Speicher geladen und vom Prozessor abgearbeitet wird, oder wenn es ein "managed" Sprachen, dann würde es brauchen, eine weitere compilation, bevor Sie es ausführen können, auf hardware.
Was genau ist eine verwaltete Sprache?
Guter Letzt, gibt es so etwas wie einen debug-Zeit, und was ist es?
Ich bin in meiner ersten Amtszeit Studium der informatik, und es wirklich verwirrt mich, wie unlogisch die Dinge gelehrt werden. "Information" wird schob hinunter meine Kehle, aber immer wenn ich versuche, Sinn zu machen aus dem, was durch die Organisation alles, was im Zusammenhang in einem system von genau definierten Komponenten und Beziehungen, stecken ich.
Vielen Dank im Voraus,
Garrett
- Mögliche Duplikate stackoverflow.com/questions/846103/runtime-vs-compile-time?rq=1
- Es gibt einen sehr großen Unterschied zwischen einem Laufzeit-oder die Laufzeit einer Sprache (bezieht sich auf code, wenn auch code, der nicht geschrieben wird, als Teil einer app), und unqualifizierte "runtime" (bezieht sich auf den Zeitraum, in dem ein Programm ausgeführt wird).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Art von code, geeignet für die Begründung von Menschen (nennen wir es mal "source code") muss Durchlaufen mehrere Phasen der übersetzung, bevor es physisch ausgeführt von der zugrunde liegenden hardware (wie CPU-oder GPU):
Diese übersetzungen durchgeführt werden kann in verschiedenen Phasen des Programms "Lebenszyklus". Zum Beispiel, eine bestimmte Programmiersprache oder ein Werkzeug wählen könnte, zu übersetzen, von 1 zu 2 wenn der Entwickler "baut" das Programm und übersetzen aus 2 zu 3, wenn der Benutzer "läuft" es (die typischerweise durch ein Stück software namens "virtual machine"1 werden muss, dass vor-installiert auf computer des Benutzers). Dieses Szenario ist typisch für die "managed" - Sprachen wie C# und Java.
Oder könnte es übersetzen aus 1 zu 3 direkt zur build-Zeit, wie üblich, für "native" Sprachen wie C und C++.
Die übersetzung zwischen 3 und 4 ist fast immer von der zugrunde liegenden hardware. Es ist technisch ein Teil der "Laufzeit" wird aber in der Regel abstrahiert und weitgehend unsichtbar für den Entwickler.
Den Begriff "compile-Zeit" in der Regel bezeichnet die übersetzung von 1 zu 2 (oder 3). Gibt es bestimmte Prüfungen, die getan werden kann zur compile-Zeit, bevor das Programm tatsächlich ausgeführt, wie machen Sie sicher, dass die Typen der Argumente an eine Methode übergeben übereinstimmung der deklarierten Typen der Parameter der Methode (vorausgesetzt, die Sprache ist "stark typisiert"). Je früher der Fehler abgefangen wird, desto leichter ist es zu beheben, aber dies muss im Einklang sein mit der Flexibilität, die ist, warum einige "scripting" Sprachen fehlen umfassende compile-Zeit überprüft.
Den Begriff "run-time" - Regel bezeichnet die übersetzung von 2 (oder 3) alle Weg nach unten zu 4. Es ist sogar möglich, zu übersetzen direkt aus 1 zur Laufzeit, wie die durch so genannte "interpretierte Sprachen".
Gibt es bestimmte Arten von Problemen, die nicht gefangen werden zur compile-Zeit, und Sie müssen mit entsprechenden debugging-Techniken (z.B. Debugger, Protokollierung, Profiler, usw...) zu identifizieren, die Sie zur Zeit ausführen. Das typische Beispiel für einen Laufzeitfehler, wenn Sie versuchen, Zugriff auf ein element einer Sammlung, die ist nicht da, die könnte manifestieren, die zur Laufzeit als eine Ausnahme und eine Folge der Ablauf der Ausführung zu Komplex ist für den compiler "Vorhersagen" zur compile-Zeit.
Den "debug-Zeit" ist einfach eine run-time während der debugger angefügt ist, um das laufende Programm (oder überwachen Sie das debug-log etc.).
1 verwechseln Sie dies nicht mit virtuellen Maschinen, die entworfen sind, zum ausführen von nativem code, wie z.B. VMware oder Oracle VirtualBox.
Compile-time und run-time bezieht sich normalerweise auf, wenn Prüfungen durchgeführt oder, wenn Fehler passieren kann. Zum Beispiel, in einer statisch typisierten Sprache wie C# die statische Typ-überprüfung zur compile-Zeit. Das bedeutet, dass Sie nicht kompilieren Sie die Anwendung, wenn Sie zum Beispiel versuchen, weisen Sie einen string in eine int-variable. Run-time auf der anderen Seite bezieht sich auf die Zeit, wenn der code tatsächlich ausgeführt wird. Zum Beispiel Ausnahmen sind immer geworfen auf die run-time.
Als für virtuelle Maschinen und wie; C# ist eine Programmiersprache, die kompiliert wird in der Common Intermediate Language (CIL oder IL). Das Ergebnis ist ein code, das ist die gleiche, unabhängig davon, welche .NET-Sprache (C# und VB.NET beide produzieren IL). Die .NET Framework führt diese Sprache in run-time mit Just-in-time-Kompilierung. Also ja, Sie können sehen, die .NET Framework als eine virtuelle Maschine, die läuft eine spezielle subsprache gegen die target-machine code.
Als für debug-Zeit, ich glaube nicht, dass es so etwas gibt, als Sie noch mit das Programm beim Debuggen. So, wenn etwas, debug-Zeit Lauf-Zeit mit einem angehängten debugger. Aber Sie würden nicht mit einem Begriff wie, die.
Compile-Zeit - Den Zeitraum an, in dem ein compiler versuchen, die zum kompilieren von code. Beispiel: "Der compiler, dass es 3-Typ-Fehler zur compile-Zeit, die verhindert, das Programm wird zusammengestellt."
Laufzeit - Die Zeit, während der ein Programm ausgeführt wird. Beispiel: "Wir haben Sie nicht vor Ort den Fehler erst zur Laufzeit, weil es ein Logik Fehler."
Run-time und virtuelle Maschinen sind zwei separate Ideen - Ihre erste Frage macht keinen Sinn für mich.
Virtuellen Maschinen in der Tat sind software-Programme, die übersetzt "Objekt" [Java, C#, etc.] - code in byte-code, der ausgeführt werden kann, die auf einer Maschine. Wenn eine Sprache verwendet eine virtuelle Maschine, die es auch oft verwendet Just-In-Time kompilieren - was bedeutet, dass der compile-time und run-time im wesentlichen geschieht in der gleichen Zeit.
Umgekehrt, kompilierten Sprachen wie C, C++ sind in der Regel für Sie zusammengestellt byte-Codes, bevor Sie ausgeführt wird auf einer Maschine und daher compile-time und run-time sind komplett getrennt.
Grundsätzlich "managed" Sprachen haben garbage collection (die Sie nicht direkt Bearbeiten Speicher mit Zuweisungen und de-Zuweisungen [Java und C# sind beides Beispiele]), und führen Sie auf irgendeine Art von virtuellen Maschine.