Da ist ein Unterschied. Wenn Sie sagen, dass eine Sprache erstklassige Funktionen hat, bedeutet dies, dass die Sprache Funktionen als Werte behandelt - Sie können eine Funktion einer Variablen zuweisen, sie weitergeben usw. Funktionen höherer Ordnung sind Funktionen, die mit anderen Funktionen arbeiten, dh dass sie eine oder mehrere Funktionen als Argument verwenden und auch eine Funktion zurückgeben können.
Das Konzept „höherer Ordnung“ kann auf Funktionen im Allgemeinen angewendet werden, wie Funktionen im mathematischen Sinne. Das „erstklassige“ Konzept hat nur mit Funktionen in Programmiersprachen zu tun. Es wird selten verwendet, wenn auf eine Funktion verwiesen wird, beispielsweise auf eine „erstklassige Funktion“. Es ist viel üblicher zu sagen, dass „eine Sprache erstklassige Funktionsunterstützung hat / nicht hat“.
Die beiden Dinge sind eng miteinander verbunden, da es schwer vorstellbar ist, dass eine Sprache mit erstklassigen Funktionen keine Funktionen höherer Ordnung unterstützt, und umgekehrt eine Sprache mit Funktionen höherer Ordnung, jedoch ohne erstklassige Funktionsunterstützung.
int
oderchar
in dem Sinne unterlegen sind, dass sie nicht explizit (durch einen Funktionskörper) definiert werden können, wo immer Sie möchten.Erstklassige Funktionen sind Funktionen, die wie ein Objekt behandelt werden (oder einer Variablen zugewiesen werden können).
Funktionen höherer Ordnung sind Funktionen, die mindestens eine erstklassige Funktion als Parameter verwenden oder mindestens eine erstklassige Funktion zurückgeben.
quelle
Sie sind anders.
Erstklassige Funktionen
Werte in einer Sprache, die durchgehend einheitlich behandelt werden, werden als "First Class" bezeichnet. Sie können in Datenstrukturen gespeichert, als Argumente übergeben oder in Kontrollstrukturen verwendet werden.
Sprachen, die Werte mit Funktionstypen unterstützen und diese wie Nichtfunktionswerte behandeln, können als "erstklassige Funktionen" bezeichnet werden.
Funktionen höherer Ordnung
Eine der Konsequenzen erstklassiger Funktionen ist, dass Sie eine Funktion als Argument an eine andere Funktion übergeben können sollten. Die letztere Funktion ist jetzt "höherer Ordnung". Es ist eine Funktion, die eine Funktion als Argument verwendet.
Das kanonische Beispiel ist "Karte"
Das heißt, es benötigt eine Funktion und ein Array und gibt ein neues Array mit der auf jedes Element angewendeten Funktion zurück.
Funktionssprachen - Sprachen, in denen Funktionen das Hauptmittel zum Erstellen von Programmen sind - haben alle erstklassige Funktionen. Die meisten haben auch Funktionen höherer Ordnung (sehr seltene Ausnahmen sind Sprachen wie Excel, die als funktional bezeichnet werden können, aber keine Funktionen höherer Ordnung).
quelle
Beachten Sie zusätzlich zu den vorherigen Antworten, dass eine Sprache mit erstklassigen Funktionen automatisch den Ausdruck von Funktionen höherer Ordnung ermöglicht (da Sie Funktionen wie Parameter wie jeden anderen Wert übergeben können).
Auf der anderen Seite können Sie sich Sprachen vorstellen, die Funktionen höherer Ordnung unterstützen, aber Funktionen nicht erstklassig machen (und bei denen Parameter, die Funktionen sind, speziell behandelt werden und sich von "normalen" Wertparametern unterscheiden).
Das Vorhandensein erstklassiger Funktionen (als Sprachmerkmal) impliziert also das Vorhandensein von Funktionen höherer Ordnung, aber nicht umgekehrt.
quelle
First Class Funktionen können:
High Order Function ist eine Funktion, die eine andere Funktion zurückgibt.
Beispielsweise:
quelle
Erstklassige Funktionen bedeuten alles, was Sie mit anderen Typen (Variablen, Booleschen Werten, Zahlen ...) tun können. Sie können dies mit Funktionen tun.
Weisen Sie sie beispielsweise Variablen zu, geben Sie sie weiter und erstellen Sie sie im laufenden Betrieb.
quelle