0%

Wie aus Daten Arbeit wird

Vom Quellcode zum laufenden Programm

Hier ist eine Zeile Python:

print("Hello")

Du kannst das mehr oder weniger lesen, selbst wenn du noch nie programmiert hast. Die CPU kann es nicht. Sie liest kein Englisch, weiß nicht, wozu Anführungszeichen dienen, und kennt kein Konzept des Ausgebens. Sie führt Maschinenanweisungen aus. Diese Zeile ist keine.

Solcher Text ist Quellcode: für Menschen geschrieben. Etwas muss zwischen ihm und den Maschinenanweisungen stehen, die tatsächlich ausgeführt werden.

Eine native Python-Laufzeitumgebung mit Interpreter arbeitet die Anweisungen eines Python-Programms als Quellcode oder Bytecode ab. Die CPU führt die Maschinenanweisungen der Laufzeitumgebung aus, während diese dem Programm folgt.

Quellcode braucht eine Implementierung

Eine Programmiersprache ist ein Regelwerk zum Schreiben von Quellcode. Eine Implementierung liefert die funktionierende Software, die von Menschen geschriebenen Code in Operationen umsetzt, die die Maschine ausführen kann. Implementierungen verwenden verschiedene Strategien, oft in Kombination.

Ein verbreiteter Weg übersetzt Code im Voraus. Ein Compiler liest Quellcode und erzeugt eine native ausführbare Datei mit Maschinenanweisungen für eine bestimmte Systemart. Die Übersetzung kann auf dem Computer des Entwicklers stattfinden, bevor du die Anwendung herunterlädst. Beim Ausführen kann die Datei weiterhin das passende Betriebssystem, die richtige Architektur, Bibliotheken und Berechtigungen benötigen.

Bei einem anderen Weg bleibt eine Laufzeitumgebung beteiligt, während das Programm läuft. Eine Laufzeitumgebung kann Quellcode in eine Zwischenform übersetzen, diese interpretieren, während der Ausführung Teile in Maschinenanweisungen kompilieren oder diese Schritte kombinieren. Ein Interpreter ist der Teil, der Quellcode oder Zwischenanweisungen liest und ausführt, was sie beschreiben. Diese Strategien gehören zu einer bestimmten Implementierung, nicht dauerhaft zur Sprache selbst.

Python verwendet einen von einer Laufzeitumgebung gesteuerten Weg. Eine Python-Implementierung übersetzt den Quellcode in eine interne Form und führt ihn aus. Diese internen Schritte brauchst du noch nicht. Für diesen Kurs zählt die praktische Folge: Die Python-Implementierung muss vorhanden sein, wenn du eine Python-Quelldatei ausführst.

Warum eine Python-Datei Python braucht

Eine .py-Datei ist Quelltext und keine native ausführbare Datei. Allein kann sie ihre Anweisungen nicht ausführen.

Zum Ausführen muss Python selbst installiert sein. Python liest deine Datei und tut, was darin steht. Eigenen Code auszuführen umfasst deshalb immer zwei Dinge statt einem: das Python-Programm und die Datei, die es lesen soll.

Behalte das im Kopf. In Kapitel 7 startest du Python selbst auf diese Weise. Eine mögliche Fehlerursache ist, dass der Computer Python gar nicht findet. Wenn du weißt, dass Python ein Programm ist, das jemand installieren musste, ist dieser Fehler verständlich statt rätselhaft.

Du schickst einem Freund eine kleine .py-Datei, die nur gewöhnliche Möglichkeiten von Python verwendet. Er hat Python nicht installiert. Warum reicht es nicht, nur die Quelldatei zu erhalten, um sie auszuführen?

Wenn du nach einem Doppelklick auf eine Datei keine Ausgabe siehst, beweist das allein nicht, dass Python fehlt. Die Datei könnte in einem Editor geöffnet werden, oder ein Terminalfenster könnte sich schließen, bevor du etwas lesen kannst. Kapitel 7 zeigt, wie du die Datei aus einem offenen Terminal ausführst und das tatsächliche Ergebnis untersuchst.

Was du fragen solltest, wenn etwas nicht läuft

Alle diese Strategien enden damit, dass die CPU Maschinenanweisungen ausführt. Unterschiedlich ist, welche Implementierung die Übersetzung vorgenommen hat, wann sie stattfand und was auf deinem Computer vorhanden sein muss.

Daraus ergibt sich eine kurze Fragenliste. Jede Frage nennt etwas Konkretes, das fehlen könnte:

  • Ist dieses Programm die richtige Art für diesen Computer?

  • Falls es eine Laufzeitumgebung wie Python braucht: Ist sie installiert?

  • Sind auch die anderen benötigten Bestandteile vorhanden?

  • Hat das Betriebssystem die Ausführung der Datei erlaubt?

In Kapitel 7 verwendest du eine Variante dieser Liste mit einer echten Fehlermeldung vor dir.

Eine Frage ist noch offen. Ein kompiliertes Programm besteht aus Maschinenanweisungen, bereit zur Ausführung. Aber bereit für was? Nicht jede CPU versteht dieselben Anweisungen.