„Programmcode“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
Keine Bearbeitungszusammenfassung |
Linkvorschlag-Funktion: 2 Links hinzugefügt. |
||
(115 dazwischenliegende Versionen von 41 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Als '''Programmcode''' (oder '''Programmkode''') werden die [[Anweisung (Programmierung)|Anweisungen]] bezeichnet, die im Rahmen der [[Softwareentwicklung]] für ein bestimmtes [[Computerprogramm]] oder einen Teil davon entstehen und die dessen Funktionalität in einer bestimmten [[Programmiersprache]] beschreiben bzw. repräsentieren. |
|||
Programmcode nennt man den Text, der in einer Programmiersprache geschrieben ist und mit Hilfe eines Interpreters oder eines Compilers in Maschinensprache umgewandelt und anschließend von einer Maschine (dem Prozessor) ausgeführt wird. |
|||
== Arten == |
|||
Programmcode wird meist von Hand geschrieben, aber es gibt auch Codegeneratoren, die aus Entwürfen, z. B. Struktogrammen oder UML-Entwürfen, Code automatisch generieren. Besonders interessant sind Entwicklungssysteme, die aus Entwürfen Code und umgekehrt auch aus Code wieder Entwürfe erzeugen können. Dabei werden manuelle Änderungen am Code nachträglich in den Entwurf wieder eingebaut. Auf diese Weise ist ein sogenanntes "round-trip engineering" möglich, bei dem an jeder Stelle manuelle Veränderungen in den gesamten Entwicklungsprozess eingebracht werden können. |
|||
Im Allgemeinen werden folgende Arten von Programmcode unterschieden bzw. so bezeichnet: |
|||
* ''[[Quelltext]]'' ist die für Menschen lesbare und meist von Menschen erstellte Form eines Computerprogramms. |
|||
:: (wird auch ''Quell-'', ''Source-'', ''Primärcode'' oder ''Quellprogramm'' genannt) |
|||
* ''[[Zwischencode]]'' wird beim [[Compiler|Kompiliervorgang]] erzeugt und anschließend [[Interpreter|interpretiert]] oder in andere [[formale Sprache]]n, z. B. Maschinencode, übersetzt. |
|||
:: (wird plattformspezifisch meist unterschiedlich bezeichnet: [[Bytecode]], [[Objektcode]], [[Pseudocode]] oder ähnlich) |
|||
* ''[[Maschinencode]]'' kann von einer Maschine direkt ausgeführt werden, ist für Menschen jedoch nicht oder nur schwer lesbar. |
|||
:: (wird auch ''Maschinenprogramm'', ''Binärprogramm'' oder ähnlich genannt) |
|||
Jeder Programmcode bezieht sich auf genau ein Programm oder einen Programmteil. Die verschiedenen Codearten bauen aufeinander auf; beispielsweise ist der Quelltext die Grundlage für den Zwischencode, dieser für den Maschinencode. In der Regel wird Quelltext von Programmierern erzeugt, die anderen Codearten automatisch generiert. Dabei werden auf der jeweils nächsten Entwicklungsstufe häufig die Programmcodes mehrerer Funktionen/Programmteile zusammengefasst, sodass beispielsweise der Maschinencode eines ganzen Programms (als letzte Stufe) unter Verwendung mehrerer/vieler Programmcode-Teile entstand. |
|||
== Abgrenzung/Mehrdeutige Verwendung des Begriffs == |
|||
* Mit ‚Programmcode‘ ist nicht ‚Code‘ im Sinn von Sprache/Syntax gemeint, sondern im Sinne von ‚Programmstück‘. |
|||
* In der Literatur wird der Ausdruck „Programmcode“ zum Teil gleichbedeutend für nur eine der vorgenannten Unterarten verwendet, in vielen Fällen nur für „Quelltext“,<ref>[//www.duden.de/rechtschreibung/Programmcode Programmcode, Programmkode] – ''[[Duden]]'', veröffentlicht 2018; u. a. unter „Bedeutungsübersicht“ mit „''Quellcode''“</ref> aber auch für andere Codearten, zum Beispiel für „Maschinencode“.<ref>Informatik DUDEN ISBN 3-411-05232-5 Ausgabe 1993, S. 132 ''(Programm-)Code = „Ein in eine Maschinensprache übersetztes Programm“''</ref><ref>TUM [http://ttt.in.tum.de/dl/Diplom_VAM.pdf Visualisierung Abstrakter Maschinen] ([[Portable Document Format|PDF]], ≈ 1 [[Megabyte|MB]]) – ''[[Universität Trier]]'', veröffentlicht am 5. März 2001; u. a. mit „[…] aber in dem übersetzten Programmcode, welcher der abstrakten Maschine als Eingabe gilt, […]“</ref> |
|||
* Mit [[Deklarative Programmierung|deklarativen]] oder mit [[Grafische Programmiersprache|grafischen Programmiersprachen]] erzeugte Anweisungen werden nur teilweise als Programmcode/Quelltext bezeichnet (Beispiel siehe<ref>National Instruments: [http://www.ni.com/white-paper/14556/de/ Die Vorteile der grafischen Programmierung mit NI LabVIEW] – ''[[National Instruments]]'', am 7. August 2013; dort wurde das ''grafische Blockdiagramm'' als ''Programmcode'' bezeichnet</ref>), zum Teil aber auch als „Gegenteil von Programmcode“ (= kein Programm-„Text“), Beispiel siehe.<ref>[//books.google.de/books?id=LFMhNmBx8RgC&pg=PA899 14.3 Trigger] – Abschnitt in ''Visual C# 2008: Windows-Programmierung mit dem .NET Framework 3.5'', von ''Jürgen Bayer'' über den ''[[Markt+Technik Verlag|Markt-und-Technik-Verlag]]'' 2008 veröffentlicht; ISBN 978-3-8272-4339-3, S. 899 (unten), u. a. mit „Das Ganze erfordert keine einzige Zeile Programmcode, sondern wird komplett (deklarativ) in XAML definiert.“</ref> |
|||
== Formale Unterschiede == |
|||
Programmcodevarianten unterscheiden sich bezüglich ihrer ''Struktur, Form, Syntax, Speicherung etc.'' je nach Programmiersprache und den verwendeten Programmierwerkzeugen erheblich. Zum Teil fallen nicht alle Codevarianten an (zum Beispiel kein Zwischencode oder kein Maschinencode), oder sie werden mit anderen ''Bezeichnungen'' benannt (wie „Bytecode“). |
|||
{{Anker|verwaltet|managed|nicht verwaltet|unmanaged}} |
|||
In bestimmten Entwicklungsumgebungen wird zwischen ''verwaltetem Code'' und ''nicht verwalteten Code'' unterschieden (englisch ''‚{{lang|en|managed …}}‘'' und ''‚{{lang|en|unmanaged code}}‘'' genannt), siehe beispielsweise in ''[[Java (Programmiersprache)|Java]]'' oder auch in den ''[[.NET (Oberbegriff)|.NET]]''-Sprachen. Bei verwaltetem Code wird unter anderem die Speicherverwaltung<ref>die [[Speicherverwaltung]] findet hier weniger auf [[Betriebssystemebene]] als vielmehr auf Anwendungsebene statt – genauer in der [[Laufzeitumgebung]] (der jeweiligen Anwendung oder des auch sogenannten ''[[Anwendungsprogramm|Programmes]]''), auch ''virtuelle Maschine'' (und bspw. im Falle von Java ''[[Java Virtual Machine|Java-VM]]'') genannt</ref> weitgehend von der [[Laufzeitumgebung]] sowie von deren [[Compiler|Übersetzern]] übernommen. |
|||
== Lebensdauer == |
|||
Im Rahmen der Entwicklung von Programmcode wird dieser meist sehr oft und kurzfristig geändert/korrigiert (Quelltext) bzw. neu erzeugt (die anderen Arten). Programmcodes existieren dabei oft nur temporär bis zum nächsten Arbeitsschritt oder bis zur nächsten Softwareversion, zum Beispiel nach der Korrektur eines [[Programmfehler]]s. |
|||
== Immaterieller Begriff == |
|||
‚Programmcode‘ ist ein immaterieller Begriff und kann in unterschiedlichen Medien existieren, beispielsweise im Hauptspeicher eines Editors (während der Erstellung von Quelltext), als Member einer [[Programmbibliothek]] oder als ausführbare Datei (wenn er gespeichert wird), im Hauptspeicher des Computers (bei der Ausführung des Programms) oder auf Papier (beispielsweise in einer Quelltextliste). |
|||
== Vom Quelltext zur Ausführung == |
|||
Bevor ein [[Computerprogramm]] von einem [[Computer]] ausgeführt werden kann, muss es in [[Maschinensprache]], also in eine vom Computer verständliche Folge von [[Bit]]s, umgesetzt werden. Dies kann entweder vorab durch einen [[Compiler]] oder – zur [[Laufzeit (Informatik)|Laufzeit]] – durch einen [[Interpreter]] oder [[Just-in-time-Kompilierung|JIT-Compiler]] geschehen. In vielen Fällen wird mittlerweile eine Kombination aus beiden Varianten gewählt, bei der zur [[Übersetzungszeit]] der Quelltext der eigentlichen Programmiersprache in einen abstrakten Zwischencode übersetzt wird, welcher dann zur Laufzeit von einer [[Laufzeitumgebung]] durch einen Interpreter oder JIT-Compiler in den eigentlichen Maschinencode überführt wird. Dieses Prinzip hat den Vorteil, dass ein und derselbe Zwischencode auf sehr vielen verschiedenen [[Rechnerarchitektur]]en ausführbar ist und somit nicht für jede Zielarchitektur eine eigene Version der Software erscheinen muss. Typische Beispiele für einen solchen Zwischencode sind der Java-[[Bytecode]] sowie die [[Common Intermediate Language]]. Mittels eines [[Debugger]]s kann die Funktionsweise des Programmes zur Laufzeit verfolgt werden. |
|||
== Siehe auch == |
|||
{{Wiktionary|Programmcode}} |
|||
== Einzelnachweise == |
|||
<references /> |
|||
{{Normdaten|TYP=s|GND=4734701-6}} |
|||
[[Kategorie:Programmierung]] |
Aktuelle Version vom 7. Februar 2025, 17:49 Uhr
Als Programmcode (oder Programmkode) werden die Anweisungen bezeichnet, die im Rahmen der Softwareentwicklung für ein bestimmtes Computerprogramm oder einen Teil davon entstehen und die dessen Funktionalität in einer bestimmten Programmiersprache beschreiben bzw. repräsentieren.
Arten
[Bearbeiten | Quelltext bearbeiten]Im Allgemeinen werden folgende Arten von Programmcode unterschieden bzw. so bezeichnet:
- Quelltext ist die für Menschen lesbare und meist von Menschen erstellte Form eines Computerprogramms.
- (wird auch Quell-, Source-, Primärcode oder Quellprogramm genannt)
- Zwischencode wird beim Kompiliervorgang erzeugt und anschließend interpretiert oder in andere formale Sprachen, z. B. Maschinencode, übersetzt.
- (wird plattformspezifisch meist unterschiedlich bezeichnet: Bytecode, Objektcode, Pseudocode oder ähnlich)
- Maschinencode kann von einer Maschine direkt ausgeführt werden, ist für Menschen jedoch nicht oder nur schwer lesbar.
- (wird auch Maschinenprogramm, Binärprogramm oder ähnlich genannt)
Jeder Programmcode bezieht sich auf genau ein Programm oder einen Programmteil. Die verschiedenen Codearten bauen aufeinander auf; beispielsweise ist der Quelltext die Grundlage für den Zwischencode, dieser für den Maschinencode. In der Regel wird Quelltext von Programmierern erzeugt, die anderen Codearten automatisch generiert. Dabei werden auf der jeweils nächsten Entwicklungsstufe häufig die Programmcodes mehrerer Funktionen/Programmteile zusammengefasst, sodass beispielsweise der Maschinencode eines ganzen Programms (als letzte Stufe) unter Verwendung mehrerer/vieler Programmcode-Teile entstand.
Abgrenzung/Mehrdeutige Verwendung des Begriffs
[Bearbeiten | Quelltext bearbeiten]- Mit ‚Programmcode‘ ist nicht ‚Code‘ im Sinn von Sprache/Syntax gemeint, sondern im Sinne von ‚Programmstück‘.
- In der Literatur wird der Ausdruck „Programmcode“ zum Teil gleichbedeutend für nur eine der vorgenannten Unterarten verwendet, in vielen Fällen nur für „Quelltext“,[1] aber auch für andere Codearten, zum Beispiel für „Maschinencode“.[2][3]
- Mit deklarativen oder mit grafischen Programmiersprachen erzeugte Anweisungen werden nur teilweise als Programmcode/Quelltext bezeichnet (Beispiel siehe[4]), zum Teil aber auch als „Gegenteil von Programmcode“ (= kein Programm-„Text“), Beispiel siehe.[5]
Formale Unterschiede
[Bearbeiten | Quelltext bearbeiten]Programmcodevarianten unterscheiden sich bezüglich ihrer Struktur, Form, Syntax, Speicherung etc. je nach Programmiersprache und den verwendeten Programmierwerkzeugen erheblich. Zum Teil fallen nicht alle Codevarianten an (zum Beispiel kein Zwischencode oder kein Maschinencode), oder sie werden mit anderen Bezeichnungen benannt (wie „Bytecode“).
In bestimmten Entwicklungsumgebungen wird zwischen verwaltetem Code und nicht verwalteten Code unterschieden (englisch ‚managed …‘ und ‚unmanaged code‘ genannt), siehe beispielsweise in Java oder auch in den .NET-Sprachen. Bei verwaltetem Code wird unter anderem die Speicherverwaltung[6] weitgehend von der Laufzeitumgebung sowie von deren Übersetzern übernommen.
Lebensdauer
[Bearbeiten | Quelltext bearbeiten]Im Rahmen der Entwicklung von Programmcode wird dieser meist sehr oft und kurzfristig geändert/korrigiert (Quelltext) bzw. neu erzeugt (die anderen Arten). Programmcodes existieren dabei oft nur temporär bis zum nächsten Arbeitsschritt oder bis zur nächsten Softwareversion, zum Beispiel nach der Korrektur eines Programmfehlers.
Immaterieller Begriff
[Bearbeiten | Quelltext bearbeiten]‚Programmcode‘ ist ein immaterieller Begriff und kann in unterschiedlichen Medien existieren, beispielsweise im Hauptspeicher eines Editors (während der Erstellung von Quelltext), als Member einer Programmbibliothek oder als ausführbare Datei (wenn er gespeichert wird), im Hauptspeicher des Computers (bei der Ausführung des Programms) oder auf Papier (beispielsweise in einer Quelltextliste).
Vom Quelltext zur Ausführung
[Bearbeiten | Quelltext bearbeiten]Bevor ein Computerprogramm von einem Computer ausgeführt werden kann, muss es in Maschinensprache, also in eine vom Computer verständliche Folge von Bits, umgesetzt werden. Dies kann entweder vorab durch einen Compiler oder – zur Laufzeit – durch einen Interpreter oder JIT-Compiler geschehen. In vielen Fällen wird mittlerweile eine Kombination aus beiden Varianten gewählt, bei der zur Übersetzungszeit der Quelltext der eigentlichen Programmiersprache in einen abstrakten Zwischencode übersetzt wird, welcher dann zur Laufzeit von einer Laufzeitumgebung durch einen Interpreter oder JIT-Compiler in den eigentlichen Maschinencode überführt wird. Dieses Prinzip hat den Vorteil, dass ein und derselbe Zwischencode auf sehr vielen verschiedenen Rechnerarchitekturen ausführbar ist und somit nicht für jede Zielarchitektur eine eigene Version der Software erscheinen muss. Typische Beispiele für einen solchen Zwischencode sind der Java-Bytecode sowie die Common Intermediate Language. Mittels eines Debuggers kann die Funktionsweise des Programmes zur Laufzeit verfolgt werden.
Siehe auch
[Bearbeiten | Quelltext bearbeiten]Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Programmcode, Programmkode – Duden, veröffentlicht 2018; u. a. unter „Bedeutungsübersicht“ mit „Quellcode“
- ↑ Informatik DUDEN ISBN 3-411-05232-5 Ausgabe 1993, S. 132 (Programm-)Code = „Ein in eine Maschinensprache übersetztes Programm“
- ↑ TUM Visualisierung Abstrakter Maschinen (PDF, ≈ 1 MB) – Universität Trier, veröffentlicht am 5. März 2001; u. a. mit „[…] aber in dem übersetzten Programmcode, welcher der abstrakten Maschine als Eingabe gilt, […]“
- ↑ National Instruments: Die Vorteile der grafischen Programmierung mit NI LabVIEW – National Instruments, am 7. August 2013; dort wurde das grafische Blockdiagramm als Programmcode bezeichnet
- ↑ 14.3 Trigger – Abschnitt in Visual C# 2008: Windows-Programmierung mit dem .NET Framework 3.5, von Jürgen Bayer über den Markt-und-Technik-Verlag 2008 veröffentlicht; ISBN 978-3-8272-4339-3, S. 899 (unten), u. a. mit „Das Ganze erfordert keine einzige Zeile Programmcode, sondern wird komplett (deklarativ) in XAML definiert.“
- ↑ die Speicherverwaltung findet hier weniger auf Betriebssystemebene als vielmehr auf Anwendungsebene statt – genauer in der Laufzeitumgebung (der jeweiligen Anwendung oder des auch sogenannten Programmes), auch virtuelle Maschine (und bspw. im Falle von Java Java-VM) genannt