Hauptnavigation überspringen
Software & Lizenzen

Was ist eigentlich ein Quellcode – und was ist ein Maschinencode?

Was ist eigentlich ein Quellcode – und was ist  ein Maschinencode?
12 min 2
Stand: 18.05.2026
Erstfassung: 02.04.2008

Software funktioniert für Nutzer meist im Verborgenen. Entscheidend ist aber, in welcher Form sie vorliegt: als für Menschen lesbarer Quellcode oder als für Maschinen ausführbarer Maschinencode. Wer diesen Unterschied versteht, erkennt schneller, warum Software zwar nutzbar, aber ohne Quellcode oft kaum prüfbar, wartbar oder veränderbar ist.

Für die meisten Nutzer ist Software aber etwas Unsichtbares. Man klickt auf einen Button, scannt einen QR-Code, bestellt ein Produkt, füllt ein Formular aus oder startet ein Gerät – und „irgendetwas“ passiert. Was im Hintergrund abläuft, bleibt verborgen.

Gerade deshalb lohnt sich ein Blick auf eine grundlegende Unterscheidung: Software kann in einer für Menschen lesbaren Form vorliegen – dem Quellcode – und in einer für Maschinen ausführbaren Form – dem Maschinencode oder, je nach Zusammenhang, Object Code.

Wer diese Unterscheidung versteht, versteht auch besser, warum Software nicht einfach „eine Datei“ ist, warum ein Programm zwar funktionieren, aber trotzdem kaum änderbar sein kann, und warum es einen erheblichen Unterschied macht, ob man nur eine lauffähige Anwendung erhält oder auch den dazugehörigen Quellcode.

Der folgende Beitrag erklärt ohne technische Vorkenntnisse, was Quellcode ist, was Maschinencode ist und warum beide Formen für Software eine unterschiedliche Rolle spielen.

Was ist Software?

Software ist eine Sammlung von Anweisungen, die einem Computer oder einem anderen technischen Gerät sagen, was es tun soll.

Ein Computer „weiß“ nicht von selbst, was ein Warenkorb ist, wie ein Passwort geprüft wird, wie eine Datei gespeichert wird oder wann eine Waschmaschine in den Schleudergang wechseln soll. All diese Abläufe müssen vorher beschrieben werden.

Software enthält also Regeln wie zum Beispiel:

  • wenn der Nutzer auf „Kaufen“ klickt, den Warenkorb zu prüfen,
  • wenn ein Passwort falsch ist, eine Fehlermeldung anzuzeigen,
  • wenn die Temperatur zu hoch ist, die Heizung auszuschalten,
  • wenn der Lagerbestand null ist, „nicht verfügbar“ anzuzeigen,
  • und wenn ein Formular unvollständig ist, das Absenden zu verhindern.

Diese Regeln müssen in einer Form formuliert werden, mit der Menschen arbeiten können und die später von Maschinen ausgeführt werden kann. Genau hier kommt der Quellcode ins Spiel.

Was ist ein Quellcode?

Quellcode ist die für Menschen lesbare Fassung eines Computerprogramms. Man spricht auch von Source Code.

Der Quellcode wird von Programmierern in einer Programmiersprache geschrieben. Programmiersprachen sind zum Beispiel JavaScript, Python, Java, PHP, C, C++, C#, TypeScript, Go, Rust oder Kotlin.

Der Quellcode ist gewissermaßen der Bauplan oder die Arbeitsanweisung der Software. Er beschreibt, was die Software tun soll, welche Bedingungen gelten, welche Berechnungen vorgenommen werden, welche Daten gespeichert werden und wie die Software auf bestimmte Ereignisse reagieren soll.

Ein Quellcode ist dabei nicht mit normaler Alltagssprache identisch. Er folgt sehr genauen Regeln. Schon ein fehlendes Zeichen kann dazu führen, dass ein Programm nicht funktioniert. Trotzdem ist Quellcode für Menschen grundsätzlich lesbar und nachvollziehbar – jedenfalls für Personen, die die jeweilige Programmiersprache verstehen.

Ein anschaulicher Vergleich:

  • Ein Kochrezept beschreibt für Menschen, wie ein Gericht zubereitet wird.
  • Ein Quellcode beschreibt für Entwickler, wie eine Software funktionieren soll.
  • Das fertige Gericht entspricht der ausgeführten Anwendung.
  • Die Maschine braucht aber nicht das Rezept in menschlicher Sprache, sondern ausführbare Befehle.

Der Quellcode ist also nicht bloß irgendein Begleitdokument. Er ist die zentrale Grundlage, aus der eine lauffähige Software erzeugt wird.

