Der imperative Programmierstil wurde in der Webentwicklung von 2005 bis 2013 praktiziert.
Mit der imperativen Programmierung haben wir Code geschrieben, der Schritt für Schritt genau auflistet, was unsere Anwendung tun soll.
Der funktionale Programmierstil erzeugt Abstraktion durch clevere Möglichkeiten, Funktionen zu kombinieren.
In den Antworten wird die deklarative Programmierung erwähnt, und dazu möchte ich sagen, dass die deklarative Programmierung einige Regeln auflistet, denen wir folgen müssen. Wir geben dann einen so genannten Anfangszustand für unsere Anwendung an und lassen diese Regeln das Verhalten der Anwendung definieren.
Nun, diese kurzen Beschreibungen machen wahrscheinlich nicht viel Sinn. Lassen Sie uns also die Unterschiede zwischen imperativer und deklarativer Programmierung durchgehen, indem wir eine Analogie durchgehen.
Stellen Sie sich vor, wir bauen keine Software, sondern backen Kuchen, um ihren Lebensunterhalt zu verdienen. Vielleicht sind wir schlechte Bäcker und wissen nicht, wie wir einen köstlichen Kuchen so backen sollen, wie wir sollten.
Also gibt uns unser Chef eine Liste mit Anweisungen, was wir als Rezept kennen.
Das Rezept sagt uns, wie man einen Kuchen macht. Ein Rezept ist in einem imperativen Stil wie folgt geschrieben:
- Mischen Sie 1 Tasse Mehl
- 1 Ei hinzufügen
- 1 Tasse Zucker hinzufügen
- Gießen Sie die Mischung in eine Pfanne
- Stellen Sie die Pfanne für 30 Minuten und 350 Grad F in den Ofen.
Das deklarative Rezept würde Folgendes bewirken:
1 Tasse Mehl, 1 Ei, 1 Tasse Zucker - Ausgangszustand
Regeln
- Wenn alles gemischt ist, in eine Pfanne geben.
- Wenn alles ungemischt ist, in eine Schüssel geben.
- Wenn alles in der Pfanne ist, in den Ofen geben.
Imperative Ansätze zeichnen sich also durch schrittweise Ansätze aus. Sie beginnen mit Schritt eins und fahren mit Schritt 2 fort und so weiter.
Sie erhalten schließlich ein Endprodukt. Wenn wir diesen Kuchen machen, nehmen wir diese Zutaten, mischen sie, legen sie in eine Pfanne und in den Ofen und Sie haben Ihr Endprodukt.
In einer deklarativen Welt ist es anders. Im deklarativen Rezept würden wir unser Rezept in zwei separate Teile aufteilen. Beginnen Sie mit einem Teil, der den Anfangszustand des Rezepts wie die Variablen auflistet. Unsere Variablen hier sind also die Mengen unserer Zutaten und ihre Art.
Wir nehmen den Ausgangszustand oder die Ausgangsbestandteile und wenden einige Regeln auf sie an.
Also nehmen wir den Ausgangszustand und durchlaufen diese Regeln immer wieder, bis wir einen essfertigen Rhabarber-Erdbeerkuchen oder was auch immer bekommen.
In einem deklarativen Ansatz müssen wir also wissen, wie diese Regeln richtig strukturiert werden.
Die Regeln, nach denen wir unsere Zutaten untersuchen oder angeben möchten, wenn sie gemischt sind, legen Sie sie in eine Pfanne.
Bei unserem Ausgangszustand stimmt das nicht überein, da wir unsere Zutaten noch nicht gemischt haben.
Regel 2 besagt also, wenn sie nicht gemischt sind, mischen Sie sie in einer Schüssel. Okay, ja, diese Regel gilt.
Jetzt haben wir eine Schüssel mit gemischten Zutaten als unseren Zustand.
Jetzt wenden wir diesen neuen Zustand wieder auf unsere Regeln an.
Regel 1 besagt also, wenn Zutaten gemischt sind, lege sie in eine Pfanne. Okay, jetzt gilt Regel 1, lass es uns tun.
Jetzt haben wir diesen neuen Zustand, in dem die Zutaten gemischt und in einer Pfanne sind. Regel 1 ist nicht mehr relevant, Regel 2 gilt nicht.
Regel 3 besagt, wenn sich die Zutaten in einer Pfanne befinden, legen Sie sie in den Ofen. Gut, dass diese Regel für diesen neuen Zustand gilt. Lassen Sie es uns tun.
Und am Ende haben wir einen köstlichen heißen Apfelkuchen oder was auch immer.
Wenn Sie wie ich sind, denken Sie vielleicht, warum wir nicht immer noch imperative Programmierung durchführen. Das macht Sinn.
Nun, für einfache Abläufe ja, aber die meisten Webanwendungen haben komplexere Abläufe, die vom imperativen Programmierdesign nicht richtig erfasst werden können.
In einem deklarativen Ansatz können wir einige Anfangsbestandteile oder einen Anfangszustand wie textInput=“”
eine einzelne Variable haben.
Möglicherweise beginnt die Texteingabe als leere Zeichenfolge.
Wir nehmen diesen Ausgangszustand und wenden ihn auf eine Reihe von Regeln an, die in Ihrer Anwendung definiert sind.
Wenn ein Benutzer Text eingibt, aktualisieren Sie die Texteingabe. Nun, im Moment trifft das nicht zu.
Wenn eine Vorlage gerendert wird, berechnen Sie das Widget.
- Wenn textInput aktualisiert wird, rendern Sie die Vorlage erneut.
Nun, nichts davon trifft zu, so dass das Programm nur darauf wartet, dass ein Ereignis eintritt.
Irgendwann aktualisiert ein Benutzer die Texteingabe und dann wenden wir möglicherweise Regel Nummer 1 an.
Wir können das auf aktualisieren “abcd”
Also haben wir gerade unsere Text- und Texteingabe-Aktualisierungen aktualisiert, Regel Nr. 2 gilt nicht, Regel Nr. 3 sagt, wenn die Texteingabe aktualisiert wurde, was gerade stattgefunden hat, dann rendern wir die Vorlage erneut und kehren dann zu Regel 2 zurück, die besagt, ob die Vorlage gerendert wird , berechne das Widget, okay, lass uns das Widget berechnen.
Im Allgemeinen möchten wir als Programmierer nach deklarativeren Programmierentwürfen streben.
Der Imperativ scheint klarer und offensichtlicher zu sein, aber ein deklarativer Ansatz lässt sich für größere Anwendungen sehr gut skalieren.