Programmiersprachen und Paradigmen: Compiler, Interpreter, prozedural und objektorientiert

https://bildung.social/@oerinformatik/

https://oer-informatik.de/programmiersprachen

Programmiersprache, Compiler, Interpreter, Skriptsprache, Syntaxfehler, Programmierparadigma, strukturierte Programmierung, prozedurale Programmierung, objektorientierte Programmierung, Auswahlkriterien, Prüfungsvorbereitung

tl/dr; (ca. 8 min Lesezeit): Welche Programmiersprache passt zu einer Aufgabe? Der Artikel erklärt, wie Compiler und Interpreter aus Quelltext ein laufendes Programm machen, welche Werkzeuge zu einer Programmierumgebung gehören und welche Fehlerarten es gibt. Danach geht es um Skriptsprachen im Client und auf dem Server, um die wichtigsten Programmierparadigmen – strukturiert, prozedural, objektorientiert und deklarativ – und um Kriterien, mit denen Du eine Programmiersprache begründet auswählst, mit einem Vergleich von Python, Java, C++, C# und JavaScript [AI-Assisted]. (Zuletzt geändert am 28.10.2026)

Schon fit in diesem Thema? Nutze die Kann-Liste und die Leitfragen unter dem Artikel als Checkliste, ob Du die relevanten Kompetenzen bereits hast.

Als Grundlagen kann ich nach Durchlesen des Artikels…

  • … den Unterschied zwischen Compiler- und Interpretersprachen erläutern und die Arbeitsweise eines Compilers beschreiben.

  • … den Werkzeugen einer Programmierumgebung (Editor, Compiler, Linker, Interpreter, Debugger) ihre Aufgaben zuordnen.

  • … Syntax-, Laufzeit- und Logikfehler unterscheiden und bestimmen, welche Fehler ein Compiler meldet.

  • … Merkmale von Skriptsprachen bestimmen und erklären, warum HTML keine Programmiersprache ist.

  • … Merkmale der strukturierten Programmierung bestimmen und zwei Vorteile objektorientierter gegenüber prozeduraler Programmierung nennen.

  • … ein Kriterium für die Auswahl einer Programmiersprache nennen und begründen.

Darüber hinaus kann ich als Kernwissen für alle Fachrichtungen…

  • … Auswahlkriterien für eine Programmiersprache erläutern und je zwei Vorteile von Python und von C++ oder Java nennen.

  • … beschreiben, wie der objektorientierte Ansatz in einem Programm umgesetzt wird (Klassen, Kapselung, Vererbung).

  • … je einen Vorteil von Skript- und Compilersprachen für eine Aufgabe erläutern und client- und serverseitige Skriptsprachen unterscheiden.

  • … die Mischform aus Bytecode und virtueller Maschine erläutern.

Die Mindmap zeigt die Themen des Artikels im Überblick:

Mindmap zu Programmiersprachen mit den Ästen Spracharten, Übersetzung, Programmierumgebung, Fehlerarten, Skriptsprachen, Paradigmen und Auswahl (mit KI erstellt)

Was eine Programmiersprache ausmacht

Eine Programmiersprache ist eine formale Sprache, mit der Du einem Computer Abläufe beschreibst: Daten einlesen, verarbeiten, Entscheidungen treffen, Schritte wiederholen und Ergebnisse ausgeben. Sie hat eine genau festgelegte Syntax (welche Zeichenfolgen erlaubt sind) und Semantik (was sie bedeuten). Programmiersprachen sind Turing-vollständig: Sie können grundsätzlich jede berechenbare Aufgabe lösen, weil sie Variablen, Verzweigungen und Wiederholungen kennen.

Nicht jede Computersprache ist eine Programmiersprache:

Arten von Computersprachen
Sprachart Zweck Beispiele
Programmiersprache Abläufe und Berechnungen beschreiben Python, Java, C++, C#, JavaScript, PHP
Auszeichnungssprache Struktur und Bedeutung von Inhalten beschreiben, keine Abläufe HTML, XML, Markdown
Abfragesprache Daten deklarativ abfragen und ändern SQL
Datenformat Daten austauschen JSON, CSV

HTML ist keine Programmiersprache: Mit HTML legst Du fest, dass ein Text eine Überschrift, ein Absatz oder ein Link ist. Es gibt keine Variablen, keine Verzweigungen und keine Schleifen; HTML kann nichts berechnen und nicht auf Eingaben reagieren. Dafür wird es mit JavaScript (im Browser) oder einer serverseitigen Sprache kombiniert.