LegalScan Pro – Ihr Warnsystem für produktspezifische Rechtspflichten

Warum ist Quellcode für Menschen wichtig?

Quellcode ist die Fassung, in der ein Programm gestaltet, geprüft, kommentiert, erweitert und korrigiert werden kann.

An ihm lässt sich nachvollziehen, welche Logik eine Software verwendet. So kann ein Entwickler etwa erkennen, unter welchen Voraussetzungen ein Rabatt gewährt wird, wie Versandkosten berechnet werden, wann eine Fehlermeldung erscheint, welche Daten gespeichert werden oder welche Schnittstelle angesprochen wird.

Gerade darin liegt der praktische Wert des Quellcodes: Er macht Software nicht nur ausführbar, sondern für fachkundige Personen auch verstehbar und bearbeitbar. Ohne Quellcode kann eine Software zwar funktionieren. Sie ist dann aber häufig nur eingeschränkt prüfbar, wartbar und anpassbar.

Das ist besonders wichtig, wenn Software nicht nur genutzt, sondern weiterentwickelt oder rechtlich und technisch überprüft werden soll. Wer nur die lauffähige Anwendung besitzt, sieht regelmäßig nur das Ergebnis. Wer den Quellcode besitzt, kann auch die dahinterstehende Logik nachvollziehen.

Was ist Maschinencode?

Ein Computer kann Quellcode nicht einfach so verstehen wie ein Mensch. Der Grund dafür liegt in der Art, wie Computer technisch arbeiten.

Ein elektronischer Computer verarbeitet elektrische Signale. Stark vereinfacht kann ein Schaltkreis zwei Zustände unterscheiden:

  • Strom fließt.
  • Strom fließt nicht.

Oder noch einfacher gesagt:

  • an,
  • aus.

Diese zwei Zustände lassen sich durch die Zahlen 1 und 0 darstellen. Die 1 kann für „an“, „wahr“ oder „Signal vorhanden“ stehen. Die 0 kann für „aus“, „falsch“ oder „Signal nicht vorhanden“ stehen.

Damit ist man beim binären System. „Binär“ bedeutet: Es gibt nur zwei Zeichen. Während Menschen im Alltag meistens im Dezimalsystem rechnen, also mit zehn Ziffern von 0 bis 9, arbeitet das binäre System nur mit 0 und 1.

Das klingt zunächst primitiv, ist für Maschinen aber ideal. Eine Maschine muss nicht zehn unterschiedliche Zustände sicher unterscheiden, sondern nur zwei. Gerade bei elektrischen Schaltungen ist das ein großer Vorteil: Ein Schalter ist geschlossen oder offen, Strom fließt oder fließt nicht, ein Signal liegt an oder liegt nicht an.

Diese Idee ist keineswegs erst mit modernen Computern entstanden. Der Philosoph und Mathematiker Gottfried Wilhelm Leibniz beschäftigte sich bereits im 17. Jahrhundert intensiv mit dem binären Zahlensystem. Er erkannte, dass man Zahlen allein mit 0 und 1 darstellen kann. Leibniz entwarf außerdem eine mechanische Rechenmaschine, den sogenannten Staffelwalzenrechner. Seine Rechenmaschine war noch kein Computer im heutigen Sinne. Sie zeigt aber, wie früh der Gedanke entstand, Rechenvorgänge nicht nur im Kopf oder auf Papier, sondern durch Maschinen ausführen zu lassen.

Später wurde die Idee, Informationen durch zwei Zustände darzustellen, auch praktisch in anderen Techniken sichtbar. Bei Lochkarten bedeutete ein Loch oder kein Loch ebenfalls eine binäre Information: vorhanden oder nicht vorhanden. Solche Lochkarten wurden zunächst etwa zur Steuerung von Webstühlen und später auch zur Datenerfassung und Programmsteuerung in frühen Rechen- und Datenverarbeitungsanlagen genutzt.

Mit dem elektronischen Computer wurde dieses Prinzip besonders leistungsfähig. Elektrische Schaltungen konnten die zwei Zustände des binären Systems sehr schnell verarbeiten. Aus vielen einzelnen Nullen und Einsen lassen sich Zahlen, Buchstaben, Bilder, Töne, Befehle und ganze Programme darstellen.

Der Maschinencode ist die Form von Software, die aus solchen maschinennahen Befehlen besteht. Er ist auf die Verarbeitung durch den Prozessor ausgerichtet. Für Menschen ist er dagegen kaum lesbar.

