RECHERCHE :
Bienvenue sur le site de Michel VOLLE
Powered by picosearch  


Vous êtes libre de copier, distribuer et/ou modifier les documents de ce site, à la seule condition de citer la source.
 GNU Free Documentation License.


La programmation comme hobby

8 décembre 2001


Liens utiles

- Structure and interpretation of computer programs
- Télécharger DrScheme
- Un chiffrement inviolable ?
- Fabrication de clés aléatoires
- Tour de garde
- Résoudre un Sudoku

Il faut avoir dans la vie des sources de plaisir, fidèles et sûres, que l'on retrouve avec joie lorsque l'on revient du travail harassé et contrarié. Certains font de la musique, et il est vrai qu'en jouant une sonate de Beethoven on restaure son équilibre mental. D'autres lisent, et certes on passe de bons moments avec les livres. 

Je vous propose un nouveau hobby : la programmation. Mais il ne faut pas utiliser n'importe quel langage. Je sors de la programmation en Fortran démoli au point de ne rien comprendre au journal que je lis le soir : on dirait que le cerveau, à force de s'embrouiller dans les boucles du programme, s'est pris de vertige. La programmation en Pascal vous laisse par contre l'esprit clair et content, après avoir classé vos idées et mis au point de petites procédures qui font sagement ce qu'on leur demande. C++ et Java ne m'ont, je l'avoue, jamais procuré de plaisir : ce sont des outils pour professionnel, je veux bien, mais pour l'amateur ils laissent trop à désirer sur le plan esthétique. 

Lorsque j'utilise Excel (je sais, je sais, ce n'est pas de la programmation) je fais vite et bien, sans réfléchir beaucoup, des choses qu'il serait délicat de programmer. Le tableur affranchit des menus problèmes de mise en forme et on peut aller droit au but. On peut avec Excel, sans programmer de "macros", faire beaucoup de choses avec les liens et le solveur (difficile à maîtriser cependant : parfois il dérape). 

Il faut donc qu'un langage de programmation me permette :
1) de faire ce que je fais sous Excel presque aussi simplement que sous Excel (je dis "presque", parce que le progiciel apporte quelque chose que je ne vais pas reprogrammer !),
2) de faire des choses qu'il serait très difficile ou impossible de faire avec Excel. 

Il me semble avoir découvert avec Scheme le langage qui me convient. Je vais pouvoir explorer des questions qui me semblaient réservés aux chercheurs dans leurs laboratoires. 

Quel est le temps que l'amateur peut raisonnablement consacrer à la programmation ? c'est comme pour le piano : une demie heure par jour. Un professionnel travaille le piano sept heures par jour, un amateur se contente d'une demie heure. Jamais l'amateur n'arrivera au niveau de virtuosité du professionnel mais en musique la virtuosité n'est pas la seule source de plaisir, tant s'en faut. En programmant une demie heure par jour, vous ferez des programmes expressifs (terme que musique et programmation ont en commun), vous y prendrez du plaisir (alors qu'il est difficile de prendre du plaisir sept heures par jour) et cela contribuera à votre hygiène mentale. 

Abelson et Sussman disent que les mathématiques considèrent la définition des choses alors que la programmation considère la façon de faire les choses. Lorsqu'en mathématiques j'évoque le PGCD de deux entiers, du même coup je le définis et j'en ai assez dit. Par contre en informatique il faut que j'écrive le programme qui permet de calculer un PGCD. Il serait difficile de faire plus simple que Scheme :

(define (pgcd a b)
    (if (= b 0) a
       (pgcd b (remainder a b))))

A l'invite (pgcd 8064 28791), ce programme répond comme il se doit 63.

Nota Bene : La fonction (remainder x y) donne le reste de la division de x par y ; quand à la fonction (pgcd x y), sa définition est récursive : la fonction s'appelle elle-même quand elle s'exécute ... il faut réfléchir un peu pour comprendre la récursion. Elle confère aux programmes en Scheme une densité et une élégance sans pareilles.

Les mathématiques relèvent de la contemplation, la programmation de l'action. Ces démarches sont complémentaires : l'une sans l'autre serait déséquilibrée comme la moitié d'une voûte.