[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [HS] comparatif langages procéduraux/fonctionnels



Selon Yves Rutschle <y.rutschle@indigovision.com>:

> On Wed, Aug 06, 2003 at 05:07:35PM +0200, Boulanger Jean-Louis wrote:
> > Théoriquement tu peux trés bien écrire un programme lisp sans jamais
> utiliser
> > ces opérateurs.
> 
> À ce compte là, on peut dire que C (et Pascal et un tas
> d'autres) sont également des langages fonctionnels, il
> suffit d'avoir la notion de fonction et de récursivité et de
> ne pas utiliser l'affectation.

Non, car le modèle d'exécution des langage impératif (C, Pascal ..) est basé sur
l'exécution d'une série d'instruction et sur la mémorisation au travers de
l'affectation.

Le modèle fonctionnel est basé sur la notion de fonction et meme si l'opérateur
 set* existe cela ne signifie pas que l'on memorise a tour de bras des variables.
Il existe de tres bon livre sur la programmation fonctionnelle.

Il y a d'ailleurs un livre de B Meyer sur la sémantique des langages qui est
assez intéressant sur le sujet. 


> Donc: on devrait parler de "programmation fonctionnelle" (en
> tant que style de programmation)

Il existe effectivement un style dit "Programmation fonctionnelle", on parle
meme de "programmation applicative" (en incorporant les langages comme prolog).
On s'interesse alors a décrire le comportement du programme et non son principe
d'exécution.

Ce type de programmation existe en tant que telle car tu n'es pas oblige (comme
pour la programmation oriente objet) de disposer d'un langage fonctionnel meme
si tu seras obligé de mettre en place des mécanismes complémentaires suivant le
langage utilisé.

> plutôt que de "langages
> fonctionels" (en tant que propriété du langage), avec sans
> doute des lagages qui ont plus d'histoire dans domaine que
> dans l'autre.

Non il existe bien des langages dit "langage fonctionnel" qui mettent en oeuvre
un modèle "fonctionnel" qui peut etre sémantiquement définit et qui se base par
exemple sur la notion de foncteur et de réduction. On a un autre modèle d'exécution.

> 
> > D'ailleurs tu as de très jolis
> > exercice ou pour te passer de variable temporaire tu utilises des
> paramétres
> > complémentaires dans les fonctions qui sont donc une autre façon de
> mémoriser
> > des informations.
> 
> Je me souviens avoir passé des classes de prog à résoudre
> les problèmes posés sans variables, pasque c'était trop
> simple sinon... :-)

Le remplissage de X sac avec n Objet de volume different est un classique qui se
fait en quelque ligne fonctionnelle et qui peut aussi s'ecrire en imperatif mais
de facon moins évidente.

Il y a une dimension complementaire.  Comme les langages fonctionnels ont une
sémantique bien définie, il est possible de raisonner sur les programmes et on
peut demontrer leurs validites

Voir les travaux sur OCAML et sur COQ.

Pour l'affectation, il y a une difficulté intéressante, chacun utilise
l'affectation sans se poser de question, mais l'affectation ne dispose pas d'un
modèle mathématique (sachant qu'il existe plusieurs implantations fonction du
langage, du processeur, des principes de gestion mémoire et du système
d'exploitation).

Boulanger JL

-------------------------------------------------
Laboratoire Heudiasyc. UMR CNRS 6599
http://www.hds.utc.fr



Reply to: