# Programmierparadigmen: Welche Programmierprinzipien gibt es?

Programmierparadigmen sind grundlegende Prinzipien bei der Entwicklung von Software. Am besten stellt man sie sich als **fundamental unterschiedliche Programmierstile** vor, die entsprechend unterschiedlich strukturierten Softwarecode zur Folge haben.

[![Bild: Programmierparadigmen in der Übersicht](https://www.ionos.de/digitalguide/fileadmin/_processed_/6/6/csm_uebersicht-deklarative-imperative-programmierparadigmen_45e66d28e9.webp "Programmierparadigmen in der Übersicht")](https://www.ionos.de/digitalguide/fileadmin/DigitalGuide/Schaubilder/uebersicht-deklarative-imperative-programmierparadigmen.jpg) Programmierparadigmen in der Übersicht Das klassische Konzept ist dabei die **imperative Programmierung**, bei der im **Quellcode** klar definiert wird, welche Schritte ein Programm in welcher Reihenfolge zu erledigen hat. Unterarten sind die prozedurale und die objektorientierte Programmierung. Nach dem Prinzip der **deklarativen Programmierung** wird ausschließlich beschrieben, was eine Software erledigen soll (also nur das Ergebnis und nicht die einzelnen Schritte). Untergeordnet sind die funktionale und die logische Programmierung. Wie unterscheiden sich die genannten Software-Paradigmen voneinander?

## Imperative Programmierung: Der Klassiker der Programmierparadigmen

Unter den Paradigmen für die Software-Programmierung ist die imperative Programmierung der „Klassiker“. Die ersten Programmiersprachen und dementsprechend auch die ersten Computerprogramme bauten gänzlich auf diesem klassischen Ansatz auf, der eine geregelte Abfolge festgelegter Befehle (von lat. *imperare* „befehlen“) bzw. Handlungsanweisungen vorsieht. Unter anderem liegt dies Programmierparadigma beispielsweise den Urgesteinen **Pascal** und **C** sowie allen **Assemblersprachen** zugrunde. Bei der imperativen Programmierung liegt der Fokus unter anderem darauf, **so nah wie möglich am System** zu arbeiten. Der daraus resultierende Programmcode ist deshalb leicht verständlich, aber auch sehr umfangreich.

Mit der **strukturierten**, der **prozeduralen** und der **modularen Programmierung** sind dem imperativen Programmierparadigma drei weitere wichtige Ansätze zum Schreiben bzw. Strukturieren von Softwarecode untergeordnet.

Tipp Mehr zum Paradigma der [Imperativen Programmierung](https://www.ionos.de/digitalguide/websites/web-entwicklung/imperative-programmierung/) erfahren Sie in unserem entsprechenden Artikel, der tiefer in die Thematik einsteigt.

### Strukturierte Programmierung

Beim strukturierten Programmierungsansatz handelt es sich um eine **vereinfachte Form** der imperativen Programmierung. Die entscheidende Änderung zum Grundprinzip: Anstelle der absoluten Sprungbefehle (Anweisungen, die dazu führen, dass die Verarbeitung nicht mit dem nachfolgenden Befehl, sondern an anderer Stelle weitergeführt wird) sieht dieses Paradigma für die Software-Programmierung den **Einsatz von Kontrollschleifen bzw. -strukturen** vor. Ein Beispiel hierfür ist die Nutzung von „**do…while**“, um eine Anweisung automatisch solange auszuführen, wie eine bestimmte Bedingung wahr ist (mindestens ein Mal).

### Prozedurale Programmierung

Das prozedurale Programmierparadigma erweitert den imperativen Ansatz um die Möglichkeit, **Algorithmen in überschaubare Teile aufzugliedern**. Diese werden als Prozeduren oder – je nach Programmiersprache – auch als Unterprogramme, Routinen oder Funktionen bezeichnet. Sinn und Zweck dieser Aufteilung ist es, den **Programmcode übersichtlicher** zu machen und unnötige **Code-Wiederholungen zu vermeiden**. Durch die Abstraktion der Algorithmen stellt das prozedurale Software-Paradigma einen entscheidenden Schritt von einfachen Assemblersprachen hin zu komplexeren Hochsprachen dar.

### Modulare Programmierung

Auch die modulare Programmierung wird als Unterform des imperativen Programmierparadigmas eingestuft. Sie ist der prozeduralen Herangehensweise grundsätzlich sehr ähnlich bzw. überträgt diesen Programmierstil auf die Anforderungen und Ansprüche großer und umfangreicher Softwareprojekte. Hierfür wird der Quellcode gezielt in logische, voneinander unabhängige Teilblöcke aufgespaltet, um für mehr **Übersichtlichkeit** zu sorgen und den **Debugging-Prozess** (Fehlerbehebung) zu vereinfachen. Die einzelnen Teilblöcke, die **Module g**enannt werden, lassen sich nämlich einzeln testen, bevor sie im späteren Verlauf zu einer gemeinsamen Anwendung verknüpft werden.

## Deklarative Programmierung: Software-Paradigmen der jüngeren Vergangenheit

Parallel zur kontinuierlichen Weiterentwicklung von Hard- und Software entwickelte sich mit dem deklarativen Ansatz ein alternatives Paradigma zur Code-Programmierung. Das grundlegende Prinzip der deklarativen Programmierung besteht dabei in er **Beschreibung des gewünschten Endergebnisses**. Es geht also in der ersten Linie um das „Was“ des Ergebnisses und nicht um **das „Wie“ der Lösungsschritte,** wie das bei der imperativen Programmierung der Fall ist. Dies führt dazu, dass Code aus deklarativer Programmierung aufgrund des **hohen Abstraktionsgrades** schwerer verständlich, dafür aber sehr kurz und präzise ist.

Zwischen den Unterformen des deklarativen Programmierparadigmas selbst gibt es größere Unterschiede als innerhalb des imperativen Stils. Zudem ist die genaue Definition bzw. Einteilung nicht immer trennscharf. Die zwei wichtigsten Ansätze des deklarativen Programmierparadigmas sind die **funktionale** und die **logische Programmierung**.

Tipp Mehr zum Paradigma der [Deklarativen Programmierung](https://www.ionos.de/digitalguide/websites/web-entwicklung/deklarative-programmierung/) erfahren Sie im entsprechenden Artikel, der tiefer in die Thematik einsteigt.

### Funktionale Programmierung

Funktionen gibt es in jeder höheren Programmiersprache. Die funktionale Herangehensweise in der Software-Entwicklung behandelt Funktionen allerdings auf besondere Art und Weise:

Ein funktional programmiertes Programm besteht aus aneinandergereihten Funktionsaufrufen, wobei jedes Programmteil als Funktion aufgefasst werden kann. Funktionen können dabei innerhalb der funktionalen Programmierung verschiedene „Gestalten“ annehmen. Sie lassen sich beispielsweise wie Daten **miteinander verknüpfen** oder können **in Form von Parametern genutzt** werden. Darüber hinaus können sie als Funktionsergebnisse weiterverwendet werden. Im Umkehrschluss führt das Paradigma dazu, dass es keine eigenständigen Zuweisungen von Werten gibt.

Die Unterform der deklarativen Programmierung ist sehr wichtig für die Informatik im Allgemeinen - und gleichzeitig sehr vielfältig einsetzbar. Die spezielle Behandlung von Funktionen erlaubt es funktional arbeitenden Programmierern, weitreichende neue Berechnungsvorschriften aus Funktionen zusammenzusetzen und anzuwenden.

Tipp Mehr zur Methode der [Funktionalen Programmierung](https://www.ionos.de/digitalguide/websites/web-entwicklung/funktionale-programmierung/ "Funktionale Programmierung") erfahren Sie im entsprechenden Artikel, der tiefer in die Thematik einsteigt.

### Logische Programmierung

Das logische Software-Paradigma, das auch als prädikative Programmierung bezeichnet wird, beruht auf der mathematischen Logik. Anstelle einer Folge von Anweisungen enthält eine Software, die nach diesem Prinzip programmiert wird, eine **Menge von Grundsätzen**, die sich als Sammlung von **Fakten und Annahmen** verstehen lässt. Jegliche Anfragen an das Programm werden verarbeitet, indem der Interpreter auf diese Grundsätze zurückgreift und **zuvor definierte Regeln** auf diese anwendet, um zum gewünschten Ergebnis zu kommen.

Programmierparadigmen im Vergleich: Imperative und deklarative Programmierung

<table>
  <thead>
    <tr>
      <th>Imperatives Programmierparadigma</th>
      <th>Deklaratives Programmierparadigma</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>„Wie?“</td>
      <td>„Was?“</td>
    </tr>
    <tr>
      <td>Klassiker</td>
      <td>Neue Strömung</td>
    </tr>
    <tr>
      <td>Ein Programm nach diesem Paradigma besteht aus aufeinanderfolgenden Anweisungen, die dem Computer vorgeben, was er in welcher Abfolge berechnen und tun soll.</td>
      <td>Ein Programm nach diesem Paradigma besteht aus Anweisungen, wie das Programm mit einer Eingabe zu verfahren hat. Berechnungen erfolgen durch die Manipulation von Werten, kontrolliert wird der Ablauf durch das Verfahren der Rekursion.</td>
    </tr>
    <tr>
      <td>Der Name kommt von „imperare“, dem lateinischen Wort für „befehlen“</td>
      <td>Der Name von „declarare“, dem lateinischen Wort für „bezeichnen“.</td>
    </tr>
    <tr>
      <td>Der gewünschte Lösungsweg wird vorgegeben</td>
      <td>Das gewünschte Ergebnis wird vorgegeben.</td>
    </tr>
    <tr>
      <td>Typische Programmiersprachen sind C, Pascal, Fortran, ALGOL sowie alle sogenannten Assembler-Sprachen</td>
      <td>Typische Programmiersprachen sind Lisp, ML, Haskell, F#, Prolog und Oz</td>
    </tr>
  </tbody>
</table>


This is a markdown version of: [https://www.ionos.de/digitalguide/websites/web-entwicklung/programmierparadigmen/](https://www.ionos.de/digitalguide/websites/web-entwicklung/programmierparadigmen/) for AI/LLM consumption.