Definition

Deklarative Programmierung

Bei der deklarativen Programmierung handelt es sich um eine Methode, die von der Logik abstrahiert, auf deren Basis eine Aktion durchgeführt wird. Stattdessen können Programmierer das gewünschte Ziel oder die gewünschte Aktion angeben.

Deklarative Programmierung ist ein Programmierkonzept auf hoher Ebene und das Gegenstück zur imperativen Programmierung. Sie findet sich typischerweise in Datenbanken und Konfigurationsmanagement-Software, zusammen mit einer domänenspezifischen Sprache (Domain-Specific Language, DSL). Deklarative Modelle stützen sich auf vorkonfigurierte Fähigkeiten in der Sprache, um eine Aufgabe ohne explizite Anweisungen zu erfüllen.

Deklarative Programmierung versus imperative Programmierung

Die deklarative Programmierung stützt sich auf zugrundeliegende Komponenten einer bestimmten Sprache, um die notwendigen Schritte zum erreichen des deklarierten Ergebnisses durchzuführen. Dafür gibt es typische Programmierkonstrukte wie Schleifen und Wenn-Dann-Bedingungen nicht, weil sie Anweisungen geben.

Die deklarative Programmierung konzentriert sich auf das Endergebnis, während die imperative Programmierung sich darauf konzentriert, wie man dorthin gelangt. Wenn Sie zum Beispiel in ein Taxi springen, erklären Sie dem Fahrer, wohin Sie fahren wollen. Sie sagen ihm normalerweise nicht, wie er dorthin gelangen soll.

Die deklarative Programmierung baut auf den Fähigkeiten auf, die durch die imperative Programmierung entwickelt wurden, ermöglicht es dem Entwickler jedoch, sich auf die Problemlösung zu konzentrieren und nicht auf einen Code und seine Komplexität.

Viele Programmiersprachen ermöglichen es, imperative und deklarative Programme miteinander zu kombinieren. Beispielsweise bieten die Java-Programmiersprachen Entwicklern die Möglichkeit, Anmerkungen zum Code zu platzieren, wodurch dem traditionell entwickelten, imperativen Code deklarative Fähigkeiten hinzugefügt werden. Im Codeausschnitt unten zeigt die @Enumerated-Anmerkung an, dass die Eigenschaft clientGesture ein Aufzählungstyp ist, der in der zugrunde liegenden Datenbank als Textstring persistiert werden sollte:

@Enumerated(EnumType.STRING)

private Gesture clientGesture;

Andere moderne Programmiersprachen haben ähnliche deklarative Programmiermöglichkeiten.

Wie deklaratives Programmieren funktioniert

Die deklarative Programmierung stützt sich auf Zwänge und Logik, um den Aufbau und das Ergebnis zu definieren.

Einschränkungen definieren die Eigenschaften, die in einem gegebenen Programmierszenario zutreffen, zum Beispiel Gleichheiten und Ungleichheiten. Sie bestimmen, wie die Variablen zueinander in Beziehung stehen. Einschränkungen sind entweder in die Sprache eingebettet oder werden in Softwarebibliotheken eingerichtet.

In ähnlicher Weise drückt die Logikprogrammierung Fakten und Regeln über den Bereich aus, in dem der Entwickler arbeitet. Damit diese Form der Programmierung funktioniert, sind Steuerung und Logik getrennt. Die Programmierung mit Einschränkungslogik kombiniert die beiden oben genannten Praktiken.

Die deklarative Programmierung wird in der Regel mit einer DSL praktiziert, da der Kontrollfluss getrennt von der Logik, eingebettet in die Sprache selbst, existieren muss.

Wie man deklarative Programmierung verwendet

Die relationale Datenbank ist ein beliebtes deklaratives Programmierkonzept. Ein Programmierer schreibt Anweisungen in einer DSL namens Structured Query Language (SQL), um die Datenbank zu steuern. Eine SQL-Abfrage, die eine Reihe von Datensätzen aus einer Datenbank abruft, verwendet keine Schleifen oder bedingte Logik. Stattdessen schließt sie SELECT * FROM <TableName> ein, wodurch die Datenbank angewiesen wird, die angeforderten Datensätze zurückzugeben.

Konfigurationsverwaltungstools wie Chef, Puppet und Microsoft PowerShell Desired State Configuration (DSC) verwenden alle den deklarativen Programmieransatz. Jedes Tool basiert auf einer iterativen Sprache, einschließlich Ruby, Python und PowerShell. Der Benutzer definiert über die DSL, was das Tool tun soll, und das Tool führt die Aufgabe aus, ohne dass weitere Anweisungen notwendig sind.

Beispiel für deklarative Programmierung

Wenn ein Administrator im Konfigurationsmanagement eine Datei in Pseudocode auf einen Server kopieren muss, folgt dieser Konstruktion ein iterativer Ansatz mit wenn-dann-Anweisungen:

Pseudocode ImperativAbbildung 1: Beispiel für Pseudocode mit einer wenn-dann-Ansatz

Eine deklarative Alternative, in Pseudocode, folgt einem anderen Aufbau (Abbildung 2):

Pseudocode DeklarativAbbildung 2: In deklarativem Code sieht das Beispiel gleich viel übersichtlicher aus.

Es gibt keine bedingte Logik im Schnipsel des deklarativen Codes. Stattdessen zeigt es an, welche Aktion der Benutzer ausführen möchte und welche Server an der Aktion beteiligt sind.

Diese Definition wurde zuletzt im November 2020 aktualisiert

Erfahren Sie mehr über Softwareentwicklung

ComputerWeekly.de
Close