Unterschied zwischen deklarativer und imperativer Programmierung:
Beim deklarativen Ansatz steht das Was im Vordergrund, nicht das Wie. Es geht darum, zu ermöglichen, mit sprachlichen Konstrukten genau zu beschreiben, was berechnet werden soll, und nicht -wie beim prozedural-imperativen Ansatz- wie die "Rechnung" Schritt für Schritt durchzuführen ist.
Vorteile deklarativer Programmierung:
Diskussion |
Man kann die deklarative Programmierung noch differenzieren in funktionale ("applikative") Programmierung einerseits und logisch/prädikative andererseits.
Entsprechend unterscheidet man dann zwischen sog. "funktionalen" Sprachen wie SpracheLisp, SpracheScheme, SpracheHaskell, SpracheML und logischen (bzw. prädikativen) wie z.B. SpracheProlog.
Im WardsWiki kann man dazu lesen:
A declarative programming language allows the programmer to specify what to do, not how to do it. DL's allow declarative programming.
There are flavours of decalarative language: Logic programming languages, relational programming languages and to a lesser extent functional programming languages.
Anmerkung: Nun gut, ich kann sehen, dass hier (ganz oben) die "deklarativer Programmierung" der "imperativen" gegenübergestellt wird/werden soll. Das stimmt wohl schon, so weit. Und macht wohl auch Sinn. Jedoch sollte man dabei -wie man es auch in der Literatur finden kann- auch noch die OO-Programmierung als 3.te "Spielart" gelten lassen; so dass man (erst mal) zu folgender Einteilung kommt (vgl. ProgrammierParadigmen):
Viele Sprachen haben natürlich auch Aspekte aus mehreren der oben angegebenen "Kategorien" implementiert bzw. in der Sprachdefinition umgesetzt: C++ wird z.B. (nur) deshalb als Hybridsprache bezeichnet, weil sie Merkmale einer klassisch prozeduralen/imperativen Sprache (SpracheCee) mit Merkmalen einer OO-Sprache (SpracheSimula) verbindet.
Jedoch sollte man dabei -wie man es auch in der Literatur finden kann- auch noch die OO-Programmierung als 3.te "Spielart" gelten lassen
In der Literatur kann man auch die Aussage finden, dass sich Objektorientierung orthogonal zu den anderen Paradigmen verhält, was mir wesentlich mehr einleuchtet, denn: Eine Sprache kann nur imperativ, oder nur funktional, oder nur prädikativ sein, aber nicht nur objektorientiert. Eine objektorientierte Sprache ist auch eine imperative oder eine funktionale oder eine prädikative Sprache (oder was es sonst noch gibt oder geben könnte). -- her
"Der Firmengründer versprach eine leichtere Entwicklung von Applikationen. Dazu zählt etwa das Konzept der deklarativen Programmierung auf der Grundlage der "Extensible Application Markup Language". (...) beschreibt der Anwendungsentwickler beim deklarativen Ansatz das zu lösende Problem, nicht aber die Art der Lösung."