Deklarative Programmierung

Deklarative Programmierung

Die deklarative Programmierung ist ein Programmierparadigma, bei dem die Beschreibung des Problems im Vordergrund steht. Der Lösungsweg wird dann automatisch ermittelt. Zu den deklarativen Programmiersprachen gehören:

Im Gegensatz zur imperativen Programmierung, bei der das Wie im Vordergrund steht, fragt man in der deklarativen Programmierung nach dem Was, das berechnet werden soll. Der Unterschied soll an folgendem populären Beispiel demonstriert werden.

Inhaltsverzeichnis

Beispiel

Der Quicksort-Sortierungsalgorithmus kann in der imperativen Programmiersprache Pascal folgendermaßen aufgeschrieben werden:

 procedure quicksort(l,r : integer);
 var x,i,j,tmp : integer;
 begin
   if r>l then
   begin
     x:=a[l]; i:=l; j:=r+1;
     repeat
       repeat  i:=i+1 until a[i]>=x;
       repeat  j:=j-1 until a[j]<=x;
       tmp:=a[j]; a[j]:=a[i]; a[i]:=tmp;
     until j<=i;
     a[i]:=a[j]; a[j]:=a[l]; a[l]:=tmp;
     quicksort(l,j-1);
     quicksort(j+1,r)
   end
 end;

Der Programmierer beschreibt, wie der Algorithmus ablaufen muss. Es wird der Lösungsweg vorgegeben, also welche einzelnen Schritte nacheinander ablaufen und wie Variablen zu verändern sind, um schließlich zum Ergebnis zu kommen.

Derselbe Sortierungsalgorithmus kann in der deklarativen Programmiersprache Haskell folgendermaßen formuliert werden:

 quicksort [] = []
 quicksort (x:xs) = quicksort [n | n<-xs, n<x] ++ [x] ++ quicksort [n | n<-xs, n>=x]

Der Programmierer beschreibt, was das Programm mit einer Eingabe macht, also wie mit welcher Eingabe umzugehen ist, wobei der Berechnungsablauf nicht von Interesse ist. Die Berechnungen erfolgen dann durch Wertemanipulation. Hauptkontrollstruktur bildet die Rekursion, aus Effizienzgründen besonders die Endrekursion.

Vorteile

  • Die Programme sind kürzer und leichter zu verstehen als vergleichbare imperative Programme.
  • Beweise (z. B. Korrektheitsbeweis, Beweise über Programmeigenschaften) sind dank einfacherer mathematischer Basis (u. a. Lambda-Kalkül) leichter durchführbar, falls überhaupt möglich.
  • Es gibt keine Nebenwirkungen aufgrund der referentiellen Transparenz. Programme sind damit partiell auswertbar und ermöglichen so z. B. die Behandlung unendlicher Datenstrukturen.[1]

Nachteile

  • Performanz: Der angegebene Quicksort-Algorithmus läuft in Pascal wesentlich schneller als in Haskell und ist demnach für die Verarbeitung größerer Datenmengen besser geeignet.
  • Deklarative Programmierparadigmen stehen insbesondere imperativen und objektorientierten Paradigmen in ihrer Akzeptanz nach. Man spricht gern von sogenannten Akademiker-Sprachen.

Einzelnachweise

  1. Manuel M. T. Charkravarty: On the Massively Parallel Execution of Declarative Programs. Dissertation. TU Berlin, 1997, S. 166, abgerufen am 16. Oktober 2011 (.ps.gz 343KiB, englisch).

Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Deklarative Programmiersprache — Die deklarative Programmierung ist ein Programmierparadigma, bei dem die Beschreibung des Problems im Vordergrund steht. Der Lösungsweg wird dann automatisch ermittelt. Zu den deklarativen Programmiersprachen gehören: funktionale Sprachen (z. B.… …   Deutsch Wikipedia

  • Programmierung — Gehirnwäsche; Konditionierung; Manipulation; Engineeringarbeit; Softwareentwicklung; Implementation * * * Pro|gram|mie|rung 〈f. 20〉 das Programmieren * * * Pro|gram|mie|rung, die; , en: das Programmieren …   Universal-Lexikon

  • Regelbasierte Programmierung — Logische Programmierung (Prädikative Programmierung) ist ein Programmierparadigma, das auf der mathematischen Logik beruht. Anders als bei der imperativen Programmierung besteht ein Logik Programm nicht aus einer Folge von Anweisungen, sondern… …   Deutsch Wikipedia

  • Imperative Programmierung — ist ein Programmierparadigma. Ein imperatives Programm beschreibt eine Berechnung durch eine Abfolge von Anweisungen, die den Status des Programmes verändern. Im Gegensatz dazu wird unter dem deklarativen Programmierparadigma beschrieben, was… …   Deutsch Wikipedia

  • Generation language — Quelltext eines Programms in der objektorientierten Programmiersprache Ruby. Eine Programmiersprache ist eine Notation für Computerprogramme; sie dient sowohl dazu, diese während und nach ihrer Entwicklung (Programmierung) darzustellen als auch… …   Deutsch Wikipedia

  • Programmierparadigma — Ein Programmierparadigma ist ein fundamentaler Programmierstil.[1] Programmierparadigmen unterscheiden sich durch ihre Konzepte für die Repräsentation von statischen (wie beispielsweise Objekte, Methoden, Variablen, Konstanten) und dynamischen… …   Deutsch Wikipedia

  • Imperative Programmiersprache — Imperative Programmierung ist ein Programmierparadigma. Ein imperatives Programm beschreibt eine Berechnung durch eine Folge von Anweisungen, die den Status des Programms verändern. Im Gegensatz dazu wird unter dem deklarativen… …   Deutsch Wikipedia

  • Imperative Sprachen — Imperative Programmierung ist ein Programmierparadigma. Ein imperatives Programm beschreibt eine Berechnung durch eine Folge von Anweisungen, die den Status des Programms verändern. Im Gegensatz dazu wird unter dem deklarativen… …   Deutsch Wikipedia

  • Imperativer Algorithmus — Imperative Programmierung ist ein Programmierparadigma. Ein imperatives Programm beschreibt eine Berechnung durch eine Folge von Anweisungen, die den Status des Programms verändern. Im Gegensatz dazu wird unter dem deklarativen… …   Deutsch Wikipedia

  • Logikprogrammierung — Logische Programmierung (Prädikative Programmierung) ist ein Programmierparadigma, das auf der mathematischen Logik beruht. Anders als bei der imperativen Programmierung besteht ein Logik Programm nicht aus einer Folge von Anweisungen, sondern… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”