Je me demande quelles sont les différences spécifiques dans la terminologie que nous utilisons pour regrouper les parties de code liées. J'ai parfois vu les termes utilisés de manière interchangeable: de nombreux langages OO utilisent même le mot-clé "fonction" pour définir une méthode. (Pourquoi?)
Si vous vouliez être précis, quelles sont les significations spécifiques de chacun? Ou s'agit-il simplement de la façon dont chaque langue choisit de l'appeler?
terminology
Andrew Vit
la source
la source
function
pour les méthodes sont JavaScript et PHP. Les deux utilisent le même mot-clé pour les non-méthodes (fonctions gratuites), et dans le cas de JavaScript, il n'y a pas vraiment de distinction entre les fonctions et les méthodes, du moins pas au niveau du langage.Sub
est unFunction
sans valeur de retour. DansPython
vous pouvez avoir une fonction qui ne fait partie d'aucune classe, donc ce n'est pas une méthode. Vous pouvez également déclarer des fonctions dans des fonctions, et vous pouvez également le faire en C #. Parfois, ils ont des noms différents pour la même raison que les pommes et les ananas: parce qu'ils sont différents.Réponses:
sous-programme, le sous-programme
"sous-programme" provient probablement du langage d'assemblage. Certains processeurs incluent des instructions pour prendre en charge les sous-programmes comme moyen d'organiser le code et de réutiliser des sections communes de code. Par exemple, le processeur 6502 avait des instructions JSR (saut vers le sous-programme) et RTS (retour du sous-programme). Je me souviens qu'il était également beaucoup utilisé dans la programmation structurée, dans laquelle un programme est une hiérarchie d'unités de code qui étaient parfois appelées sous-programmes ou sous-programmes. OMI, ce sont les termes les plus génériques pour une unité de code à laquelle le contrôle est temporairement transféré dans le but de terminer une tâche donnée.
fonction, procédure
Celles-ci sont souvent utilisées de manière interchangeable, mais dans certaines langues, il y a une distinction. En Pascal, une fonction est un sous-programme qui renvoie une valeur, tandis qu'une procédure est un sous-programme qui ne le fait pas. En C et dans les langages apparentés, chaque sous-programme a un type de retour (même si c'est le cas
void
), il n'y a donc pas de distinction.méthode, fonction membre
Ce sont deux noms pour la même chose - essentiellement une fonction qui est associée à une classe ou un objet donné.
opérateur
Chaque langue a un ensemble d'opérateurs intégrés. Dans certains langages, comme C ++, les opérateurs sont des fonctions qui peuvent être remplacées (ie remplacées) et / ou surchargées (ie définies pour de nouveaux types).
fonction anonyme
Il s'agit d'une fonction sans nom. Les fonctions anonymes sont essentiellement des blocs de code qui peuvent être attribués à des variables ou passés en tant que paramètres pour une utilisation ultérieure, par exemple en tant que routine d'achèvement.
fermeture, expression lambda, bloc
Une fermeture est un morceau de code lié à un ensemble de variables. Je pense que les fermetures sont des fonctions anonymes et du contexte.
la source
2 + 2
. Il existe de petites exceptions comme 1-arg comme++arg
(préfixe) ouarg++
(postfix). Bien que je n'aie pas vu beaucoup d'opérateurs postfix ..Cela dépend des langues, de ce que vous pouvez en faire
AFAIK, dans Basic, si vous appelez quelque chose, qui ne renvoie rien, mais effectue un travail avec des effets secondaires, comme l'impression, l'écriture dans un fichier ou la modification d'une variable globale, cela s'appelait une procédure.
S'il renvoie quelque chose, il a été appelé une fonction.
Dans un langage OOP comme Java, j'ai rarement rencontré le terme «fonction», mais «méthode», et il a été enseigné que les fonctions sont des choses qui sont globales et peuvent être appelées par tout le monde.
Dans la scala fonctionnelle et en langage OOP, une méthode n'est pas appelée fonction, mais vous pouvez passer une telle chose à une autre méthode, puis elle devient une fonction.
Un sous-programme est une routine, qui est appelée par une autre routine, à ma connaissance.
En résumé, je ne pense pas qu'il existe une définition concise de toutes les langues et plus encore des paradigmes. Vous devez tenir compte de la culture spécifique, vous en êtes, si vous utilisez ces termes - vous devriez peut-être introduire votre définition en premier.
la source
Je dirais que selon le contexte, tous ces mots pourraient signifier la même chose ou des choses très différentes, par exemple ce que Caleb a écrit (mais il y a plus, c'est-à-dire des langages où les opérateurs sont des fonctions de première classe, etc.). Il est donc difficile de donner une définition spécifique, et sage de ne pas en supposer trop à moins que le contexte (langage de programmation) ne soit connu.
la source