Quelltext

Quelltextbeispiel für die prozedurale Programmiersprache C. [1] Beispiele für weitere Sprachen siehe eigene Artikel.

Quelltext, auch Quellcode ( englisch source code) oder unscharf Programmcode genannt, ist in der Informatik der für Menschen lesbare, in einer Programmiersprache geschriebene Text eines Computerprogrammes. Abstrakt betrachtet kann der Quelltext für ein Programm auch als Software-Dokument bezeichnet werden, welches das Programm formal so exakt und vollständig beschreibt, dass dieses aus ihm vollständig automatisch von einem Computer in Maschinensprache übersetzt werden kann.

Quelltext kann auch (teilweise oder komplett) nicht-textueller Form sein, zum Beispiel als grafische Verknüpfung von logischen Funktionsblöcken (beispielsweise in Simulink oder als UML-Diagramm). Der Quelltext eines Programms kann mehrteilig sein, zum Beispiel auf mehrere Dateien (evtl. unterschiedlicher Formate) aufgeteilt sein oder teilweise grafisch, teilweise textuell vorliegen (z. B. UML, angereichert mit Methodenimplementierungen in der verwendeten Programmiersprache).

Anwendung

Erstellung

Quelltext wird meist manuell mit Hilfe einer integrierten Entwicklungsumgebung oder eines Texteditors erstellt. Es gibt aber auch Codegeneratoren, die den Code aus strukturierten Entwurfsdokumenten, z. B. Struktogrammen oder UML-Entwürfen, automatisch generieren. Eine weitere Erstellungsmöglichkeit sind Entwicklungswerkzeuge, die aus Entwürfen Code und umgekehrt auch aus Code wieder Entwürfe erzeugen können. Dabei werden manuelle Änderungen am Code nachträglich wieder in den Entwurf übernommen. Auf diese Weise ist ein „ Round-Trip-Engineering“ möglich, bei dem an jeder Stelle manuelle Veränderungen in den gesamten Entwicklungsprozess eingebracht werden können.

Zum Erstellen des Quelltextes ist meist ein einfacher Texteditor ausreichend. Mithilfe sprachspezifischer Editoren können gewisse Arbeitsschritte vereinfacht werden: Durch Syntaxhervorhebung werden Teile des Quelltextes entsprechend ihrer Funktionalität farblich hervorgehoben, was die Lesbarkeit verbessert. Ebenfalls zur Verbesserung der Lesbarkeit halten sich Programmierer meist an eine bestimmte Quelltextformatierung (z. B. Einrückung von Unterabschnitten, Groß-/Kleinschreibung …). In manchen Sprachen ist eine bestimmte Quelltextformatierung vorgegeben (z. B. Fortran-77, Python), manche integrierte Entwicklungsumgebung kann den Quelltext automatisch formatieren (sog. Beautifier).

Bei größeren Programmen, die aus vielen einzelnen Quelldateien bestehen, werden mitunter Informationen verwaltet, welche die Abhängigkeiten der Quelltextdateien untereinander beschreiben. Dies erlaubt beim Kompilieren mittels eines einzigen Aufrufes, alle Arbeitsschritte zur Erstellung des fertigen Programms auszuführen und nur jene Bestandteile erneut zu übersetzen, welche zwischenzeitlich geändert wurden oder von geänderten Komponenten abhängen. Beispiel hierfür sind Makefiles.

Zur besseren Dokumentation der Änderungen oder der gezielten Synchronisierung von mehreren gleichzeitig arbeitenden Programmierern wird der Quelltext häufig mit einer Software- Versionsverwaltung gespeichert, wodurch Änderungen später einsehbar sind und erforderlichenfalls rückgängig gemacht werden können.

Übersetzung und Ausführung

Hauptartikel: Compiler

Bevor das Programm, das der Programmierer schreibt, 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, wobei zuerst der Quelltext der jeweiligen Programmiersprache – meist vom Programmierer veranlasst – in einen abstrakten Zwischencode übersetzt wird, welcher dann zur Laufzeit von einer Laufzeitumgebung durch einen Interpreter oder JIT-Compiler in den Maschinencode überführt wird. Dieses Prinzip hat den Vorteil, dass ein und derselbe Zwischencode auf sehr vielen verschiedenen Plattformen ausführbar ist und somit nicht für jedes auf dem Markt übliche System 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.

Kommen bei der Programmierung Precompiler zum Einsatz, so kann der vom Programmierer erzeugte originäre Quelltext u. a. Ausdrücke/Anweisungen enthalten, die die eigentliche Programmiersprache nicht ‚versteht‘. Ein Beispiel dafür sind SQL-Anweisungen. Solche Anweisungen werden vom Precompiler in Befehle der Programmiersprache übersetzt; in den dabei oft nur temporär erzeugten Quelltextdaten werden die Originalanweisungen meist als Kommentare eingefügt, um sichtbar zu bleiben. Ähnlich wird auch beim Einsatz von Makroprozessoren verfahren: Diese generieren aus den als Makro formulierten Anweisungen Befehle der jeweiligen Programmiersprache.

Die bei der Compilierung erzeugten Maschinenbefehle (bei höheren Programmiersprachen meist mehrere je Quellcodeanweisung) repräsentieren in der Regel die programmierte Funktion selbst (bei einfachen Befehlen wie z. B. Addieren von Variableninhalten); dazu gehören auch Aufrufe von Betriebssystemfunktionen. Alternativ kann der Compiler eine der programmierten Anweisung entsprechende Routine, z. B. aus einer Programmbibliothek, im Zielcode direkt einfügen – oder nur einen Aufrufbefehl für eine solche Routine (z. B. für einen Datenbankaufruf oder für komplexe Algorithmen). So aufgerufene Routinen führen im Quelltext codierte Anweisungen als Unterprogramm und somit ‚gekapselt‘ aus.

In anderen Sprachen
Afrikaans: Bronkode
العربية: كود مصدري
asturianu: Códigu fonte
azərbaycanca: Mənbə kodu
беларуская: Зыходны код
беларуская (тарашкевіца)‎: Крынічны код
български: Изходен код
বাংলা: সোর্স কোড
bosanski: Izvorni kod
català: Codi font
Mìng-dĕ̤ng-ngṳ̄: Nguòng-dâi-mā
čeština: Zdrojový kód
dansk: Kildekode
English: Source code
Esperanto: Fontkodo
español: Código fuente
eesti: Lähtekood
euskara: Iturburu kode
فارسی: کد منبع
français: Code source
עברית: קוד מקור
हिन्दी: मूल कोड
hrvatski: Izvorni kod
Bahasa Indonesia: Kode sumber
italiano: Codice sorgente
한국어: 소스 코드
Кыргызча: Баштапкы код
lietuvių: Išeitinis kodas
latviešu: Pirmkods
олык марий: Тӱҥалтыш код
Bahasa Melayu: Kod sumber
Mirandés: Código fuonte
မြန်မာဘာသာ: ဆို့စ်ကုတ်ဒ်
Nederlands: Broncode
norsk nynorsk: Kjeldekode
norsk: Kildekode
Pälzisch: Kwälldegschd
português: Código-fonte
Runa Simi: Pukyu qillqa
română: Cod sursă
русский: Исходный код
srpskohrvatski / српскохрватски: Izvorni kod
Simple English: Source code
slovenčina: Zdrojový kód
slovenščina: Izvorna koda
српски / srpski: Изворни код
svenska: Källkod
Türkçe: Kaynak kodu
українська: Початковий код
اردو: سورس کوڈ
Tiếng Việt: Mã nguồn
中文: 源代码
Bân-lâm-gú: Goân-sú-bé
粵語: 原始碼