Quelltext, auchQuellcode (englischsource code) oder unscharfProgrammcode genannt, ist in derInformatik der fürMenschen lesbare, in einerProgrammiersprache geschriebene Text einesComputerprogrammes. Abstrakt betrachtet kann der Quelltext für ein Programm auch alsSoftware-Dokument bezeichnet werden, welches das Programm formal so exakt und vollständig beschreibt, dass dieses aus ihm vollständig automatisch von einem Computer inMaschinensprache übersetzt werden kann.
Quelltext kann auch (teilweise oder komplett) nicht-textueller Form sein, zum Beispiel als grafische Verknüpfung von logischen Funktionsblöcken (beispielsweise inSimulink oder alsUML-Diagramm). Der Quelltext eines Programms kann mehrteilig sein, zum Beispiel auf mehrere Dateien (evtl. unterschiedlicherFormate) aufgeteilt sein oder teilweise grafisch, teilweise textuell vorliegen (z. B. UML, angereichert mit Methodenimplementierungen in der verwendeten Programmiersprache).
Quelltext wird meist manuell mit Hilfe einerintegrierten Entwicklungsumgebung oder einesTexteditors erstellt. Es gibt aber auchCodegeneratoren, die den Code aus strukturierten Entwurfsdokumenten, z. B.Struktogrammen oderUML-Entwürfen, automatisch generieren. Eine weitere Erstellungsmöglichkeit sindEntwicklungswerkzeuge, 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: DurchSyntaxhervorhebung werden Teile des Quelltextes entsprechend ihrer Funktionalität farblich hervorgehoben, was dieLesbarkeit verbessert. Ebenfalls zur Verbesserung der Lesbarkeit halten sich Programmierer meist an eine bestimmteQuelltextformatierung (z. B. Einrückung von Unterabschnitten, Groß-/Kleinschreibung …). In manchen Sprachen ist eine bestimmte Quelltextformatierung vorgegeben (z. B.Fortran-77,Python), mancheintegrierte Entwicklungsumgebung kann den Quelltext automatisch formatieren (sog.Beautifier).
Bei größeren Programmen, die aus vielen einzelnenQuelldateien 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 sindMakefiles.
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.
Bevor dasProgramm, das der Programmierer schreibt, von einemComputer ausgeführt werden kann, muss es inMaschinensprache, also in eine vom Computer verständliche Folge vonBits, umgesetzt werden. Dies kann entweder vorab durch einen Compiler oder – zurLaufzeit – durch einenInterpreter oderJIT-Compiler geschehen. Bei einigen Programmiersprachen wird auch eine Kombination aus beiden Varianten gewählt, wobei zuerst der Quelltext der jeweiligen Sprache – meist vom Programmierer veranlasst – in einen abstrakten Zwischencode übersetzt wird, welcher dann zur Laufzeit von einerLaufzeitumgebung 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 dieCommon Intermediate Language. Mittels einesDebuggers kann die Funktionsweise des Programmes zur Laufzeit verfolgt werden.
Kommen bei derProgrammierungPrecompiler zum Einsatz, so kann der vomProgrammierer erzeugteoriginäre Quelltext u. a. Ausdrücke/Anweisungen enthalten, die die eigentliche Programmiersprache nicht ‚versteht‘. Ein Beispiel dafür sindSQL-Anweisungen. Solche Anweisungen werden vom Precompiler in Befehle der Programmiersprache übersetzt; in den dabei oft nurtemporär erzeugten Quelltextdaten werden die Originalanweisungen meist alsKommentare eingefügt, um sichtbar zu bleiben. Ähnlich wird auch beim Einsatz vonMakroprozessoren verfahren: Diese generieren aus den alsMakro formulierten Anweisungen Befehle der jeweiligen Programmiersprache.
Die bei der Kompilierung erzeugtenMaschinenbefehle (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 auchAufrufe von Betriebssystemfunktionen. Alternativ kann der Compiler eine der programmierten Anweisung entsprechende Routine, z. B. aus einerProgrammbibliothek, im Zielcodedirekt 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 alsUnterprogramm und somit ‚gekapselt‘ aus.
Software und der dazugehörige Quelltext unterliegen demUrheberrecht. Sie können in zwei Kategorien unterteilt werden:Proprietäre Software undquelloffene-Software.
Quelloffene Programme, also solche, die unter einer „Open-Source“-Lizenz stehen, werden in der Regel direkt mit ihrem Quelltext ausgeliefert, dessen Änderung und Weitergabe durch die Lizenz gestattet ist. Dies ermöglicht deren Studium, Prüfung und Anpassung für spezifische Bedürfnisse. Verfechter des Open-Source-Prinzips sind der Meinung, dass dies zudem die Qualität verbessere, da Fachleute die Fehler besser lokalisieren könnten und sie entweder direkt beheben oder den ursprünglichen Programmierern qualitativ bessere Fehlermeldungen liefern könnten. Die Möglichkeit, Open-Source-Software anhand ihres Quelltextes zu überprüfen, erhöhe das Vertrauen des Anwenders in ihre Korrektheit und Funktionalität im Sinne des Anwenders.Freie Software ist in diesem Sinne mit Open-Source-Software identisch.
Proprietäre Software wird in der Regel ohne Quelltext (Closed Source) oder nur unter besonders restriktiven Lizenzen ausgeliefert. Dem Schutz des Abnehmers/Anwenders dienen dann manchmal Vereinbarungen zurQuelltexthinterlegung(Source Code Escrow Agreements). Bei individuell beauftragter Erstellung vonIndividualsoftware durch Dritte wird in der Regel die Übergabe des Quelltexts ebenfalls vereinbart. Bei Software, die einAnwender, zum Beispiel ein Unternehmen, für eigene Zwecke erstellt, sind Lizenzvereinbarungen überflüssig.
Im weiteren Sinne versteht man unter Quelltext auch die menschenlesbare Beschreibung eines gerenderten Mediums.
Der Quelltext von Web-Seiten ist in der Regel inHTML geschrieben.
Unter dem Quelltext von Wikipedia-Artikeln ist der Text zu verstehen, den die Autoren der Artikel eingeben. Hier ist, wie bei vielen dynamischen Webseiten, der HTML-Code das Ergebnis einer Transformation des Wiki-Codes nach HTML undCSS. Somit ist bei dynamischen Webseiten mit Quelltext häufig nicht das generierte HTML gemeint, sondern die Informationsquelle, aus der die Webseite generiert wird.