Imperative vs deklarative Programmierung - der Unterschied, der im einfachen Englisch erklärt wird

Als Codierlehrer ist es meine Pflicht, Programmierer in die Welt hinauszuschicken und auf neue Weise zu denken. Eine wesentliche Änderung des Denkens tritt auf, wenn wir von der imperativen zur deklarativen Programmierung wechseln.

Sobald meine Schüler grundlegendes JavaScript gelernt haben, gehen wir die funktionale Programmierung und die in einem deklarativen Codierungsstil verwendeten Array-Methoden durch. Hier beginnt ihr Gehirn zu knallen und zu zischen und zu schmelzen wie Marshmallows über einem Feuer.

Was ist imperative Programmierung?

Als Anfänger haben Sie wahrscheinlich meistens in einem imperativen Stil codiert: Sie geben dem Computer eine Reihe von Anweisungen, die befolgt werden müssen, und der Computer macht das, was Sie wollen, in einer leicht verständlichen Reihenfolge.

Stellen Sie sich vor, wir haben eine Liste der weltweit am häufigsten verwendeten Passwörter:

const passwords = [ "123456", "password", "admin", "freecodecamp", "mypassword123", ];

Unsere App überprüft das Passwort des Benutzers bei der Anmeldung und erlaubt ihm nicht, ein Passwort zu erstellen, das aus dieser Liste stammt.

Aber bevor wir das tun, wollen wir diese Liste verfeinern. Wir haben bereits Code, mit dem sich der Benutzer nicht mit einem Passwort anmelden kann, das weniger als 9 Zeichen lang ist. Daher können wir diese Liste auf Passwörter mit 9 oder mehr Zeichen reduzieren, um die Überprüfung zu beschleunigen.

Wir würden unbedingt schreiben:

// using the passwords constant from above let longPasswords = []; for (let i = 0; i = 9) { longPasswords.push(password); } } console.log(longPasswords); // logs ["freecodecamp", "mypassword123"];
  1. Wir erstellen eine leere Liste mit dem Namen longPasswords.
  2. Dann schreiben wir eine Schleife, die so oft ausgeführt wird, wie Passwörter in der ursprünglichen passwordsListe enthalten sind.
  3. Dann erhalten wir das Passwort am Index der Schleifeniteration, auf der wir uns gerade befinden.
  4. Dann prüfen wir, ob dieses Passwort größer oder gleich 9 Zeichen lang ist.
  5. Wenn ja, setzen wir es in die longPasswordsListe ein.

Eine der Stärken der imperativen Programmierung ist die Tatsache, dass es leicht zu überlegen ist. Wie ein Computer können wir Schritt für Schritt folgen.

Was ist deklarative Programmierung?

Aber es gibt noch eine andere Art, über Codierung nachzudenken - als einen Prozess, bei dem ständig definiert wird, was Dinge sind. Dies wird als deklarative Programmierung bezeichnet.

Imperative und deklarative Programmierung erreichen die gleichen Ziele. Sie sind nur verschiedene Denkweisen über Code. Sie haben ihre Vor- und Nachteile, und es gibt Zeiten, in denen beide genutzt werden müssen.

Obwohl es für Anfänger einfacher ist, über imperative Programmierung nachzudenken, können wir mit deklarativer Programmierung besser lesbaren Code schreiben, der genau das widerspiegelt, was wir sehen möchten. In Kombination mit guten Variablennamen kann es ein leistungsstarkes Werkzeug sein.

Anstatt dem Computer Schritt für Schritt Anweisungen zu geben, erklären wir, was wir wollen, und weisen dies dem Ergebnis eines Prozesses zu.

// using the passwords constant from above const longPasswords = passwords.filter(password => password.length >= 9); console.log(longPasswords); // logs ["freecodecamp", "mypassword123"];

Die Liste von longPasswordsist definiert (oder deklariert) als die Liste der passwordsgefilterten Passwörter, die größer oder gleich 9 Zeichen sind.

Die funktionalen Programmiermethoden in JavaScript ermöglichen es uns, Dinge sauber zu deklarieren.

  • Dies ist eine Liste von Passwörtern.
  • Dies ist eine Liste von nur langen Passwörtern. (Nach dem Laufen filter.)
  • Dies ist eine Liste von Passwörtern mit IDs. (Nach dem Laufen map.)
  • Dies ist ein einzelnes Passwort. (Nach dem Laufen find.)

Eine der Stärken der deklarativen Programmierung besteht darin, dass wir uns fragen müssen, was wir zuerst wollen. Durch die Benennung dieser neuen Dinge wird unser Code ausdrucksstark und explizit.

Und wenn unsere Mitentwickler vorbeikommen und sich unseren Code ansehen, können sie Fehler leichter finden:

„Sie nennen diese Variable 'Index', wodurch ich eine Zahl erwarte, aber ich sehe, dass das Ergebnis filterein Array zurückgibt. Was ist damit?"

Ich ermutige die Lernenden, so oft wie möglich deklarativen Code zu schreiben und ständig zu definieren (und umzugestalten, um neu zu definieren), was Dinge sind.

Anstatt einen ganzen imperativen Prozess in Ihrem Kopf zu halten, können Sie eine greifbarere Sache mit einer klaren Definition in Ihrem Kopf halten .

Mike Zetlow ist der Lead Instructor im 10x Code Camp .