1 déc. 2008

Programmation fonctionnelle: Scheme !

Je vais vous présenter le langage de programmation que l'on apprend en 1ère année de licence informatique (non pas MI ^^) à la fac de sciences de Nice.

Scheme, qui est un langage dérivée du Lisp (que je ne connaissais pas) est un langage de programmation dit fonctionnel.
Pourquoi fonctionnel ? C'est encore un peu flou pour moi mais de ce que je sais, les fonctions que vous écrivez ne modifient pas ce qu'on lui donne en argument, je fais ici l'analogie avec une fonction mathématique qui va de E dans F:

f: x \mapsto x^2

C'est à dire que pour un x donné, on va lui associer son image dans F, qui est x^2.

En Scheme, c'est pareil ! Par exemple réecrire la fonction mathématique précédente se fait facilement:
(define (f x)
(* x x)
)
Ma fonction f prend en argument x, et renvoie en résultat le produit x*x, il faut garder en tête que f ne modifie pas la valeur x, mais rend une valeur.

Du coup et ben on se rend compte qu'on ne peut pas (du moins en 1ère année) attribuer de valeur persistante à une variable. De plus je n'ai pas a typer les variables utilisés comme le x utilisé par f.
Suite à ça on peut se demander comment programmer décemment si on ne peut même pas utiliser de variables ?!

C'est dans l'optique de ça, je pense, que ce langage de programmation a été mis en place à la fac, justement pour montrer aux étudiants qu'il n'y a pas que la programmation impérative qui existe (comme le C par exemple)! Mais aussi pour nous encourager et nous habituer à programmer et penser de façon récursive. Avec l'idée d'itérer à l'aide de fonctions que l'on passe en paramètre, on introduit la notion d'ordre supérieur, ce qui devient encore plus abstrait.

Si vous êtes quelqu'un à l'aise avec l'algèbre et les notions d'ensembles, Scheme devrait être plus accessible qu'il n'a été pour moi ^^.

Néamoins, le langage Scheme, même s'il n'est pas un langage aussi celèbre au même titre que le Java ou le C, mérite le coup d'oeil, juste parce qu'il arrivera peut être à vous enlever de la tête que la programmation est forcément impérative ou orientée objet.

Personnellement j'ai pris l'option de programmation avancée en Scheme pour le deuxième semestre (aillaillaie ! on a déjà du Java au deuxième semestre T.T), même si ce semestre j'ai beaucoup galeré en Scheme.
Ce que notre professeur, Jean Paul Roy, nous a tous dit, m'as encore plus donné envie de m'y plonger.

Suite à cet article, j'essayerais de poster des bouts de code en Scheme, de les expliquer, pour vous montrer que c'est vraiment pas sorcier, même si ca en a l'air au début.

Aucun commentaire: