Langage procédural, fonctionnel, impératif, structuré ?
Résolu/Fermé
Tupac900
Messages postés
43
Date d'inscription
mardi 11 décembre 2012
Statut
Membre
Dernière intervention
14 mars 2017
-
3 juil. 2014 à 04:50
peter - 31 août 2017 à 10:11
peter - 31 août 2017 à 10:11
A voir également:
- Langage fonctionnel vs langage impératif
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Udp vs tcp - Guide
- Langage pascal - Télécharger - Édition & Programmation
- Psp street vs psp 3000 - Forum PSP
4 réponses
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
3 juil. 2014 à 21:31
3 juil. 2014 à 21:31
Déjà, il n'y a pas de langage ceci ou langage cela. On parle de paradigme, ou de programmation, c'est la théorie. Le langage c'est la pratique et du coup c'est moins évident.
Par exemple avec le langage comme Java on peut utiliser à la fois la programmation structurée, procédurale, impérative, objet, agent, fonctionnelle. événementielle, itérative, récursive, etc.
Evidemment tous les programmes Java n'utilisent pas tout ces paradigmes, ce sont des morceaux de codes ici ou là qui vont être tantôt l'un ou l'autre, parfois entremêlés.
Du coup souvent dans les enseignements on apprend pas un langage en particulier, mais uniquement un concept de programmation ce langage là. En interdisant l'utilisation des autres paradigmes alors qu'ils existent.
Par exemple avec un langage à dominante fonctionnelle on utilisera plutôt le récursif et avec un langage procédural plutôt l'itératif. Et pourtant on peut croiser les deux la plupart du temps, et en pratique il serait une erreur de ne pas le faire.
Structuré : on découpe le code en morceaux plus petits, on parcourt le code de haut en bas et quand on passe à un autre morceau de code c'est toujours par le début qu'on commence.
Un langage qui utiliserait des label/goto n'est pas structuré par exemple.
Impératif : on décrit ce que l'on fait mécaniquement, il n'y a aucune part de choix qui n'appartient pas au développeur.
Par exemple une requête SQL n'est pas impérative, le SGBD fait comme il veut pour récupérer les données, de même pour le HTML, le navigateur internet est libre d'interpréter la page comme il veut.
Procédural : la structure du code est découpé en procédures (souvent appelées fonctions), l'ordre dans lequel ces fonctions sont appelées n'est pas important. On peut revenir pus haut dans le code pour appeler une autre fonction, voire s'appeler soit même. Généralement les fonctions peuvent avoir des paramètres et des résultats.
Fonctionnel : on manipule les fonctions comme des valeurs. On peut par exemple créer de nouvelles fonctions à partir d'autres fonctions, passer en paramètre d'une fonction une autre fonction etc. Idéalement on ne manipule que des fonctions pour produire une grosse fonction (le programme) auquel on passe les paramètres pour obtenir le résultat.
Un langage comme JavaScript utilise beaucoup le paradigme fonctionnel, même s'il peut aussi manipuler le reste des paradigmes. Le SQL pourrait être considéré comme idéalement fonctionnel.
Je crois avoir fait le tour de ceux qui te posaient problèmes, mais il y en a plein d'autres dont certains que l'on n'a pas encore inventé (ou du moins pas catégorisé).
Ce qu'il faut retenir c'est que ce sont surtout des considérations théoriques, une fois dans le code tout se mélange un peu et seules les grandes lignes ressortent, mais il ne faut pas s'y formaliser, car il est toujours possible de faire tout et n'importe quoi.
De toute façon au final, c'est l'ordinateur qui gère, la machine de Turing se fiche pas mal du paradigme utilisé, elle fera le traitement quoi qu'il lui en coûte (la mise en place d'un paradigme ou d'un autre peut évidement affecter le temps de calcul...)
Par exemple avec le langage comme Java on peut utiliser à la fois la programmation structurée, procédurale, impérative, objet, agent, fonctionnelle. événementielle, itérative, récursive, etc.
Evidemment tous les programmes Java n'utilisent pas tout ces paradigmes, ce sont des morceaux de codes ici ou là qui vont être tantôt l'un ou l'autre, parfois entremêlés.
Du coup souvent dans les enseignements on apprend pas un langage en particulier, mais uniquement un concept de programmation ce langage là. En interdisant l'utilisation des autres paradigmes alors qu'ils existent.
Par exemple avec un langage à dominante fonctionnelle on utilisera plutôt le récursif et avec un langage procédural plutôt l'itératif. Et pourtant on peut croiser les deux la plupart du temps, et en pratique il serait une erreur de ne pas le faire.
Structuré : on découpe le code en morceaux plus petits, on parcourt le code de haut en bas et quand on passe à un autre morceau de code c'est toujours par le début qu'on commence.
Un langage qui utiliserait des label/goto n'est pas structuré par exemple.
Impératif : on décrit ce que l'on fait mécaniquement, il n'y a aucune part de choix qui n'appartient pas au développeur.
Par exemple une requête SQL n'est pas impérative, le SGBD fait comme il veut pour récupérer les données, de même pour le HTML, le navigateur internet est libre d'interpréter la page comme il veut.
Procédural : la structure du code est découpé en procédures (souvent appelées fonctions), l'ordre dans lequel ces fonctions sont appelées n'est pas important. On peut revenir pus haut dans le code pour appeler une autre fonction, voire s'appeler soit même. Généralement les fonctions peuvent avoir des paramètres et des résultats.
Fonctionnel : on manipule les fonctions comme des valeurs. On peut par exemple créer de nouvelles fonctions à partir d'autres fonctions, passer en paramètre d'une fonction une autre fonction etc. Idéalement on ne manipule que des fonctions pour produire une grosse fonction (le programme) auquel on passe les paramètres pour obtenir le résultat.
Un langage comme JavaScript utilise beaucoup le paradigme fonctionnel, même s'il peut aussi manipuler le reste des paradigmes. Le SQL pourrait être considéré comme idéalement fonctionnel.
Je crois avoir fait le tour de ceux qui te posaient problèmes, mais il y en a plein d'autres dont certains que l'on n'a pas encore inventé (ou du moins pas catégorisé).
Ce qu'il faut retenir c'est que ce sont surtout des considérations théoriques, une fois dans le code tout se mélange un peu et seules les grandes lignes ressortent, mais il ne faut pas s'y formaliser, car il est toujours possible de faire tout et n'importe quoi.
De toute façon au final, c'est l'ordinateur qui gère, la machine de Turing se fiche pas mal du paradigme utilisé, elle fera le traitement quoi qu'il lui en coûte (la mise en place d'un paradigme ou d'un autre peut évidement affecter le temps de calcul...)
Tupac900
Messages postés
43
Date d'inscription
mardi 11 décembre 2012
Statut
Membre
Dernière intervention
14 mars 2017
16
Modifié par Tupac900 le 3/07/2014 à 17:04
Modifié par Tupac900 le 3/07/2014 à 17:04
Salut,
J'avais déjà regardé sur Wiki et d'autres sites mais j'ai l'impression qu'ils se contredisent tous surtout avec les langages procéduraux et fonctionnels (sur sur ce site par exemple ils assemblent la programmation fonctionnel à la programmation procédural ?).
Pour l'instant ce que j'ai compris :
Langage impérative : contient des déclarations de variables et des boucles.
Langage procédural : langage avec procédure donc fonctions etc... et qui peuvent être appelés à n'importe quel moment.
Langage structuré : langage constitué par bloc {} avec des instructions telles que if, when etc...
Langage fonctionnel : on ne peut pas changer la valeur des variables, des fonctions.
Je suis débutant donc il se peut que je dise n'importe quoi,
Pouvez-vous ensuite me dire si j'ai juste ou faux, merci :)
J'avais déjà regardé sur Wiki et d'autres sites mais j'ai l'impression qu'ils se contredisent tous surtout avec les langages procéduraux et fonctionnels (sur sur ce site par exemple ils assemblent la programmation fonctionnel à la programmation procédural ?).
Pour l'instant ce que j'ai compris :
Langage impérative : contient des déclarations de variables et des boucles.
Langage procédural : langage avec procédure donc fonctions etc... et qui peuvent être appelés à n'importe quel moment.
Langage structuré : langage constitué par bloc {} avec des instructions telles que if, when etc...
Langage fonctionnel : on ne peut pas changer la valeur des variables, des fonctions.
Je suis débutant donc il se peut que je dise n'importe quoi,
Pouvez-vous ensuite me dire si j'ai juste ou faux, merci :)
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
3 juil. 2014 à 07:52
3 juil. 2014 à 07:52
Bonjour,
Regarde Wikipédia pour commencer.
Regarde Wikipédia pour commencer.
Tupac900
Messages postés
43
Date d'inscription
mardi 11 décembre 2012
Statut
Membre
Dernière intervention
14 mars 2017
16
4 juil. 2014 à 18:32
4 juil. 2014 à 18:32
Salut,
Ok merci j'ai beaucoup mieux compris maintenant :).
Bonne journée
Ok merci j'ai beaucoup mieux compris maintenant :).
Bonne journée
31 août 2017 à 10:11