488 Stimmen

Laufzeit vs. Kompilierzeit

Was ist der Unterschied zwischen Laufzeit und Kompilierzeit?

0voto

MagGGG Punkte 16018

Sie können die Code-Kompilierstruktur verstehen, indem Sie den tatsächlichen Code lesen. Die Laufzeitstruktur ist nicht klar, es sei denn, Sie verstehen das verwendete Muster.

-2voto

Ken Punkte 572

Es ist keine gute Frage für S.O. (es ist keine spezifische Programmierfrage), aber im Allgemeinen ist es keine schlechte Frage.

Wenn du denkst, es ist trivial: Was ist mit der Lesezeit gegenüber der Kompilierungszeit, und wann ist dies eine nützliche Unterscheidung? Was ist mit Sprachen, bei denen der Compiler zur Laufzeit verfügbar ist? Guy Steele (kein Dummkopf, er) hat in CLTL2 7 Seiten über EVAL-WHEN geschrieben, das CL-Programmierer verwenden können, um dies zu steuern. 2 Sätze reichen kaum für eine Definition, die selbst weit von einer Erklärung entfernt ist.

Im Allgemeinen ist es ein schwieriges Problem, dem Sprachdesigner anscheinend versucht haben auszuweichen. Sie sagen oft einfach "hier ist ein Compiler, er erledigt Kompilierzeit-Aufgaben; alles danach ist Laufzeit, viel Spaß". C ist darauf ausgelegt, einfach zu implementieren zu sein, nicht die flexibelste Umgebung für Berechnungen. Wenn du den Compiler nicht zur Laufzeit zur Verfügung hast oder die Möglichkeit, einfach zu steuern, wann ein Ausdruck ausgewertet wird, tendiert man dazu, Hacks in der Sprache zu verwenden, um gängige Verwendungen von Makros zu simulieren, oder Nutzer entwickeln Entwurfsmuster, um zu simulieren, dass sie über leistungsfähigere Konstrukte verfügen. Es kann definitiv ein lohnenswertes Ziel sein, eine einfach zu implementierende Sprache zu schaffen, aber das bedeutet nicht, dass dies das einzige Ziel im Bereich Sprachdesign ist. (Ich verwende EVAL-WHEN nicht oft, aber ich kann mir ein Leben ohne es nicht vorstellen.)

Und der Problembereich rund um Kompilierzeit und Laufzeit ist enorm und größtenteils noch unerforscht. Das heißt nicht, dass S.O. der richtige Ort für die Diskussion ist, aber ich ermutige Leute, dieses Gebiet weiter zu erforschen, insbesondere diejenigen, die keine vorgefassten Vorstellungen darüber haben, was es sein sollte. Die Frage ist weder einfach noch albern, und wir könnten den Fragesteller zumindest in die richtige Richtung lenken.

Leider kenne ich keine guten Referenzen dazu. CLTL2 erwähnt es ein wenig, ist aber nicht ideal, um mehr darüber zu erfahren.

5 Stimmen

Dude was nicht eine gute Programmierfrage für dich ist, ist relativ. Ich dachte, es war eine ausgezeichnete Frage und etwas, das ich mehr darüber lernen wollte. Ja, ich kenne das allgemeine "Konzept" und was Kompilierzeit und Laufzeit sind, aber ich möchte die Feinheiten wissen, die wirklich zur Laufzeit im Vergleich zur Kompilierzeit passieren. Es sind diese Feinheiten, die wichtig sind, wenn Sie programmieren und sich dessen bewusst sein müssen. Es ist nicht sehr konkret, deshalb fragt er. Ich hasse es, wenn Leute hier sitzen und sagen, dass allgemeine Fragen wie diese wertlos sind, wenn es einige der wichtigsten Fragen sind, die ein Entwickler verstehen sollte.

1 Stimmen

Wenn du keinen Wert in einer Frage siehst, ist das dein Problem. Wenn es allgemein ist, gibt es einen Grund dafür. Nur weil du keine allgemeinen Fragen magst, bedeutet das nicht, dass sich die Welt um das dreht, was du für nützlich hältst. Er hat eine bestimmte Absicht, diese Frage zu stellen, und er möchte eine Reihe von Antworten erhalten, um sowohl zu verstehen als auch zu definieren. Verstehst du?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X