Je n'ai jamais vu cette définition donnée ailleurs, mais je pense qu'elle résume assez bien les différences données ici :
Fonctionnel La programmation est axée sur expressions
Procédure La programmation est axée sur déclarations
Les expressions ont des valeurs. Un programme fonctionnel est une expression dont la valeur est une séquence d'instructions à exécuter par l'ordinateur.
Les déclarations n'ont pas de valeurs et modifient plutôt l'état d'une machine conceptuelle.
Dans un langage purement fonctionnel, il n'y aurait pas d'énoncés, dans le sens où il n'y a aucun moyen de manipuler l'état (il pourrait toujours y avoir une construction syntaxique appelée "énoncé", mais à moins qu'elle ne manipule l'état, je ne l'appellerais pas un énoncé dans ce sens). Dans un langage purement procédural, il n'y aurait pas d'expressions, tout serait une instruction qui manipule l'état de la machine.
Haskell serait un exemple de langage purement fonctionnel car il n'y a aucun moyen de manipuler l'état. Le code machine serait un exemple de langage purement procédural, car tout dans un programme est une instruction qui manipule l'état des registres et de la mémoire de la machine.
La partie déroutante est que la grande majorité des langages de programmation contiennent ambos des expressions et des déclarations, ce qui vous permet de mélanger les paradigmes. Les langages peuvent être classés comme plus fonctionnels ou plus procéduraux en fonction de la mesure dans laquelle ils encouragent l'utilisation des instructions par rapport aux expressions.
Par exemple, le C serait plus fonctionnel que le COBOL parce qu'un appel de fonction est une expression, alors que l'appel d'un sous-programme en COBOL est une instruction (qui manipule l'état des variables partagées et ne renvoie pas de valeur). Python serait plus fonctionnel que C car il permet d'exprimer la logique conditionnelle sous forme d'expression en utilisant une évaluation en circuit court (test && path1 || path2 par opposition aux instructions if). Scheme serait plus fonctionnel que Python parce que tout dans Scheme est une expression.
Vous pouvez toujours écrire dans un style fonctionnel dans un langage qui encourage le paradigme procédural et vice versa. Il est simplement plus difficile et/ou plus délicat d'écrire dans un paradigme qui n'est pas encouragé par le langage.
0 votes
Wikipedia implique que la PF est un sous-ensemble (c'est-à-dire qu'elle est toujours) de la programmation déclarative, mais que n'est pas vrai et confond la taxonomie de l'IP et du DP. .