30 lines
2.4 KiB
Markdown
30 lines
2.4 KiB
Markdown
up:: [[programmation.fonction|fonction]], [[programmation.procédure|procédure]]
|
|
#informatique
|
|
|
|
> [!definition] Différence entre fonction et procédure
|
|
> La fonction à une connotation plus mathématique, la procédure une connotation plus programmatique
|
|
> Les différences exactes peuvent changer selon le contexte.
|
|
> Voici les principales distinctions :
|
|
> - les fonctions sont [[fonction pure|pures]], les procédures peuvent avoir des [[programmation.effet de bord|effets de bord]]
|
|
> - cependant, certains auteurs parlent aussi de fonctions-[[fonction pure|non-pures]]
|
|
> - les procédures ne retournent pas de valeurs, les fonctions retournent une valeur
|
|
> - notamment, dans le cadre de la [[paradigme programmation impérative|programmation impérative]]
|
|
> - cependant, certains auteurs utilisent *procedure* pour des fonctions
|
|
> - les fonctions sont le concept mathématique, les procédures sont l'implémentation programmatique de ce concept
|
|
> - cependant, on parle souvent de fonction pour le concept implémenté
|
|
> - les fonction sont de la connaissance déclarative, les procédures de la connaissance impérative
|
|
> - définition dans [[abelsonStructureInterpretationComputer1996]]
|
|
> - les fonctions sont définies par le comportement qu'elles doivent avoir
|
|
> - exemple: $\begin{align} \sqrt{ \cdot } \;:\; & \mathbb{R} \to \mathbb{R}^{+}\\ &x \mapsto y \text{ tel que } y^{2} = x \end{align}$
|
|
> - les procédures sont définies par la façon de les calculer
|
|
> - exemple: une définition de la [[fonction racine carrée|racine carrée]] en approximation par la [[méthode de Newton]]
|
|
^definition
|
|
|
|
> [!cite]+ [Structure and Interpretation of Computer Programs](zotero://select/groups/5383243/items/BKPQ7QSM) - [Page 28](zotero://open-pdf/groups/5383243/items/KNH433ZX?page=56&annotation=88QKQ5JP)
|
|
> The contrast between function and procedure is a reflection of the general distinction between describing properties of things and describing how to do things, or, as it is sometimes referred to, the distinction between declarative knowledge and imperative knowledge. In mathematics we are usually concerned with declarative (what is) descriptions, whereas in computer science we are usually concerned with imperative (how to) descriptions.
|
|
>
|
|
> > [!note] Notes
|
|
> > fonction : connaissance déclarative
|
|
> > procédure : connaissance impérative
|
|
> ^88QKQ5JPaKNH433ZXg5383243p56
|