Eine einzelne 0 oder 1 nennt man ein Bit. Das Bit ist die kleinste Informationseinheit in der digitalen Datenverarbeitung. Es kann genau zwei Zustände annehmen: 0 oder 1, aus oder an, nein oder ja.

Acht solcher Bits bilden zusammen ein Byte. Mit einem Byte lassen sich 256 verschiedene Werte darstellen. Das liegt daran, dass jedes der acht Bits zwei Möglichkeiten hat. Zwei Möglichkeiten achtmal miteinander kombiniert ergeben 2 hoch 8, also 256 mögliche Kombinationen.

Mit solchen Byte-Werten kann ein Computer sehr unterschiedliche Informationen darstellen. Je nach vereinbartem Zeichensystem kann ein Byte zum Beispiel für einen Buchstaben, eine Zahl, ein Satzzeichen, einen Farbwert, einen Teil eines Befehls oder einen kleinen Datenwert stehen.

Für die Maschine können solche Folgen konkrete Befehle oder Daten darstellen. Für einen normalen Leser ist dagegen nicht erkennbar, ob hier gerade ein Preis berechnet, ein Text angezeigt, ein Passwort geprüft oder ein Speicherbereich verändert wird.

Ein Vergleich hilft:

  • Der Quellcode ist wie ein Rezept in einer Sprache, die ein Koch lesen kann.
  • Der Maschinencode ist wie eine sehr lange Folge einzelner Schalt- und Arbeitsanweisungen für eine Maschine.
  • Der Mensch möchte verstehen: „Was soll passieren?“
  • Die Maschine benötigt: „Welcher kleinste Befehl ist jetzt auszuführen?“

Das bedeutet: Ein Programm kann auf einem Computer einwandfrei laufen, obwohl der Nutzer keinen Einblick in den Quellcode hat. Er sieht und nutzt dann nur das Ergebnis – nicht aber die menschenlesbare Grundlage.

Warum muss Quellcode in Maschinencode übersetzt werden?

Programmiersprachen sind ein Kompromiss zwischen menschlicher Verständlichkeit und technischer Genauigkeit. Menschen können mit ihnen arbeiten. Maschinen benötigen aber ausführbare Befehle.

Deshalb muss Quellcode je nach Programmiersprache und technischer Umgebung verarbeitet werden.

Dies kann auf unterschiedliche Weise geschehen:

  • Ein Compiler übersetzt Quellcode in eine andere, meist maschinennahe oder ausführbare Form.
  • Ein Interpreter liest und verarbeitet Quellcode zur Laufzeit.
  • Ein Transpiler übersetzt Quellcode von einer Programmiersprache oder Sprachversion in eine andere.
  • Ein Bundler fasst mehrere Dateien und Bestandteile zu einer auslieferbaren Anwendung zusammen.
  • Ein Build-Prozess erzeugt aus vielen Einzelbestandteilen eine lauffähige Version.

Bei klassischen Programmiersprachen wie C oder C++ wird Quellcode häufig kompiliert. Das Ergebnis ist eine ausführbare Datei oder ein Object Code, der für Menschen nur noch schwer verständlich ist.

Bei Webanwendungen kann der Weg komplexer sein. Moderne Anwendungen bestehen oft aus vielen Dateien, Bibliotheken, Konfigurationen und Abhängigkeiten. Auch dort gibt es aber regelmäßig eine Ausgangsfassung, die Entwickler bearbeiten, und eine daraus erzeugte Fassung, die auf dem Server oder im Browser ausgeführt wird.

Wichtig ist: Die lauffähige Form einer Software ist nicht automatisch identisch mit dem Quellcode.

Was ist Object Code?

Neben den Begriffen Quellcode und Maschinencode begegnet häufig auch der Begriff Object Code oder Objektcode.

Damit ist regelmäßig eine übersetzte oder kompilierte Fassung eines Programms gemeint. Der Object Code steht zwischen dem für Menschen lesbaren Quellcode und der konkreten Ausführung durch die Maschine. In vielen rechtlichen und vertraglichen Zusammenhängen wird Object Code vereinfacht als Gegensatz zum Quellcode verwendet.

Praktisch kann man sich merken:

  • Quellcode ist die Fassung, die Entwickler lesen und bearbeiten.
  • Object Code ist eine übersetzte, nicht mehr ohne Weiteres lesbare Fassung.
  • Maschinencode ist die maschinennahe Befehlsform, die der Prozessor ausführen kann.

In vielen Alltagssituationen wird nicht streng zwischen Object Code und Maschinencode unterschieden. Entscheidend ist dann vor allem die Gegenüberstellung:

Ist die Software in einer für Menschen bearbeitbaren Form vorhanden – oder nur in einer lauffähigen, aber kaum nachvollziehbaren Form?

Genau diese Frage ist für Nutzer, Auftraggeber und Unternehmen oft entscheidend.

Warum ist Maschinencode für Menschen kaum verständlich?

Maschinencode ist nicht dafür gemacht, von Menschen gelesen zu werden. Er ist dafür gemacht, von Maschinen ausgeführt zu werden.

Ein Mensch möchte wissen:

  • ob hier ein Preis berechnet wird,
  • ob hier ein Passwort geprüft wird,
  • ob hier eine Datei gespeichert wird,
  • ob hier eine Bestellung ausgelöst wird,
  • oder ob hier ein Nutzerkonto gesperrt wird.

Der Maschinencode enthält solche verständlichen Begriffe aber nicht in der gewohnten Form. Er arbeitet mit sehr kleinteiligen Befehlen und Speicheroperationen. Die ursprünglichen Bezeichnungen, Kommentare und Strukturen aus dem Quellcode gehen bei der Übersetzung ganz oder teilweise verloren.

Ein für Menschen verständlicher Gedanke wie „Wenn der Warenkorb einen bestimmten Mindestwert erreicht, entfallen die Versandkosten“ wird im Quellcode noch nachvollziehbar beschrieben. In der ausführbaren Maschinenform bleibt davon für Menschen kaum etwas Erkennbares übrig. Bezeichnungen, Kommentare und Strukturen können verschwinden, verändert oder technisch optimiert werden.

Deshalb ist es in der Praxis oft kaum möglich oder jedenfalls sehr aufwendig, aus einer bloß lauffähigen Fassung zuverlässig zu rekonstruieren, wie die Software ursprünglich gedacht war. Es gibt zwar technische Verfahren wie Decompiling oder Reverse Engineering. Diese sind aber technisch begrenzt, rechtlich nicht immer zulässig und liefern meist nicht den ursprünglichen, gut lesbaren Quellcode zurück.

Warum ist der Quellcode für Wartung und Änderungen so wichtig?

Solange eine Software nur genutzt werden soll, genügt häufig die lauffähige Version. Wer ein Textverarbeitungsprogramm nutzt, möchte in der Regel Briefe schreiben und nicht den Programmcode ändern.

Anders ist es, wenn Software angepasst, geprüft, erweitert oder repariert werden soll. Dann ist der Quellcode von zentraler Bedeutung.

Beispiele:

  • In einem Onlineshop soll die Versandkostenlogik geändert werden.
  • Eine Schnittstelle zu einem Zahlungsanbieter muss angepasst werden.
  • Eine Sicherheitslücke muss geschlossen werden.
  • Ein Formular soll zusätzliche Pflichtfelder erhalten.
  • Eine App soll an ein neues Betriebssystem angepasst werden.
  • Eine Datenbankabfrage ist zu langsam und muss optimiert werden.
  • Eine gesetzliche Änderung macht eine neue Berechnungslogik erforderlich.

Für solche Änderungen reicht es regelmäßig nicht, nur die lauffähige Fassung der Software zu besitzen. Ein Entwickler benötigt die bearbeitbare Grundlage – also den Quellcode – sowie häufig weitere Informationen, etwa Dokumentation, Zugang zum Repository, Angaben zu verwendeten Bibliotheken, Build-Anweisungen und Testumgebungen.

Man kann es so zusammenfassen:

  • Mit dem Maschinencode kann die Maschine arbeiten.
  • Mit dem Quellcode kann der Mensch arbeiten.

Das ist der entscheidende Unterschied.

Proprietäre Software und Open-Source-Software

In der Praxis ist auch wichtig, ob es sich um proprietäre Software oder um Open-Source-Software handelt.

Bei proprietärer Software erhält der Nutzer in der Regel nur die lauffähige Version, also etwa eine installierbare Anwendung, eine App, eine ausführbare Datei oder den Zugang zu einem Dienst. Der Quellcode bleibt beim Hersteller oder Anbieter. Das ist zum Beispiel bei vielen kommerziellen Standardprogrammen der Fall.

Der Grund liegt auf der Hand: Der Quellcode enthält die innere Funktionsweise der Software und ist für den Anbieter ein wirtschaftlich wertvoller Bestandteil. Er soll meist nicht offengelegt, kopiert oder von Dritten verändert werden.

Bei Open-Source-Software ist das anders. Dort wird der Quellcode grundsätzlich zugänglich gemacht. Nutzer können ihn einsehen und – abhängig von der jeweiligen Open-Source-Lizenz – auch verändern und weitergeben.

