Was ist eine erstklassige Funktion?

"Erstklassige Funktion" ist ein Begriff, der in der Computerprogrammierung und in der Informatik auf eine Computerprogrammiersprache angewendet werden kann, wenn die Behandlung von Funktionen einer Reihe von Richtlinien entspricht, obwohl der volle Umfang und die Tiefe dieser Richtlinien nicht formal vereinbart sind . Um eine erstklassige Funktions-Computerprogrammiersprache zu haben, muss vor allem die Möglichkeit unterstützt werden, Funktionen als Argumente an andere Funktionen zu übergeben. Eine Funktion muss auch einer Variablen zugewiesen werden können, damit sie gespeichert werden kann. Andere Eigenschaften, die verwendet werden, um zu bestimmen, was eine erstklassige Funktion ausmacht, umfassen die Fähigkeit, eine Funktion zur Laufzeit dynamisch zu generieren, und die Fähigkeit der Sprache, eine Funktion als Rückgabewert einer anderen Funktion zu haben. Sprachen, die eine erstklassige Funktionsarchitektur unterstützen, ermöglichen ein hohes Maß an Abstraktion und stellen in einigen Fällen auch einen Mechanismus für die dynamische Codegenerierung zur Laufzeit bereit.

Wenn der Begriff "Funktion" in einem lose definierten Sinne verwendet wird, ist das Konzept der Übergabe einer Funktion innerhalb eines Programms durch Variablen nicht unbedingt auf Sprachen beschränkt, die eine erstklassige Funktionsunterstützung von Haus aus implementieren. Die Möglichkeit, Codeblöcke an Funktionen zu übergeben oder nicht dynamischen Code von einer Funktion zurückzugeben, kann in vielen Programmiersprachen über verschiedene Mechanismen problemlos durchgeführt werden. Ein strenger Bestandteil der Definition einer erstklassigen Funktionssprache ist jedoch, dass die Behandlung von Funktionen als Variablen von Haus aus erfolgen muss, ohne dass Metadaten wie bedingte Definitionen verwendet werden müssen und ohne dass ein Compiler aufgerufen werden muss, um ein Teil von neu zu kompilieren Code. Der Ausdruck "Funktion" wird auch verwendet, um unabhängige Codeblöcke zu bezeichnen, die für sich selbst aufgerufen werden, was bedeutet, dass sie nicht die Codeblöcke enthalten, die in objektorientierten Programmiersprachen als Methoden bekannt sind, oder die Blöcke, die manchmal in anderen Sprachen Prozeduren genannt werden.

Wenn eine Sprache so konzipiert ist, dass sie erstklassigen Funktionscode ermöglicht, können einige Entwurfsmuster direkter als in anderen Sprachen implementiert werden. Eine Funktion kann eine Funktion als Variable empfangen und dann eine neue Funktion erstellen und die neue Funktion an den aufrufenden Code zurückgeben. Auf diese Weise wird ein Mechanismus für die Laufzeiterstellung von Programmcode erstellt. Dies kann auch die Verwendung von vom Benutzer in Echtzeit eingegebenen Funktionen innerhalb der Sprache ohne die Verwendung von Prozessen wie Reflektion oder Auswertung ermöglichen.

Einige der grundlegendsten Verwendungen für erstklassige Funktionsarchitekturen umfassen das Erstellen allgemeiner Funktionen, die leicht wiederverwendet werden können, und die Implementierung rekursiver mathematischer Algorithmen, die ihre Gleichungen im Verlauf selbst modifizieren können. Eine ähnliche, weiter fortgeschrittene Anwendung für erstklassige Mechanismen ist die Implementierung von Polymorphismus in Sprachen, in denen er nicht speziell implementiert ist. Auf diese Weise können Funktionen mit der gleichen Funktionssignatur aufgerufen werden, aber Code basierend auf dem Kontext, in dem er aufgerufen wurde, ausgeführt werden, indem manchmal eine Schlüsselfunktion an die polymorphe Funktion übergeben wird.

ANDERE SPRACHEN

War dieser Artikel hilfreich? Danke für die Rückmeldung Danke für die Rückmeldung

Wie können wir helfen? Wie können wir helfen?