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.
|