J'ai vraiment du mal à comprendre la différence entre procédure y fonctionnel paradigmes de programmation.
Voici les deux premiers paragraphes de l'entrée de Wikipedia sur programmation fonctionnelle :
En informatique, la programmation fonctionnelle programmation fonctionnelle est un paradigme de programmation qui traite le calcul comme une l'évaluation de fonctions mathématiques et évite l'état et les données mutables. Elle met l'accent sur l'application de fonctions, contrairement à la style de programmation impératif, qui qui met l'accent sur les changements d'état. La programmation fonctionnelle trouve ses racines dans le lambda calculus, un système formel développé dans les années 1930 pour étudier la définition des fonctions, leur application de fonctions et la récursion. De nombreux langages de programmation fonctionnels peuvent être considérés comme des élaborations du lambda calculus.
En pratique, la différence entre une fonction mathématique et la notion de d'une "fonction" utilisée en programmation est que les fonctions impératives fonctions peuvent avoir des effets secondaires, en changeant la valeur de l'état du programme. De ce fait, elles manquent de transparence référentielle référentielle, c'est-à-dire que la même expression langage peut donner lieu à des valeurs valeurs différentes à des moments différents, selon l'état du programme en cours d'exécution. A l'inverse, dans un code fonctionnel, la valeur de sortie d'une fonction dépend uniquement des arguments qui sont entrés à la fonction, de sorte que l'appel d'une fonction
f
deux fois avec la même valeur pour un argumentx
produira le même résultatf(x)
les deux fois. Élimination de effets secondaires peut rendre beaucoup plus facile de comprendre et de prédire le comportement d'un programme, ce qui est l'une des principales motivations pour le développement de la programmation fonctionnelle.
Au paragraphe 2, où il est dit
À l'inverse, dans le code fonctionnel, la valeur de sortie d'une fonction ne dépend que des arguments qui sont entrés dans la fonction, de sorte que l'appel d'une fonction
f
deux fois avec la même valeur pour un argumentx
produira le même résultatf(x)
les deux fois.
N'est-ce pas exactement le même cas pour la programmation procédurale ?
Qu'est-ce qu'il faut rechercher dans le procédural par rapport au fonctionnel pour se démarquer ?
1 votes
Le "Charmant Python : Functional Programming in Python" d'Abafei était cassé. Voici un bon ensemble de liens : ibm.com/developerworks/linux/library/l-prog/index.html ibm.com/developerworks/linux/library/l-prog2/index.html
0 votes
L'attribution de noms en est un autre aspect. Par exemple, en JavaScript et en Common Lisp, nous utilisons le terme "fonction" même si les effets secondaires sont autorisés, alors qu'en Scheme, la même chose est systématiquement appelée "procédure". Une fonction CL qui est pure peut être écrite comme une procédure Scheme fonctionnelle pure. Presque tous les livres sur Scheme utilisent le terme procédure car c'est le terme utilisé dans la norme et cela n'a rien à voir avec le fait qu'il s'agisse d'une procédure ou d'une fonction.