Vom Quelltext zum laufenden Programm

Der Prozessor versteht nur Maschinencode. Der für Menschen lesbare Quelltext muss deshalb übersetzt werden, und dafür gibt es zwei Grundprinzipien:

Compiler und Interpreter im Vergleich
Compiler Interpreter
Arbeitsweise übersetzt den gesamten Quelltext vor der Ausführung in Maschinencode und speichert ihn als ausführbare Datei liest den Quelltext zur Laufzeit Anweisung für Anweisung, übersetzt und führt sie sofort aus
Ausführung schnell, weil bereits übersetzt langsamer, weil bei jeder Ausführung neu übersetzt wird
Fehler Syntaxfehler werden vor dem Start für das ganze Programm gemeldet Fehler fallen erst auf, wenn die betroffene Zeile ausgeführt wird
Weitergabe ausführbare Datei ohne Quelltext; je Betriebssystem und Prozessor eine eigene Fassung Quelltext und Interpreter werden benötigt; läuft überall, wo es den Interpreter gibt
Änderungen nach jeder Änderung neu kompilieren sofort testbar, interaktives Arbeiten möglich
typische Sprachen C, C++, Rust, Go Python, JavaScript, PHP, PowerShell, Bash

Dazwischen gibt es eine Mischform: Java und C# werden in einen plattformunabhängigen Bytecode übersetzt, den eine virtuelle Maschine (JVM bzw. .NET-Laufzeit) ausführt und dabei häufig benötigte Teile just in time in Maschinencode übersetzt. So läuft dasselbe Programm auf jedem System mit passender Laufzeitumgebung und ist trotzdem schnell. Auch Python, das meist als interpretierte Sprache gilt, kennt diesen Zwischenschritt: Intern übersetzt CPython (der Standard-Interpreter) den Quelltext zunächst in Bytecode (.pyc) und führt diesen dann aus. Mehr dazu und zu Bibliotheken, Versionsverwaltung und CI/CD findest Du im Artikel Werkzeuge der Softwareentwicklung.

Die Programmierumgebung

Zu einer Programmierumgebung gehören mehrere Werkzeuge, die eine integrierte Entwicklungsumgebung (IDE, z. B. Visual Studio Code, IntelliJ IDEA, Eclipse) unter einer Oberfläche zusammenfasst:

Werkzeuge einer Programmierumgebung
Werkzeug Aufgabe
Editor Quelltext schreiben, mit Syntaxhervorhebung und Autovervollständigung
Compiler Quelltext in Maschinen- oder Bytecode übersetzen und Syntaxfehler melden
Linker übersetzte Programmteile und Bibliotheken zu einem ausführbaren Programm verbinden
Interpreter Quelltext direkt ausführen
Debugger Programm schrittweise ausführen, an Haltepunkten anhalten und Variablenwerte untersuchen, um Fehler zu finden

Fehlerarten

Fehlerarten beim Programmieren
Fehlerart Was passiert? Wer bemerkt ihn? Beispiel
Syntaxfehler der Quelltext verletzt die Regeln der Sprache Compiler bzw. Interpreter vor der Ausführung, oft schon der Editor fehlende Klammer, falsch geschriebenes Schlüsselwort
Laufzeitfehler das Programm ist syntaktisch korrekt, bricht aber während der Ausführung ab erst beim Ausführen Division durch null, Datei nicht vorhanden, Zugriff auf einen Index außerhalb des Arrays
Logikfehler (semantischer Fehler) das Programm läuft, liefert aber ein falsches Ergebnis nur durch Tests und Vergleich mit dem erwarteten Ergebnis < statt <= in einer Bedingung, falsche Formel

Merke: Ein Compiler meldet Syntaxfehler (und einige Typfehler). Logikfehler findet er nie, denn er weiß nicht, was das Programm tun soll.

Die Grafik zeigt die Werkzeugkette einer Compilersprache und an welcher Stelle welche Fehlerart auffällt:

Werkzeugkette Editor, Compiler, Linker mit Bibliotheken, ausführbares Programm, Ausführung und Test; Syntaxfehler fallen im Editor oder beim Kompilieren auf, Laufzeitfehler bei der Ausführung, Logikfehler erst im Test; der Debugger untersucht die Ausführung (mit KI erstellt)

