La difference
Fermé
moli.Bym
Messages postés
29
Date d'inscription
samedi 10 mars 2012
Statut
Membre
Dernière intervention
16 mars 2013
-
29 avril 2012 à 12:44
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 29 avril 2012 à 14:24
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 29 avril 2012 à 14:24
A voir également:
- La difference
- Ce fichier contient l'historique des livres empruntés à la bibliothèque. combien de titres différents contient-il ? ✓ - Forum Excel
- Difference tcp udp - Guide
- Différence entre bloquer et supprimer sur whatsapp ✓ - Forum Snapchat
- Différence entre appel masqué et numéro privé - Forum Mobile
- Difference macbook pro et air - Guide
2 réponses
Joe's-HELP
Messages postés
1976
Date d'inscription
vendredi 18 septembre 2009
Statut
Membre
Dernière intervention
4 août 2017
544
29 avril 2012 à 13:02
29 avril 2012 à 13:02
Bonjour.
Une langue fonctionnelle (idéalement) te permet d'écrire une fonction mathématique, c'est-à-dire une fonction qui prend des arguments de n et renvoie une valeur. Si le programme est exécuté, cette fonction est évaluée.
Un langage procédural, d'autre part, exécute une série d'étapes séquentielles, où le programme fonctionnel serait niché. Il y a une manière de transformer la logique séquentielle en logique fonctionnelle appelée la suite passant le style.
Par conséquent, un programme purement fonctionnel rapporte toujours la même valeur pour une entrée, et l'ordre de l'évaluation n'est pas bien défini ; ce qui signifie qu'il est difficile de modeler des valeurs incertaines comme l'entrée d'utilisateur ou des valeurs aléatoires dans des langues purement fonctionnelles.
@+.
Une langue fonctionnelle (idéalement) te permet d'écrire une fonction mathématique, c'est-à-dire une fonction qui prend des arguments de n et renvoie une valeur. Si le programme est exécuté, cette fonction est évaluée.
Un langage procédural, d'autre part, exécute une série d'étapes séquentielles, où le programme fonctionnel serait niché. Il y a une manière de transformer la logique séquentielle en logique fonctionnelle appelée la suite passant le style.
Par conséquent, un programme purement fonctionnel rapporte toujours la même valeur pour une entrée, et l'ordre de l'évaluation n'est pas bien défini ; ce qui signifie qu'il est difficile de modeler des valeurs incertaines comme l'entrée d'utilisateur ou des valeurs aléatoires dans des langues purement fonctionnelles.
@+.
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 004
Modifié par KX le 29/04/2012 à 14:26
Modifié par KX le 29/04/2012 à 14:26
Avec une programmation procédurale on manipule des variables en mémoire, et on en modifie les valeurs dans toute une série d'instructions pour arriver au résultat. On aura donc tendance à privilégier les boucles pour modifier plusieurs fois les données.
Avec une programmation fonctionnelle on ne manipule que des valeurs qui passent directement des paramètres vers le résultat de la fonction. Tout passe donc dans la pile, ce qui incite donc plutôt une programmation récursive.
De plus la programmation fonctionnelle permet d'utiliser le lambda-calcul, c'est à dire de passer en argument des valeurs, (parfois d'autres fonctions) sans en connaitre le type, ce qui n'est pas possible en procédural puisque cette valeur devrait être stocké en mémoire et donc avoir un type précis, ce qui n'est pas nécessaire en fonctionnel.
Cela donne des programmes généralement assez différents.
Exemple : calcul de la valeur minimal d'un tableau (d'entiers de type int) en Java
Exemple : calcul de la valeur minimal d'une liste (d'éléments quelconque) en Caml
Remarque : aucun de ces deux codes ne prend en compte le cas où le tableau (ou la liste) est initialement vide, alors que les deux vont planter dans ce cas particulier.
Cependant en Caml, ce cas particulier est signalé dès la conception du code...
La confiance n'exclut pas le contrôle
Avec une programmation fonctionnelle on ne manipule que des valeurs qui passent directement des paramètres vers le résultat de la fonction. Tout passe donc dans la pile, ce qui incite donc plutôt une programmation récursive.
De plus la programmation fonctionnelle permet d'utiliser le lambda-calcul, c'est à dire de passer en argument des valeurs, (parfois d'autres fonctions) sans en connaitre le type, ce qui n'est pas possible en procédural puisque cette valeur devrait être stocké en mémoire et donc avoir un type précis, ce qui n'est pas nécessaire en fonctionnel.
Cela donne des programmes généralement assez différents.
Exemple : calcul de la valeur minimal d'un tableau (d'entiers de type int) en Java
int minimum(int[] tab)
{
int min = tab[0];
for (int i=1; i<tab.length; i++)
if (tab[i]<min)
min = tab[i];
return min;
}
Exemple : calcul de la valeur minimal d'une liste (d'éléments quelconque) en Caml
let rec min_aux x = function
|[] -> x
|t::q -> if (t<x)
then min_aux t q
else min_aux x q;;
let minimum = function t::q -> min_aux t q;;
Remarque : aucun de ces deux codes ne prend en compte le cas où le tableau (ou la liste) est initialement vide, alors que les deux vont planter dans ce cas particulier.
Cependant en Caml, ce cas particulier est signalé dès la conception du code...
La confiance n'exclut pas le contrôle