Question

Simple question, mais j'entends souvent ces trois termes définis avec une telle férocité, mais qui me ont été connus pour signifier différentes choses au fil des ans.

Quelles sont les définitions de "corriger" des "procédures", "méthodes", "fonction", "Sous-programmes", etc?

Était-ce utile?

La solution

Je vais avec une autre réponse ici: en pratique, il n'y a vraiment pas de différence , à la légère exception « méthode » habituellement fait référence à un sous-programme associé à un objet dans les langues OO.

Les termes « procédure, fonction, sous-programme, sous-programme et la méthode » tout cela veut dire vraiment la même chose: un sous-programme appelable dans un programme plus vaste. Mais il est difficile de trouver une définition qui capture tous les usages des variantes de ces termes, car ils ne sont pas utilisés systématiquement dans les langues ou les paradigmes de programmation.

On peut dire une fonction retourne une valeur. Eh bien, la fonction C suivante ne retourne pas de valeur:

void f() { return; }

... mais je doute que vous trouver quelqu'un qui l'appellerait une procédure.

Bien sûr, Pascal, les procédures ne renvoient pas les valeurs et les fonctions renvoient des valeurs, mais est simplement le reflet de la façon dont Pascal a été conçu. En Fortran, une fonction retourne une valeur et un sous-programme renvoie des valeurs multiples. Pourtant, rien de tout cela nous permet vraiment de trouver une définition « universelle » pour ces termes.

En fait, le terme « programmation procédurale » fait référence à toute une classe de langues, y compris C, Fortran et Pascal, dont un seul utilise en fait le terme « procédure » à tout moyen.

Donc, rien de tout cela est vraiment cohérent. La seule exception est la « méthode » sans doute, ce qui semble être utilisé presque exclusivement avec des langages OO, se référant à une fonction qui est associée à un objet. Bien que, même ce n'est pas toujours cohérente. C ++, par exemple, utilise habituellement le terme « fonction membre » plutôt que la méthode, (même si le terme « méthode » a rampé dans le C ++ vernaculaire parmi les programmeurs.)

Le point est, rien de tout cela est vraiment cohérent. Elle reflète simplement la terminologie employée par tous les langues sont en vogue à l'époque.

Autres conseils

Une fonction renvoie une valeur, mais un procédure ne fonctionne pas.

Procédé est similaire à une fonction, mais est interne partie d'une classe. Le terme de méthode est utilisé presque exclusivement dans la programmation orientée objet.

A est quelque chose qui prend un groupe d'entrées et renvoie une ou plusieurs valeurs de Fonction . Si les valeurs renvoyées sont entièrement déterminées par les entrées, et la fonction ne pas avoir d'effets secondaires (exploitation forestière, peut-être, ou de causer des changements d'état en dehors de lui-même), il appelle une fonction pure.

Une procédure est une fonction qui ne retourne pas de valeur. En particulier, cela signifie qu'une procédure ne peut causer des effets secondaires. (Cela pourrait inclure un paramètre d'muter entrée!)

Procédé est une fonction qui se referme sur un ensemble de variables, qui est une fermeture . Il prend des paramètres zéro ou plusieurs entrées, a accès à cet ensemble de variables, et renvoie zéro ou plusieurs valeurs. Dans les langues OO ces méthodes sont attachés à des objets ou des classes.

Dans la plupart des langages OO grand public, ces variables fermées-over sont appelés les champs membres, ou les variables d'instance, d'un objet. Un procédé peut être une pure fonction, une fonction ou d'une procédure impure.

Ce dernier conduit de définition à = objet struct + fermetures correspondance.

Bruce a bonne réponse . Je voudrais ajouter, sémantiquement:

  • Une procédure devrait « faire quelque chose » aux arguments ou provoquer un autre effet secondaire (par exemple printf)
  • fonction A doit (a) répondre à une question sur les arguments, ou (b) calculer une nouvelle valeur sur la base des arguments
  • Une méthode de fonction doit répondre à une question sur l'état de l'objet
  • Procédé de procédure doit changer l'état de l'objet

bien détaillé des réponses ci-dessus; la nouvelle est qu'ils vont toutes les saveurs de sous-routines; ce qu'on entend par chaque terme variera en fonction du contexte de langage de programmation

en général, les fonctions renvoient une valeur, mais ils n'ont pas

méthodes sont un terme générique POO actuellement

en SQL, procédures stockées ont des sorties, mais généralement ne retournent un code d'erreur, tandis que les fonctions définies par l'utilisateur doivent renvoyer une valeur (qui peut être un résultat de jeu)

encore une fois, la différence précise entre ces termes dépend de qui vous parlez!

80% de maîtrise est directement liée à la familiarité avec la nomenclature,

95% de la productivité est la capacité d'identifier ce qui est utile au moment malgré les termes utilisés pour décrire

Je préfère à peu près les appeler toutes les méthodes c #, sauf quand j'utilisé MSSQL nous avons eu de sproc, mais bien sûr, maintenant, nous utilisons Postgres et ils sont appelés fonctions.

Licencié sous: CC-BY-SA avec attribution
scroll top