Skriptsprachen

Skriptsprachen sind Programmiersprachen, die meist von einem Interpreter ausgeführt werden und mit wenig Aufwand kleine bis mittlere Aufgaben lösen: Abläufe automatisieren, Systeme administrieren, Webseiten dynamisch machen, Daten auswerten. Typisch sind dynamische Typisierung und kurze, schnell änderbare Programme. Sie sind weder auf die Kommandozeile noch auf das Web beschränkt und brauchen keine IDE.

Im Web unterscheidet man nach dem Ort der Ausführung:

Client- und serverseitige Skriptsprachen
clientseitig serverseitig
ausgeführt im Browser der Nutzer*innen auf dem Webserver, der das Ergebnis (meist HTML oder JSON) an den Browser schickt
Sprachen JavaScript (bzw. TypeScript, übersetzt nach JavaScript) PHP, Python, Java, C#, JavaScript mit Node.js
geeignet für Interaktion ohne Neuladen, Eingabeprüfung als Komfort, Animationen Zugriff auf Datenbanken, Berechnungen mit verbindlichem Ergebnis (Preise), Anmeldung, geschützte Geschäftslogik

Vorteile serverseitiger Ausführung: Der Quelltext und die Geschäftslogik bleiben verborgen und können nicht manipuliert werden; Datenbanken und Zugangsdaten müssen nicht offengelegt werden; das Ergebnis ist unabhängig vom Browser und von der Leistung des Endgeräts. Was im Browser geprüft wird, muss auf dem Server noch einmal geprüft werden, denn clientseitiger Code lässt sich verändern.

Programmierparadigmen

Ein Programmierparadigma ist ein grundlegender Denkstil, wie ein Programm aufgebaut wird. Viele heutige Sprachen unterstützen mehrere Paradigmen (Python, C++, C#, JavaScript).

Programmierparadigmen
Paradigma Grundidee Beispiele
imperativ – unstrukturiert Folge von Befehlen mit Sprüngen (goto) frühes BASIC, Assembler
strukturiert nur drei Kontrollstrukturen: Sequenz, Verzweigung, Wiederholung; jeder Strukturblock hat genau einen Eingang und einen Ausgang Grundlage aller modernen imperativen Sprachen
prozedural Programm wird in Prozeduren bzw. Funktionen zerlegt, die Daten als Parameter erhalten C, Pascal, Python
objektorientiert Programm besteht aus Objekten, die Daten (Attribute) und Verhalten (Methoden) bündeln; Baupläne sind Klassen Java, C#, C++, Python
deklarativ (funktional, logisch, Abfragen) beschreibt, was das Ergebnis sein soll, nicht wie es berechnet wird SQL, Haskell, Prolog, Teile von Python und JavaScript

Die Paradigmen lassen sich in zwei Familien ordnen: Imperative Programme beschreiben den Rechenweg, deklarative das gewünschte Ergebnis. Prozedurale und objektorientierte Programmierung bauen auf der strukturierten Programmierung auf.

Baum der Programmierparadigmen: imperativ mit unstrukturiert und strukturiert, darauf aufbauend prozedural und objektorientiert; deklarativ mit funktional, logisch und Abfragen (mit KI erstellt)

Strukturierte Programmierung führt zu übersichtlichen, änderungsfreundlichen Programmen, die sich gut dokumentieren und als Struktogramm oder Pseudocode darstellen lassen. Sie macht das Programm nicht automatisch schneller und ist auch keine Besonderheit objektorientierter Sprachen.

Der Unterschied zwischen prozeduralem und objektorientiertem Stil am Beispiel eines Kontos in Python:

# prozedural: Daten und Funktionen sind getrennt
def einzahlen(konto, betrag):
    konto["saldo"] += betrag

konto = {"inhaber": "Ada", "saldo": 0}
einzahlen(konto, 50)

# objektorientiert: Daten und Methoden bilden ein Objekt
class Konto:
    def __init__(self, inhaber):
        self.inhaber = inhaber
        self.__saldo = 0          # gekapselt: von außen nicht direkt änderbar

    def einzahlen(self, betrag):
        if betrag <= 0:
            raise ValueError("Betrag muss positiv sein")
        self.__saldo += betrag

konto = Konto("Ada")
konto.einzahlen(50)

Vorteile der objektorientierten Programmierung gegenüber der prozeduralen:

  • Abbild der Wirklichkeit: Klassen wie Kunde, Bestellung oder Sensor entsprechen den Dingen des Anwendungsbereichs; das Programm ist leichter zu verstehen.

  • Kapselung: Daten sind nur über Methoden änderbar, die Regeln prüfen (im Beispiel: keine negativen Einzahlungen). Das verhindert Fehler und schützt die Daten.

  • Wiederverwendbarkeit: Klassen lassen sich in anderen Projekten nutzen und über Vererbung erweitern, ohne den Code zu kopieren.

  • Wartbarkeit: Änderungen bleiben auf eine Klasse begrenzt; über Polymorphie lassen sich neue Varianten ergänzen, ohne bestehenden Code zu ändern.

  • Arbeitsteilung: Teams können an verschiedenen Klassen mit festen Schnittstellen arbeiten.

Für kleine Skripte ist der prozedurale Stil dagegen oft kürzer und schneller geschrieben.

Eine Programmiersprache auswählen

Welche Sprache passt, hängt von der Aufgabe und vom Umfeld ab. Typische Auswahlkriterien:

Kriterien für die Auswahl einer Programmiersprache
Kriterium Frage dahinter
Anwendungsbereich und Zielplattform Web, Mobil-App, Desktop, Server, Mikrocontroller, Datenanalyse? Für Android etwa Kotlin oder Java, für Browser JavaScript
Leistung und Ressourcen Muss das Programm sehr schnell sein oder mit wenig Speicher und Akku auskommen? Dann eher eine Compilersprache
Know-how im Team Welche Sprachen beherrschen die Entwickler*innen? Wie hoch wäre der Einarbeitungsaufwand?
Bibliotheken und Frameworks Gibt es fertige, gepflegte Lösungen für die Aufgabe (z. B. für KI, Webservices, Hardwarezugriff)?
Portabilität Soll dasselbe Programm auf verschiedenen Betriebssystemen und Prozessoren laufen?
Wartbarkeit und Lesbarkeit Wie gut können andere den Code später verstehen und ändern?
Zukunftssicherheit Wird die Sprache weiterentwickelt, gibt es eine große Gemeinschaft und Fachkräfte am Arbeitsmarkt?
Firmenvorgaben und vorhandene Systeme Gibt es Standards im Unternehmen, muss an bestehende Software angebunden werden?
Sicherheit Schützt die Sprache vor typischen Fehlern wie Speicherzugriffen außerhalb eines Bereichs?
Kosten und Lizenzen Fallen Kosten für Compiler, Laufzeitumgebung oder Werkzeuge an?

Wenn Du ein Kriterium begründen sollst, verbinde es mit der Situation: „Weil das Team bereits Erfahrung mit Java hat, entfällt die Einarbeitung, und das Projekt kann früher starten.“

Ein Vergleich häufig eingesetzter Sprachen:

Häufig eingesetzte Programmiersprachen im Vergleich
Sprache Ausführung Stärken Schwächen
Python Interpreter leicht erlernbar, gut lesbar, wenig Code; riesige Bibliotheken für Datenanalyse, KI, Automatisierung und Web; plattformübergreifend; interaktiv nutzbar langsamer als kompilierte Sprachen; Typfehler oft erst zur Laufzeit; für Mobil-Apps kaum genutzt
Java Bytecode auf JVM plattformunabhängig, robust durch statische Typisierung, sehr verbreitet in Unternehmenssoftware und Android mehr Code für einfache Aufgaben; Laufzeitumgebung nötig
C++ Compiler sehr schnell, direkte Kontrolle über Speicher und Hardware, Multithreading; für Spiele, Embedded, Hochleistung komplex, fehleranfällig bei Speicherverwaltung, je Plattform neu kompilieren
C# Bytecode auf .NET modern, gute Werkzeuge, Windows- und Webanwendungen, Spiele (Unity) stärker an das .NET-Ökosystem gebunden
JavaScript Interpreter bzw. JIT im Browser oder Node.js einzige Sprache, die alle Browser direkt ausführen; auch serverseitig nutzbar dynamische Typisierung führt leicht zu Fehlern (deshalb oft TypeScript)

Fazit

Compiler übersetzen vorab und liefern schnelle Programme, Interpreter führen direkt aus und erlauben schnelle Änderungen; Bytecode verbindet beides. Paradigmen geben die Denkweise vor: strukturiert und prozedural für klare Abläufe, objektorientiert für große, langlebige Programme mit vielen zusammenwirkenden Teilen. Welche Sprache am Ende passt, entscheidest Du nicht nach Vorliebe, sondern nach begründeten Kriterien wie Einsatzbereich, Leistung, Know-how und Bibliotheken.

Leitfragen

  1. Worin unterscheiden sich Compiler- und Interpretersprachen?

Ein Compiler übersetzt den gesamten Quelltext vor der Ausführung in Maschinencode und speichert ihn als ausführbare Datei; ein Interpreter übersetzt und führt den Quelltext zur Laufzeit Anweisung für Anweisung aus. Kompilierte Programme laufen schneller, interpretierte sind sofort testbar und portabel. Siehe Abschnitt „Vom Quelltext zum laufenden Programm“.

  1. Welche Aufgaben haben Editor, Compiler, Linker und Debugger?

Editor: Quelltext schreiben; Compiler: übersetzen und Syntaxfehler melden; Linker: Programmteile und Bibliotheken zu einem ausführbaren Programm verbinden; Debugger: Programm schrittweise ausführen und Variablen untersuchen. Siehe Abschnitt „Programmierumgebung“.

  1. Welche Fehlerarten gibt es, und welche meldet ein Compiler?

Syntaxfehler (Regeln der Sprache verletzt, meldet der Compiler), Laufzeitfehler (Abbruch während der Ausführung) und Logikfehler (falsches Ergebnis, nur durch Tests zu finden). Siehe Abschnitt „Fehlerarten“.

  1. Was kennzeichnet Skriptsprachen, und warum gehört eine Preisberechnung auf den Server?

Skriptsprachen werden meist interpretiert und dienen zur schnellen Lösung und Automatisierung von Aufgaben. Clientseitiger Code läuft im Browser und lässt sich verändern; serverseitig berechnete Preise sind verbindlich, und Geschäftslogik und Datenbankzugriff bleiben geschützt. Siehe Abschnitt „Skriptsprachen“.

  1. Was ist strukturierte Programmierung, und welche Vorteile hat objektorientierte gegenüber prozeduraler Programmierung?

Strukturierte Programmierung nutzt nur Sequenz, Verzweigung und Wiederholung; jeder Strukturblock hat einen Eingang und einen Ausgang. Objektorientierung bildet die Wirklichkeit in Klassen ab, kapselt Daten, erleichtert Wiederverwendung (Vererbung), Wartung und Arbeitsteilung. Siehe Abschnitt „Programmierparadigmen“.

  1. Nach welchen Kriterien wählst Du eine Programmiersprache aus?

Anwendungsbereich und Plattform, Leistung, Know-how im Team, verfügbare Bibliotheken, Portabilität, Wartbarkeit, Zukunftssicherheit, Firmenvorgaben, Sicherheit sowie Kosten und Lizenzen – jeweils mit Bezug zur Situation begründet. Siehe Abschnitt „Eine Programmiersprache auswählen“.


Hinweis zur Nachnutzung als Open Educational Resource (OER)

Dieser Artikel und seine Texte, Bilder, Grafiken, Code und sonstiger Inhalt sind - sofern nicht anders angegeben - lizenziert unter CC BY 4.0. Nennung gemäß TULLU-Regel bitte wie folgt: “Programmiersprachen und Paradigmen: Compiler, Interpreter, prozedural und objektorientiert” von oer-informatik.de (H. Stein), Lizenz: CC BY 4.0. Der Artikel wurde unter https://oer-informatik.de/programmiersprachen veröffentlicht, die Quelltexte sind in weiterverarbeitbarer Form verfügbar im Repository unter https://gitlab.com/oer-informatik/programmierung/programmiergrundlagen. Erstellt mit KI-Assistenz; von mir umfassend redaktionell überarbeitet, geprüft und freigegeben. Stand: 28.10.2026.

[Kommentare zum Artikel lesen, schreiben] / [Artikel teilen] / [gitlab-Issue zum Artikel schreiben]

Kommentare gerne per Mastodon, Verbesserungsvorschläge per gitlab issue (siehe oben). Beitrag teilen: