Wikipedia · einfach zusammengefasst · Stand
Programmcode
Als Programmcode (oder Programmkode) werden die Anweisungen bezeichnet, die im Rahmen der Softwareentwicklung für ein bestimmtes Computerprogramm oder einen …
Inhalt5 Abschnitte
Grundbegriff und Bedeutung
Programmcode oder Programmkode bezeichnet die Anweisungen, die bei der Softwareentwicklung für ein bestimmtes Computerprogramm oder für einen Teil davon entstehen. Diese Anweisungen beschreiben oder repräsentieren die Funktionalität des Programms in einer bestimmten Programmiersprache.
Wichtig ist: Programmcode meint hier nicht „Code“ im Sinn von Sprache oder Syntax, sondern ein Programmstück. Der Begriff wird in der Literatur jedoch nicht immer einheitlich verwendet. Manchmal steht er nur für Quelltext, manchmal auch für andere Formen wie Maschinencode.
Wichtige Arten
Es werden vor allem drei Arten von Programmcode unterschieden:
- Quelltext ist die für Menschen lesbare und meist von Menschen erstellte Form eines Computerprogramms. Er wird auch Quell-, Source-, Primärcode oder Quellprogramm genannt.
- Zwischencode entsteht beim Kompiliervorgang. Er wird anschließend interpretiert oder in andere formale Sprachen, zum Beispiel Maschinencode, übersetzt. Je nach Plattform heißt er auch Bytecode, Objektcode, Pseudocode oder ähnlich.
- Maschinencode kann von einer Maschine direkt ausgeführt werden. Für Menschen ist er jedoch nicht oder nur schwer lesbar. Er wird auch Maschinenprogramm, Binärprogramm oder ähnlich genannt.
Jeder Programmcode gehört genau zu einem Programm oder Programmteil. Die Codearten bauen häufig aufeinander auf: Quelltext kann Grundlage für Zwischencode sein, Zwischencode wiederum Grundlage für Maschinencode. Quelltext wird in der Regel von Programmierern erstellt; andere Codearten werden meist automatisch erzeugt. Auf späteren Entwicklungsstufen werden oft Programmcodes mehrerer Funktionen oder Programmteile zusammengeführt, etwa beim Maschinencode eines ganzen Programms.
Begriffsgrenzen und Varianten
Die Verwendung des Begriffs ist teilweise mehrdeutig. Besonders bei deklarativen oder grafischen Programmiersprachen werden die erzeugten Anweisungen nur teilweise als Programmcode oder Quelltext bezeichnet. Teilweise gelten sie auch als Gegenteil von Programmcode, weil sie kein Programm-„Text“ sind.
Programmcodevarianten können sich stark unterscheiden: in Struktur, Form, Syntax, Speicherung und abhängig von Programmiersprache sowie Programmierwerkzeugen. Nicht immer entstehen alle Varianten; manchmal gibt es zum Beispiel keinen Zwischencode oder keinen Maschinencode, oder die Varianten tragen andere Namen wie „Bytecode“.
In manchen Entwicklungsumgebungen unterscheidet man verwalteten Code und nicht verwalteten Code, englisch „managed code“ und „unmanaged code“. Bei verwaltetem Code wird unter anderem die Speicherverwaltung weitgehend von der Laufzeitumgebung und deren Übersetzern übernommen, etwa in Java oder in den .NET-Sprachen.
Speicherung und Lebensdauer
Programmcode ist ein immaterieller Begriff. Er ist also nicht an ein bestimmtes physisches Medium gebunden. Er kann zum Beispiel im Hauptspeicher eines Editors während der Erstellung von Quelltext existieren, als Member einer Programmbibliothek, als ausführbare Datei, im Hauptspeicher des Computers während der Ausführung oder auf Papier, etwa in einer Quelltextliste.
Während der Entwicklung wird Programmcode häufig verändert oder neu erzeugt. Quelltext wird oft korrigiert oder überarbeitet; andere Codearten werden nach Änderungen meist automatisch neu erstellt. Programmcodes existieren daher oft nur vorübergehend, zum Beispiel bis zum nächsten Arbeitsschritt oder bis zur nächsten Softwareversion nach der Korrektur eines Programmfehlers.
Vom Quelltext zum laufenden Programm
Damit ein Computerprogramm ausgeführt werden kann, muss es in Maschinensprache umgesetzt werden. Maschinensprache ist eine vom Computer verständliche Folge von Bits. Diese Umsetzung kann vorab durch einen Compiler geschehen oder zur Laufzeit durch einen Interpreter oder JIT-Compiler.
Häufig wird heute eine Kombination verwendet: Zur Übersetzungszeit wird der Quelltext der eigentlichen Programmiersprache in einen abstrakten Zwischencode übersetzt. Zur Laufzeit überführt eine Laufzeitumgebung diesen Zwischencode durch einen Interpreter oder JIT-Compiler in den eigentlichen Maschinencode.
Ein Vorteil dieses Prinzips ist, dass derselbe Zwischencode auf vielen verschiedenen Rechnerarchitekturen ausführbar sein kann. Dadurch muss nicht für jede Zielarchitektur eine eigene Version der Software erscheinen. Typische Beispiele für solchen Zwischencode sind Java-Bytecode und die Common Intermediate Language. Mit einem Debugger kann die Funktionsweise eines Programms zur Laufzeit verfolgt werden.