Heute werden wir uns mit der funktionalen Programmierung befassen. Genauer gesagt werden wir uns den Unterschied zwischen deklarativer und imperativer Programmierung ansehen.

Lassen Sie uns zunächst kurz die Bedingungen durchgehen. Dann vergleichen wir diese Programmierstile und sehen, wie sie in Java aussehen und ob die Sprache ihr glückliches Zusammenleben unterstützt.

Funktionale Programmierung ist ein Paradigma, bei dem Funktionen als mathematische Funktionen und nicht als Unterprogramme wie in der prozeduralen Programmierung verstanden werden . Das heißt, in diesen beiden Paradigmen wird das Wort „Funktion“ unterschiedlich interpretiert. Denken Sie daran und verwechseln Sie sie nicht. Java lässt Sie nicht verwirren, da Unterprogramme als „Methoden“ bezeichnet werden, während Funktionen sich auf mathematische Funktionen (auch: Lambda-Funktionen oder Methodenreferenz) beziehen.

In der Praxis hängen Funktionen in der prozeduralen Programmierung nicht nur von Eingabevariablen ab, sondern auch von externen Faktoren (z. B. anderen Variablen außerhalb der Funktion oder dem Zustand des Systems). Das bedeutet, dass der Aufruf derselben Funktion mit denselben Argumenten, aber in einem anderen Kontext zu unterschiedlichen Ergebnissen führen kann. Wenn in der funktionalen Programmierung eine Funktion mit denselben Argumenten aufgerufen wird, erzeugt sie immer das gleiche Ergebnis, da Funktionen nur von Eingabedaten abhängen.

Vorteile der funktionalen Programmierung

  • Verbesserte Codezuverlässigkeit
  • Bequemes Unit-Testen
  • Möglichkeiten zur Codeoptimierung während der Kompilierung
  • Möglichkeiten der Parallelität

Nachteile der funktionalen Programmierung

Die Nachteile der funktionalen Programmierung ergeben sich aus denselben Merkmalen:

  • Es gibt keine Zuweisungsanweisungen. Stattdessen werden neue Werte in neuen Variablen gespeichert, was dazu führt, dass ständig Speicher zugewiesen und automatisch freigegeben werden muss. Daher ist eine hocheffiziente Garbage Collection ein wesentlicher Bestandteil jedes Systems, das funktionale Programme ausführt.

  • Eine nicht strikte Auswertung bedeutet, dass die Reihenfolge der Funktionsaufrufe unvorhersehbar ist, was zu E/A-Problemen führt, wenn die Reihenfolge der Vorgänge wichtig ist.

Damit ist unser kurzer Überblick über die funktionale Programmierung abgeschlossen. Kommen wir nun zu den Programmierstilen.

Imperative Programmierung ist ein Programmierparadigma, das durch die folgenden Merkmale gekennzeichnet ist:

  • Der Quellcode des Programms besteht aus Anweisungen (Anweisungen).

  • Die Anweisungen müssen der Reihe nach befolgt werden.

  • Daten, die durch die Ausführung vorheriger Anweisungen generiert wurden, können von nachfolgenden Anweisungen aus dem Speicher gelesen werden.

  • Die durch die Ausführung einer Anweisung erhaltenen Daten können in den Speicher geschrieben werden.

Hier sind die Hauptmerkmale imperativer Sprachen:

  • Verwendung boolescher Variablen.
  • Verwendung des Zuweisungsoperators.
  • Verwendung zusammengesetzter Ausdrücke.
  • Verwendung von Unterprogrammen.

Ein Imperativprogramm ist wie Befehle, die in natürlichen Sprachen im Imperativ ausgedrückt werden. Mit anderen Worten: Ein Imperativprogramm ist eine Folge von Befehlen.

Zu den imperativen Programmiersprachen gehören C und C++.

Deklarative Programmierung ist ein Programmierparadigma, bei dem die Lösung eines Problems angegeben wird. Das heißt, das Endergebnis wird beschrieben, nicht der Weg, es zu erreichen. HTML ist ein Beispiel für eine deklarative Sprache. Beim Schreiben von Tags in dieser Sprache denken wir nicht darüber nach, wie die Elemente auf der Seite gezeichnet werden. Wir beschreiben lediglich, wie die Seite aussehen soll.

Eine weitere deklarative Programmiersprache ist SQL.

Vergleichen wir die beiden Programmierstile anhand eines realen Beispiels: Wie erklären wir einer Person, wie sie an einen bestimmten Ort gelangt?

Stellen Sie sich diese Situation vor: Ein Mann kommt auf der Straße auf uns zu und fragt: „Wie komme ich zum Museum?“

Mit einem imperativen Ansatz würden wir ihm den Algorithmus zur Verfügung stellen, wie er zu Fuß dorthin gelangt:

  • dreh dich hier um
  • Gehen Sie 2 Blocks geradeaus
  • Nach rechts drehen

Bei einem deklarativen Ansatz würden wir einfach die Adresse angeben und die Person gelangt dann von selbst an die richtige Stelle.

Java ist derzeit eine Multiparadigmen-Programmiersprache . Multiparadigma bedeutet, dass die Sprache mehrere Paradigmen unterstützt.

Im Laufe ihrer langen Entwicklung hat die Sprache ihr objektorientiertes Modell erweitert, sodass ihre Benutzer über verschiedene Tools verfügen und das beste für ihre spezifische Aufgabe auswählen können.

Daher unterstützt Java derzeit sowohl den imperativen Ansatz (z. B. das Schreiben von Code für Methodenaufrufe) als auch den deklarativen Ansatz (z. B. die zur Laufzeit verfügbaren Anmerkungen).

Fassen wir zusammen:

  • Es gibt verschiedene Programmierparadigmen.

  • Es gibt deklarative und imperative Ansätze.

  • Sie sollten diejenige auswählen, die für die jeweilige Aufgabe am besten geeignet ist.

  • Java ist eine Multiparadigmensprache, die beide Ansätze unterstützt.