Ich frage mich, was die spezifischen Unterschiede in der Terminologie sind, die wir zum Gruppieren verwandter Codeteile verwenden. Ich habe manchmal gesehen, dass die Begriffe synonym verwendet wurden: Viele OO-Sprachen verwenden sogar das Schlüsselwort "Funktion", um eine Methode zu definieren. (Warum?)
Wenn Sie genau sein wollten, was sind die spezifischen Bedeutungen von jedem? Oder ist es einfach so, wie jede Sprache es nennt?
terminology
Andrew Vit
quelle
quelle
function
sind JavaScript und PHP. Beide verwenden dasselbe Schlüsselwort für Nicht-Methoden (freie Funktionen), und bei JavaScript wird nicht wirklich zwischen Funktionen und Methoden unterschieden, zumindest nicht auf Sprachebene.Sub
ist einFunction
Wert ohne Rückgabewert. In könnenPython
Sie eine Funktion haben, die nicht Teil einer Klasse ist, also keine Methode. Sie können Funktionen auch innerhalb von Funktionen deklarieren, und dies können Sie auch in C # tun. Manchmal haben sie unterschiedliche Namen aus demselben Grund wie Äpfel und Ananas: weil sie unterschiedlich sind.Antworten:
Unterprogramm, Unterprogramm
"Unterprogramm" stammt wahrscheinlich aus der Assemblersprache. Einige Prozessoren enthalten Anweisungen zur Unterstützung von Unterprogrammen, um Code zu organisieren und allgemeine Codeabschnitte wiederzuverwenden. Zum Beispiel hatte der 6502-Prozessor JSR- (Sprung zum Unterprogramm) und RTS- (Rückkehr vom Unterprogramm) Anweisungen. Ich erinnere mich, dass es auch häufig in der strukturierten Programmierung verwendet wird, in der ein Programm eine Hierarchie von Codeeinheiten ist, die manchmal als Unterprogramme oder Unterprogramme bezeichnet wurden. IMO, dies sind die allgemeinsten Begriffe für eine Codeeinheit, auf die die Steuerung vorübergehend übertragen wird, um eine bestimmte Aufgabe zu erledigen.
Funktion, Prozedur
Diese werden oft synonym verwendet, aber in einigen Sprachen gibt es einen Unterschied. In Pascal ist eine Funktion ein Unterprogramm, das einen Wert zurückgibt, während eine Prozedur ein Unterprogramm ist, das dies nicht tut. In C und verwandten Sprachen hat jedes Unterprogramm einen Rückgabetyp (auch wenn dies der Fall ist
void
), daher gibt es keinen Unterschied.Methode, Elementfunktion
Dies sind zwei Namen für dasselbe Objekt - im Wesentlichen eine Funktion, die einer bestimmten Klasse oder einem bestimmten Objekt zugeordnet ist.
Operator
Jede Sprache verfügt über eine Reihe integrierter Operatoren. In einigen Sprachen, wie z. B. C ++, sind Operatoren Funktionen, die überschrieben (dh ersetzt) und / oder überladen (dh für neue Typen definiert) werden können.
anonyme Funktion
Dies bezieht sich auf eine Funktion ohne Namen. Anonyme Funktionen sind im Wesentlichen Codeblöcke, die Variablen zugewiesen oder als Parameter für die spätere Verwendung übergeben werden können, beispielsweise als Abschlussroutine.
Closure, Lambda-Ausdruck, Block
Ein Closure ist ein Codeabschnitt, der an eine Reihe von Variablen gebunden ist. Ich stelle mir Schließungen als anonyme Funktionen plus Kontext vor.
quelle
2 + 2
. Es gibt kleine Ausnahmen wie 1-arg wie++arg
(Präfix) oderarg++
(Postfix). Obwohl ich nicht viele Postfix-Operatoren gesehen habe ..Es hängt von den Sprachen ab, was Sie damit machen können
AFAIK, in Basic, wenn Sie etwas aufrufen, das nichts zurückgibt, aber einen Job mit Nebenwirkungen wie Drucken, Schreiben in eine Datei oder Ändern einer globalen Variablen ausführt, wurde dies als Prozedur bezeichnet.
Wenn es etwas zurückgibt, wurde es eine Funktion genannt.
In einer OOP-Sprache wie Java traf ich selten den Begriff "Funktion", sondern "Methode", und es wurde gelehrt, dass Funktionen Dinge sind, die global sind und von jedem aufgerufen werden können.
In der Funktions- und OOP-Sprache wird eine Methode nicht als Funktion bezeichnet, aber Sie können so etwas an eine andere Methode übergeben, und dann wird sie zu einer Funktion.
Eine Unterroutine ist nach meinem Verständnis eine Routine, die von einer anderen Routine aufgerufen wird.
Zusammenfassend glaube ich nicht, dass es eine präzise Definition für alle Sprachen und mehr noch für Paradigmen gibt. Wenn Sie diese Begriffe verwenden, müssen Sie die spezifische Kultur berücksichtigen, in der Sie sich befinden. Vielleicht sollten Sie zuerst Ihre Definition einführen.
quelle
Ich würde sagen, je nach Kontext könnten all diese Wörter dasselbe oder ganz andere Dinge bedeuten, zum Beispiel was Caleb geschrieben hat (aber es gibt noch mehr, dh Sprachen, in denen Operatoren erstklassige Funktionen usw. sind). Es ist daher schwierig, eine bestimmte Definition zu geben, und es ist ratsam, nicht zu viel anzunehmen, es sei denn, der Kontext (Programmiersprache) ist bekannt.
quelle