Wikipedia · einfach zusammengefasst · Stand
Deklarative Programmierung
Die deklarative Programmierung ist ein Programmierparadigma, bei dem die Beschreibung des Problems im Vordergrund steht. Der Lösungsweg wird dann …
Inhalt4 Abschnitte
Grundprinzip
Deklarative Programmierung ist ein Programmierparadigma, bei dem die Beschreibung des Problems im Vordergrund steht. Ein Programm legt fest, was berechnet werden soll; der Lösungsweg wird automatisch ermittelt. Imperative Programmierung beschreibt dagegen, wie eine Berechnung Schritt für Schritt ablaufen soll.
Ein Algorithmus lässt sich als Kombination aus Arbeitsmechanismus und Steuermechanismus betrachten. Deklarative Sprachen ermöglichen es, diese beiden Bestandteile zu trennen. In imperativen Sprachen ist eine solche Trennung kaum möglich, weil sie konkrete Berechnungsabläufe beschreiben. Imperative Programme können daher als Anweisungen an die ausführende Maschine verstanden werden.
Arten deklarativer Sprachen
Zu den deklarativen Sprachen zählen verschiedene Gruppen:
• Abfragesprachen, zum Beispiel SQL • Datenflusssprachen, zum Beispiel Val oder Linda • funktional-logische Sprachen, zum Beispiel Babel, Escher, Curry oder Oz • funktionale Sprachen, zum Beispiel ML, Miranda, Gofer, Haskell oder Erlang • logische Sprachen, zum Beispiel Prolog • synchrone Programmiersprachen, zum Beispiel Lustre • Aufbauwerkzeuge, zum Beispiel make oder Ant • Transformationssprachen, zum Beispiel XSLT
Bekannte Vertreter deklarativer Programmierung sind außerdem Lisp und XAML. SQL und XSLT werden im weiteren Sinne dazugerechnet. Demgegenüber stehen die weiter verbreiteten imperativen Sprachen C, C++ und Java.
Vergleich am Sortieren
Der Unterschied wird am Sortieren einer Liste deutlich. In einer imperativen Pascal-Fassung des Quicksort-Algorithmus gibt der Programmierer den gesamten Lösungsweg vor: Ein Vergleichswert wird gewählt, Indizes werden verändert, Elemente werden vertauscht und Teilbereiche werden anschließend rekursiv sortiert. Das Programm beschreibt somit die Reihenfolge der Arbeitsschritte und die notwendigen Änderungen an Variablen.
In Haskell lässt sich ein ähnliches Sortierverfahren wesentlich kürzer formulieren. Für eine leere Liste ist das Ergebnis eine leere Liste. Bei einer nicht leeren Liste wird das erste Element x verwendet: Zunächst werden alle übrigen Elemente n mit n < x rekursiv sortiert, danach folgt x, und anschließend werden alle Elemente mit n >= x rekursiv sortiert. Der Programmierer beschreibt damit, was mit der Eingabe geschieht, ohne den genauen Berechnungsablauf festzulegen. Die Berechnung erfolgt durch Wertemanipulation; die wichtigste Kontrollstruktur ist die Rekursion, aus Effizienzgründen besonders die Endrekursion.
Trotz der Ähnlichkeit ist diese Haskell-Fassung kein eigentlicher Quicksort-Algorithmus. Quicksort ist ein In-Place-Verfahren, das eine bestehende Liste verändert. Die gezeigte Haskell-Fassung erzeugt dagegen eine neue Liste.
Vorteile
Deklarative Programme sind häufig kürzer als vergleichbare imperative Programme. Außerdem lassen sich Korrektheitsbeweise und Beweise über Programmeigenschaften wegen der einfacheren mathematischen Grundlage, unter anderem des Lambda-Kalküls, leichter durchführen, sofern solche Beweise überhaupt möglich sind.
Ein weiterer Vorteil ist die referentielle Transparenz: Ein Ausdruck hat bei gleichen Eingaben stets denselben Wert und verursacht keine Nebenwirkungen, also keine zusätzlichen Veränderungen außerhalb seines Ergebnisses. Dadurch können Programme partiell ausgewertet werden. Dies ermöglicht beispielsweise die Verarbeitung unendlicher Datenstrukturen.
Lernvideos zu Deklarative Programmierung
7:47
Imperative vs Deklarative Programmierung mit Beispiel
Zum Wirtschaftsinformatiker · 3.618 Aufrufe
4:49
Konfigurationsmanagement mit Puppet Tutorial: Deklarative Programmierung |video2brain.com
IT-Pro & Administration Tutorials · 615 Aufrufe
7:44
Imperative und Deklarative Programmierung – Der Kampf der Paradigmen!
Infotastisch Academy · 76 Aufrufe