Wikipedia · einfach zusammengefasst · Stand
Quelltext
Quelltext, auch Quellcode (englisch source code) oder unscharf Programmcode genannt, ist in der Informatik der für Menschen lesbare, in einer …
Inhalt4 Abschnitte
Begriff und Formen
Quelltext, auch Quellcode (englisch source code) und unscharf Programmcode, ist der für Menschen lesbare Text eines Computerprogramms, der in einer Programmiersprache geschrieben ist. Er beschreibt ein Programm formal so genau und vollständig, dass ein Computer ihn automatisch in Maschinensprache übersetzen kann.
Quelltext muss nicht ausschließlich Text sein. Er kann ganz oder teilweise aus grafisch verbundenen logischen Funktionsblöcken bestehen, etwa in Simulink oder als UML-Diagramm. Ein Programm kann zudem aus mehreren Quelldateien unterschiedlicher Formate bestehen oder grafische und textuelle Bestandteile verbinden, beispielsweise UML mit Methodenimplementierungen in einer Programmiersprache.
Erstellung und Verwaltung
Quelltext wird meist von Hand in einer integrierten Entwicklungsumgebung oder einem Texteditor erstellt. Auch Codegeneratoren können aus strukturierten Entwürfen wie Struktogrammen oder UML-Entwürfen automatisch Code erzeugen. Werkzeuge für Round-Trip-Engineering können sowohl aus Entwürfen Code als auch aus Code wieder Entwürfe erzeugen. Manuelle Änderungen am Code werden dabei nachträglich in den Entwurf übernommen, sodass Änderungen an verschiedenen Stellen in den Entwicklungsprozess einfließen können.
Ein einfacher Texteditor genügt meist. Sprachspezifische Editoren erleichtern die Arbeit durch Syntaxhervorhebung: Teile des Codes werden ihrer Funktion entsprechend farbig dargestellt. Programmierer verwenden außerdem Formatierungsregeln, etwa Einrückungen und Groß- oder Kleinschreibung, damit der Code besser lesbar ist. Manche Sprachen schreiben eine bestimmte Formatierung vor, zum Beispiel Fortran-77 und Python. Integrierte Entwicklungsumgebungen können den Code automatisch formatieren; dies wird Beautifier genannt.
Bei großen Programmen beschreiben zusätzliche Informationen die Abhängigkeiten zwischen Quelldateien. Dadurch kann ein einzelner Kompilierungsaufruf alle nötigen Schritte ausführen und nur geänderte Bestandteile oder von Änderungen abhängige Teile erneut übersetzen. Makefiles sind ein Beispiel dafür. Eine Software-Versionsverwaltung speichert den Quelltext so, dass Änderungen dokumentiert, später eingesehen und bei Bedarf rückgängig gemacht werden können. Sie unterstützt außerdem die Zusammenarbeit mehrerer Programmierer.
Übersetzung und Ausführung
Damit ein Computer ein Programm ausführen kann, muss der Quelltext in Maschinensprache umgesetzt werden, also in eine für den Computer verständliche Folge von Bits. Ein Compiler übersetzt den Code vor der Ausführung. Ein Interpreter oder ein JIT-Compiler übernimmt die Übersetzung zur Laufzeit.
Manche Programmiersprachen kombinieren beide Wege: Zunächst wird der Quelltext meist auf Veranlassung des Programmierers in einen abstrakten Zwischencode übersetzt. Eine Laufzeitumgebung überführt ihn erst bei der Ausführung durch einen Interpreter oder JIT-Compiler in Maschinencode. Der Vorteil ist, dass derselbe Zwischencode auf vielen Plattformen ausführbar ist und keine eigene Softwareversion für jedes System nötig ist. Java-Bytecode und die Common Intermediate Language sind typische Beispiele. Mit einem Debugger lässt sich die Funktionsweise eines Programms zur Laufzeit verfolgen.
Ein Precompiler verarbeitet Anweisungen, die der originäre Quelltext enthalten kann, die aber nicht zur eigentlichen Programmiersprache gehören, etwa SQL-Anweisungen. Er übersetzt sie in Befehle der Programmiersprache; die ursprünglichen Anweisungen bleiben in den oft nur temporär erzeugten Quelltextdaten meist als Kommentare sichtbar. Makroprozessoren arbeiten ähnlich und erzeugen aus Makroanweisungen Befehle der jeweiligen Sprache.
Die beim Kompilieren erzeugten Maschinenbefehle repräsentieren gewöhnlich die programmierte Funktion. Bei höheren Programmiersprachen entstehen meist mehrere Maschinenbefehle pro Quellcodeanweisung. Dazu gehören auch Aufrufe von Betriebssystemfunktionen. Statt den Code selbst einzufügen, kann ein Compiler eine passende Routine aus einer Programmbibliothek direkt in den Zielcode einfügen oder nur einen Aufruf für sie erzeugen, etwa für Datenbankaufrufe oder komplexe Algorithmen. Solche Routinen führen die im Quelltext festgelegten Anweisungen als gekapselte Unterprogramme aus.
Lizenzen und weitere Verwendungen
Software und ihr Quelltext unterliegen dem Urheberrecht. Man unterscheidet proprietäre Software und quelloffene Software. Quelloffene Programme stehen unter einer Open-Source-Lizenz und werden in der Regel zusammen mit ihrem Quelltext ausgeliefert. Die Lizenz erlaubt dessen Änderung und Weitergabe. Dadurch kann der Code untersucht, geprüft und an besondere Anforderungen angepasst werden. Verfechter des Open-Source-Prinzips sehen darin auch einen Qualitätsvorteil: Fachleute könnten Fehler besser finden, selbst beheben oder bessere Fehlermeldungen an die ursprünglichen Programmierer liefern. Die Überprüfbarkeit des Codes kann das Vertrauen in Korrektheit und Funktionalität erhöhen. Freie Software ist in diesem Sinne mit Open-Source-Software identisch.
Proprietäre Software wird normalerweise ohne Quelltext, also als Closed Source, oder unter besonders restriktiven Lizenzen ausgeliefert. Zum Schutz von Abnehmern oder Anwendern können Vereinbarungen zur Quelltexthinterlegung, sogenannte Source Code Escrow Agreements, verwendet werden. Bei individuell beauftragter Individualsoftware wird die Übergabe des Quelltexts gewöhnlich vereinbart. Erstellt ein Anwender, beispielsweise ein Unternehmen, Software für eigene Zwecke, sind Lizenzvereinbarungen überflüssig.
Im weiteren Sinn bezeichnet Quelltext auch die menschenlesbare Beschreibung eines gerenderten Mediums. Webseiten liegen in der Regel als HTML vor. Bei Wikipedia-Artikeln und vielen dynamischen Webseiten meint Quelltext häufig nicht das erzeugte HTML, sondern die Informationsquelle, aus der die Webseite erzeugt wird: Bei Wikipedia wird Wiki-Code in HTML und CSS transformiert. Auch PostScript und andere Vektorformate gelten ungerendert als Quelltext. VHDL beschreibt elektronische Schaltungen, die in einem Simulator Datenverarbeitung betreiben können.