Selon Yves Rutschle <[EMAIL PROTECTED]>:

> 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

Répondre à