Ich habe es mit funktionaler Programmierung / Sudo Null IT News gemacht

Ein paar Definitionen zur funktionalen Programmierung

Es geht nicht um Funktionen!

Es gibt zwei große Herangehensweisen an die Programmierung – zwingend und funktional. Sie unterscheiden sich erheblich in der Arbeitslogik und sorgen auch bei den Namen für Verwirrung. Lassen Sie uns jetzt erklären.

Nein. Bei Funktion geht es nicht um Funktionen. Es gibt Funktionen in fast allen Programmiersprachen: sowohl funktional als auch imperativ. Der Unterschied zwischen funktionaler Programmierung und imperativer Programmierung liegt im allgemeinen Ansatz.

Metapher: Anweisung oder Regelbuch

Stellen Sie sich vor, Sie eröffnen ein Café. Jetzt haben Sie dort zwei Arten von Mitarbeitern: Köche und Administratoren.

Für Köche schreiben Sie klare Schritt-für-Schritt-Anleitungen für jedes Gericht. Zum Beispiel:

  1. Gießen Sie Wasser in einen Topf

  2. Stellen Sie einen Topf mit Wasser auf das Feuer

  3. Gib ausreichend Salz in einen Topf mit Wasser

  4. Wenn Sie 10 Portionen kochen müssen, nehmen Sie eine Rote Beete. Wenn Sie 20 Portionen kochen müssen, nehmen Sie zwei Rüben.

  5. Schäle alle Rüben, die du genommen hast

  6. … Der Koch muss diese Anweisungen genau in der Reihenfolge befolgen, in der Sie sie geschrieben haben. Sie können die Rüben nicht zuerst reinigen und dann nehmen. Du kannst keinen Topf salzen, in dem kein Wasser ist. Die Reihenfolge der Aktionen ist wichtig und wird von Ihnen bestimmt. Dies ist ein Beispiel für imperative Programmierung. Sie kontrollieren den Darsteller. Wir können sagen, dass die Darsteller Ihre Aufgaben erfüllen.

Für den Administrator schreiben Sie keine Anleitung, sondern wie ein Regelwerk:

  • Wir können unsere nicht haben. Wenn die Gäste mit ihren eigenen kamen, dann machen Sie ihnen die und die Bemerkung.

  • Die Halle muss sauber sein. Wenn die Halle schmutzig ist, rufen Sie eine Reinigungskraft.

  • Wenn es eine Warteschlange gibt, öffnen Sie eine zusätzliche Kasse.

Dies sind ebenfalls Befehle, aber der Administrator wird sie nicht in dieser Reihenfolge ausführen, sondern in beliebiger Reihenfolge. Wir können sagen, dass die Aufgabe dieser Person darin besteht, die Funktionen eines Administrators auszuführen, und wir haben die Regeln beschrieben, nach denen diese Funktionen ausgeführt werden. Dies ist ein Beispiel für funktionale Programmierung.

Es stellt sich heraus, dass die Bedeutung der funktionalen Programmierung nicht darin besteht, die klaren Schritte zum Ziel selbst zu beschreiben, sondern die Regeln, nach denen der Compiler selbst zum gewünschten Ergebnis gelangen muss.

Programmierer, bombardiert nicht.

Dies ist natürlich zum Verständnis vereinfacht. Sie selbst versuchen dies normalerweise zu erklären (Sie können dies direkt in den Kommentaren tun).

Wie ohne sie?

Abstraktion

Stellen Sie sich vor, Sie hätten mehrere Personen gebeten, allgemein zu beschreiben, was ein Telefon ist und wie man es benutzt: Lassen Sie sie eine Großmutter, eine Mutter und eine Freundin sein. Großmutter wird sich an Drehtelefone und Röhren mit verdrilltem Draht erinnern. Mama wird von Funktelefonen erzählen, die eine Basis und einen Hörer haben, mit denen Sie in der Wohnung herumlaufen können, und ein Freund wird anfangen, ein Mobiltelefon zu beschreiben.

Obwohl die Geschichten sehr unterschiedlich sein werden, haben sie einige Gemeinsamkeiten in Bezug auf das Telefon:

  • das Telefon hat einen Hörer;

  • wir sprechen in den Hörer, wir hören vom Hörer;

  • Sie können die Nummer der gewünschten Person wählen und sie anrufen;

  • Wenn Sie einen Anruf erhalten, hören Sie ihn und nehmen den Anruf entgegen.

Es stellt sich heraus, dass Sie, wenn Sie sich ein abstraktes Telefon vorstellen, ein solches Gerät mit einem Lautsprecher, einem Mikrofon und einem Dialer erhalten.

Das ist Abstraktion: Wenn wir nur die wesentlichsten Details beschreiben, die für die Aufgabe wichtig sind.

In unserem Fall besteht die Aufgabe darin, zu verstehen, was ein Telefon ist und wie man es benutzt. Daher sind Mikrofon und Lautsprecher für diese Aufgabe wichtig, nicht jedoch die Art und Weise, wie das Telefon mit dem Netzwerk kommuniziert. Der Dialer ist wichtig, aber welcher Klingelton beim Anruf abgespielt wird, ist es nicht.

Abstraktion ist, wenn wir uns nur auf die Details konzentrieren, die für die Aufgabe wesentlich sind, und alles andere ignorieren. In OOP bedeutet Abstraktion, dass wir für jedes Objekt die minimale Anzahl von Methoden, Feldern und Beschreibungen festlegen, die es uns ermöglichen, das Problem zu lösen. Je weniger Merkmale, desto besser die Abstraktion, aber die Schlüsselmerkmale können nicht entfernt werden.

Um mit Abstraktionen zu arbeiten, werden Schnittstellen verwendet.

Schnittstelle

Wir haben also ein Gerät mit einem Hörer, einem Mikrofon, einem Lautsprecher und einem Dialer. Aber wenn Sie sich an die Geschichten Ihrer Mutter, Großmutter und Freundin erinnern, werden Sie Folgendes finden:

  • sprechen Sie in das Mikrofon, damit der Gesprächspartner Sie hören kann;

  • um sich selbst zu hören, wird das Ohr an den Sprecher angelegt;

  • Um eine Nummer zu wählen, müssen Sie den Dialer verwenden, um die gewünschte Nummernfolge anzurufen.

  • Bei einem Anruf sind Pieptöne im Lautsprecher zu hören.

All dies sind Schnittstellen.

Sie ermöglichen es Ihnen, mit einem Objekt zu arbeiten, ohne sich mit seiner inneren Anordnung befassen zu müssen. Wenn Sie wissen, wie man mit der Dialer-Schnittstelle arbeitet, dann ist es Ihnen egal, ob Sie die Wählscheibe drehen, die physischen Tasten auf dem Funkhandgerät drücken oder Ihren Finger auf den Touchscreen drücken müssen.

Eine solche Schnittstelle sagt uns sozusagen – ich werde alle gewünschten Nummern an das Telefon übertragen. Es spielt keine Rolle, wie ich es drinnen mache und wie sie verarbeitet werden, einfach die Nummer wählen, und das Telefon wird es herausfinden.

Schnittstellen sind Aktionen auf einem Objekt, die anderen Objekten zur Verfügung stehen (deshalb werden sie öffentlich genannt).

Es gibt auch gekapselte, also interne Methoden. Beispielsweise hat ein Mikrofon eine öffentliche Methode „Sprache hören“ und eine interne Methode „Sprache in elektrische Signale umwandeln“. Damit interagiert es mit anderen Teilen unseres abstrakten Telefons mit Unterstützung von Kapselungstools.

Komplexe Terminologie

Genau genommen sind Interfaces keine Aktionen, sondern Methoden.

Lassen Sie uns jetzt erklären.

Beim Programmieren gibt es Operationen – das sind die einfachsten Aktionen, zum Beispiel das Kopieren eines Werts von einer Variablen in eine andere.

Funktionen bestehen aus einfachen Aktionen – hier werden mehrere Operationen zu etwas „verklebt“. Wir geben dieser Verklebung einen Namen und erhalten eine Funktion.

Beispielsweise kann es eine Funktion “E-Mail-Adresse auf Korrektheit prüfen” geben, die aus mehreren Dutzend einfacher Operationen besteht.

In der OOP-Sprache werden an Objekte angehängte Funktionen als Methoden bezeichnet. Genau so ein Begriff. Tatsächlich sind dies Funktionen, dh zusammengeklebte Operationen.

Zusammengefasst: Eine Methode ist eine Menge einfacher Aktionen, die zusammengeklebt und in ein Objekt gesteckt werden.

Wozu das alles

Und das alles, weil es niemanden interessiert, wie dieser Programmierer seinen Teil implementiert hat, wenn alles über die Schnittstelle auf Hardwareebene funktioniert. Es spielt keine Rolle, wie es ein logisches Binärsignal erzeugt, wie es die Taktfrequenz in Zyklen einstellt, wie es einen Trigger-Aufruf aufbaut oder wie die Organisation des Skriptspeichers organisiert ist.

Wenn ein logischer Kern mit einer solchen Abstraktion der Schnittstelle dem Entwickler eine komfortablere Erreichung des Endziels ermöglicht, dann verdient eine solche Umgebung zu Recht eine massenhafte Anerkennung und einen Kurs für ihre weitere Skalierung in einer breiteren Gemeinschaft von Spezialisten.

Die Kategorie solcher Entwickler wird der Funktionalität der Algorithmen ihrer Ideen mehr Aufmerksamkeit schenken und die Routinearbeit loswerden, die in der imperativen Programmierung vorhanden ist.

Wo es eingesetzt wird und für wen es geeignet ist

Der geeignetste Ort für eine Bewerbung sind Startups und kleine Projekte.

Startups profitieren von der hohen Entwicklungsgeschwindigkeit und dem sofortigen Feedback der Benutzer, sodass die meisten neuen Projekte auf diese Weise durchgeführt werden.

Wichtig ist, dass es bei kleinen Projekten oft wichtiger ist, das Budget einzuhalten.

Anstelle eines Epilogs

Basierend auf dem Vorstehenden wurde der logische Kern des Tools mit Schnittstellenabstraktion für die funktionale Programmierung von Steuerprozessen von Hardwarekomponenten auf binäre Logik entwickelt, einschließlich der medialen Kapselung von Befehlen:

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *