Deklarativ vs. Imperativ
A Programmierparadigma ist ein grundlegender Stil der Computerprogrammierung. Es gibt vier Hauptparadigmen: imperativ, deklarativ, funktional (das als Teilmenge des deklarativen Paradigmas betrachtet wird) und objektorientiert.
Deklarative Programmierung : ist ein Programmierparadigma, das die Logik einer Berechnung (What do) ausdrückt, ohne den Kontrollfluss (How do) zu beschreiben. Einige bekannte Beispiele für deklarative domänenspezifische Sprachen (DSLs) sind CSS, reguläre Ausdrücke und eine Teilmenge von SQL (z. B. SELECT-Abfragen) Viele Auszeichnungssprachen wie HTML, MXML, XAML, XSLT... sind häufig deklarativ. Die deklarative Programmierung versucht, die Unterscheidung zwischen einem Programm als eine Reihe von Anweisungen und einem Programm als eine Behauptung über die gewünschte Antwort zu verwischen.
Imperative Programmierung T: ist ein Programmierparadigma, das Berechnungen in Form von Anweisungen beschreibt, die einen Programmzustand verändern. Die imperativen Programme können sowohl als Programmierbefehle als auch als mathematische Aussagen betrachtet werden.
Funktionale Programmierung: ist ein Programmierparadigma, das die Berechnung als Auswertung mathematischer Funktionen behandelt und Zustände und veränderliche Daten vermeidet. Der Schwerpunkt liegt auf der Anwendung von Funktionen, im Gegensatz zum imperativen Programmierstil, bei dem Zustandsänderungen im Vordergrund stehen. In einer rein funktionalen Sprache wie Haskell sind alle Funktionen ohne Seiteneffekte, und Zustandsänderungen werden nur als Funktionen dargestellt, die den Zustand transformieren.
Das folgende Beispiel für imperative Programmierung in MSDN durchläuft in einer Schleife die Zahlen 1 bis 10 und findet die geraden Zahlen.
var numbersOneThroughTen = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//With imperative programming, we'd step through this, and decide what we want:
var evenNumbers = new List<int>();
foreach (var number in numbersOneThroughTen)
{ if (number % 2 == 0)
{
evenNumbers.Add(number);
}
}
//The following code uses declarative programming to accomplish the same thing.
// Here, we're saying "Give us everything where it's even"
var evenNumbers = numbersOneThroughTen.Where(number => number % 2 == 0);
Beide Beispiele führen zu demselben Ergebnis, und das eine ist weder besser noch schlechter als das andere. Das erste Beispiel erfordert mehr Code, aber der Code ist testbar, und der imperative Ansatz gibt Ihnen die volle Kontrolle über die Implementierungsdetails. Im zweiten Beispiel ist der Code zwar besser lesbar, aber durch LINQ haben Sie keine Kontrolle über die Vorgänge hinter den Kulissen. Sie müssen darauf vertrauen, dass LINQ das angeforderte Ergebnis liefert.
76 Stimmen
Imperativ geht in ein Restaurant und bestellt ein Steak (blutig gebraten), Pommes frites (mit Ketchup), einen Beilagensalat (mit Ranch) und eine Cola (ohne Eis). Der Kellner liefert ihm genau das, was er bestellt hat, und berechnet ihm 14,50 Dollar. Auf der anderen Seite, Deklarativ geht in ein Restaurant und sagt dem Kellner, dass er nur etwa 12 Dollar für das Abendessen bezahlen möchte und Lust auf Steak hat. Der Kellner kommt mit einem Steak (medium gegart), Kartoffelpüree, gedünstetem Brokkoli, einem Brötchen und einem Glas Wasser zurück. Ihm werden 11,99 Dollar berechnet.
3 Stimmen
Ein weiteres gutes Beispiel, das ich gefunden habe, ist vielleicht, wie Sie Docker-Dateien und Befehle tun... z.B. ein imperativer Ansatz ist, dass Sie alle Ihre Schritte nacheinander in der Befehlszeile definieren, z.B. erstellen Sie einen Container in aws, erstellen Sie ein Netzwerk und dann setzen Sie Ihre Ressourcen irgendwie zusammen... der DECLARATIVE Ansatz wäre dann: Sie DECLARE eine Dockerdatei (oder docker-compose.yaml), wo Sie im Wesentlichen alle Ihre Befehle (oder Sie nur benennen, was Sie wollen, dass es zu tun) innerhalb einer Datei, und dann einfach diese Datei ausführen. Seine deklariert alle auf einmal vorher, so sollte es immer ähnlich verhalten.
1 Stimmen
Sie können die Natur eines deklarativen Programms und der deklarativen Programmierung besser verstehen, wenn Sie sie als einen Konfigurations- und Konfigurationsprozess betrachten.