Open Source bedeutet allerdings nicht, dass alles beliebig erlaubt ist. Auch Open-Source-Software steht unter Lizenzbedingungen. Diese können zum Beispiel Vorgaben zur Urhebernennung, zur Weitergabe von Lizenztexten oder zur Offenlegung von Änderungen enthalten.

Für das Grundverständnis genügt zunächst folgende Unterscheidung:

  • Bei proprietärer Software bekommt der Nutzer meist nur die lauffähige Form.
  • Bei Open-Source-Software ist auch der Quellcode zugänglich.
  • Ob und wie der Quellcode verwendet, verändert oder weitergegeben werden darf, richtet sich nach der jeweiligen Lizenz.

Fazit

Quellcode und Maschinencode sind zwei unterschiedliche Erscheinungsformen von Software.

Der Quellcode ist die für Menschen lesbare und bearbeitbare Fassung. Er wird in einer Programmiersprache geschrieben und enthält die Logik des Programms. Entwickler können ihn lesen, verstehen, kommentieren, korrigieren und erweitern.

Der Maschinencode ist die maschinennahe, ausführbare Form. Er ist für den Computer bestimmt und für Menschen kaum verständlich. Eine Software kann als Maschinencode funktionieren, ohne dass der Nutzer erkennen kann, wie sie intern aufgebaut ist.

Anschaulich gesagt:

  • Quellcode ist der Bauplan.
  • Maschinencode ist die Maschinenanweisung.
  • Der Nutzer sieht meist nur das fertige Ergebnis.

Wer Software nur verwenden möchte, benötigt den Quellcode oft nicht. Wer Software verstehen, prüfen, warten oder ändern möchte, braucht ihn regelmäßig sehr wohl.

Bei proprietärer Software wird der Quellcode meist nicht mitgeliefert. Bei Open-Source-Software ist er grundsätzlich zugänglich. Gerade diese Unterscheidung zeigt, warum der Begriff „Software“ allein oft zu ungenau ist: Es macht einen erheblichen Unterschied, ob jemand nur ein lauffähiges Programm erhält oder auch die menschenlesbare Grundlage, aus der dieses Programm entstanden ist.

Fragen zum Beitrag? Diskutieren Sie hierzu gerne mit uns in der Unternehmergruppe der IT-Recht Kanzlei auf Facebook.


Link kopieren

Als PDF exportieren

Drucken

|

Per E-Mail verschicken

Zum Facebook-Account der Kanzlei

Zum Instagram-Account der Kanzlei

2 Kommentare

D
DBr
Kompilierte Quelldateien
Gibt es auch Einschätzungen oder Urteile wie der umgekehrte Fall bei kompilierten Dateien aussieht?
Ich letzten Absatz wurde beschrieben, dass ggf. (vertraglich) der notwendige Compiler mitgeliefert werden muss.
Ich kenne es oft eher so, dass -nur- die kompilierten Dateien an den Auftraggeber oder Dritte weitergegeben werden. Diese sind funktionsfähig (z.B. für eine Website), aber oft nur schwer oder gar nicht von Dritten änderbar. Die unkompilierten Dateien erhalten die Kommentare etc. und sehe ich daher eher als Eigentum des IT-Dienstleisters an. Wie ist dazu Ihre Meinung?
R
RH
Vielen Dank
Herzlichen Dank für diesen aufschlussreichen Beitrag! Als Anbieter von Software haben wir oft die Situation erlebt, dass Kunden am Anfang der Zusammenarbeit die Preise maximal drücken und im Laufe der Entwicklung zahlreiche Zusatz-Funktionen kostenfrei durchsetzen. Gerne mit dem Argument, dass ja eine langfristige Zusammenarbeit angestrebt ist. Ist die Hauptarbeit dann erst mal getan, wird plötzlich der Quellcode angefragt, denn jetzt kann ja auch jemand anderes billig weiterarbeiten. Dank des Urheberrechts können wir uns wenigstens ein bisschen zu Wehr setzen.
Kommentar
verfassen
Ihre Meinung zu unserem Beitrag.
* mit Sternchen gekennzeichnete Felder sind Pflichtfelder
Vielen Dank für Ihren Kommentar

Wir werden diesen nach einer kurzen Prüfung
so schnell wie möglich freigeben.

Ihre IT-Recht Kanzlei
Vielen Dank!

Ihr Kommentar konnte nicht gespeichert werden!

Bitte versuchen Sie es zu einem späteren Zeitpunkt noch einmal.

Ihre IT-Recht Kanzlei
Vielen Dank!

© 2004-2026 · IT-Recht Kanzlei