

| Le
manifeste du véritable programmeur |
   |
Ce texte a peut-être
pris un coup de vieux, mais j'l'aime bien quand-même :-)
Il était une fois, au bon vieux temps (durant ce
qu'on appelle l'âge d'or de l'informatique) il était facile de distinguer les HOMMES des
JEUNOTS (la tradition les désigne aussi respectivement par les dénominations de
VÉRITABLES et de VISAGES PÂLES). A cette époque, les VÉRITABLES étaient ceux qui
connaissaient la programmation des ordinateurs, et les VISAGES PÂLES étaient ceux qui ne
la connaissaient pas. Les VÉRITABLES préféraient des mots comme "DO 10
I=1,10" ou encore "ABEND". Ils ne parlaient d'ailleurs qu'en majuscules. Le
reste du monde disait des choses du genre "Les ordinateurs sont trop compliqués pour
moi" ou bien encore "Les ordinateurs ne me disent rien, ils sont trop
impersonnels". Des recherches récentes ont d'ailleurs montré que les VÉRITABLES
n'ont besoin de rien dire à personne, et qu'en plus ils n'ont pas peur d'être
impersonnels.
Cependant, comme toujours, les choses évoluent.
Nous sommes dans un monde où les braves mêmes peuvent disposer d'un ordinateur dans leur
four à micro-ondes, où les gosses de 12 ans peuvent ridiculiser un VÉRITABLE aux
ASTEROIDS ou au PacMan, et où n'importe qui peut acheter et même comprendre son propre
ordinateur personnel. Les VÉRITABLES risquent fortement l'extinction, sous la concurrence
des lycéens avec leurs Macintosh.
Il est donc clairement urgent de mettre en évidence
les différences entre un lycéen joueur de PACMAN typique et un VÉRITABLE. En soulignant
cette différence, nous montrons ainsi à des gosses un modèle à suivre, une aspiration
de perfection, une figure paternelle. Cela contribuera à montrer aux employeurs de
VÉRITABLES, pourquoi ce serait une erreur de remplacer ceux-ci par des lycéens joueurs
de PACMAN (quelques en soient les économies de salaires réalisées).
Les langages de programmation
Le critère le plus simple pour repérer un
VÉRITABLE dans la foule est son langage de programmation. Les VÉRITABLES utilisent le
FORTRAN, les VISAGES-PÂLES utilisent le PASCAL. Niklaus Wirth, le concepteur de PASCAL
participait à une conférence. On lui demanda comment il fallait prononcer son nom. Il
répondit "Vous pouvez soit faire un appel par nom en prononçant 'Wiirt', ou faire
un appel par valeurs, en prononçant 'Woort'". Visiblement, on peut détecter par
cette réponse que Niklaus Wirth est un VISAGE PÂLE. Les VÉRITABLES, eux, ne connaissent
qu'un seul mécanisme de passage de paramètres, le passage par adresse, qui est
implémenté dans les compilateurs FORTRAN-G et -H des IBM/370. Les VÉRITABLES n'ont pas
besoin de tous ces concepts abstraits pour effectuer leur boulot, ils se contentent d'une
perfo, d'un compilo FORTRAN et d'un café.
- Un VÉRITABLE fait du traitement de listes en FORTRAN.
- Un VÉRITABLE fait des manipulations de chaînes de caractères en
FORTRAN.
- Un VÉRITABLE fait de la comptabilité (pour autant qu'il en fait) en
FORTRAN.
- Un VÉRITABLE fait des programmes d'intelligence artificielle en
FORTRAN.
S'il ne peut le faire en FORTRAN, il le fait en
Assembleur, s'il ne peut le faire en Assembleur, c'est que cela ne vaut vraiment pas la
peine d'être programmé.
La programmation structurée
Ces derniers temps, les autorités académiques en
informatiques sont tombées d'accord sur la manie de la programmation structurée. Elles
prétendent que les programmes sont plus faciles à comprendre quand leurs auteurs
pratiquent des techniques ou langages spéciaux de programmation.
Ces savants ne sont pas tous d'accord sur quels
langages ou quelles techniques il faut utiliser, et leurs exemples en général sont faits
de manière à tenir sur une page de publication scientifique, visiblement insuffisant
pour convaincre qui que ce soit.
Quand j'étais sorti de l'école, je pensais être
le meilleur programmeur au monde. Mon programme de morpion était imbattable, je
programmais en 5 langages différents et j'étais cap d'aligner un programme de 1000
lignes qui marchait du premier coup (OUI !).
Mon premier boulot dans le monde VÉRITABLE fut de
lire et de comprendre un programme de 200.000 instructions FORTRAN, puis de diviser par
deux son temps d'exécution. Tout VÉRITABLE vous dira que la programmation structurée ne
vous est pas d'un grand secours pour résoudre ce genre de problème. Il faut du TALENT.
Voici quelques opérations sur l'attitude des
VÉRITABLES vis à vis de la programmation structurée.
- Un VÉRITABLE ne craint pas d'utiliser les GOTOs.
- Un VÉRITABLE peut écrire une boucle DO de cinq pages sans se
mélanger les pinceaux.
- Un VÉRITABLE préfère les IF arithmétiques, ça prend moins de
place mémoire.
- Un VÉRITABLE est capable d'écrire du code auto-modifiant si cela
fait gagner 20 nanosecondes.
- Un VÉRITABLE n'a pas besoin de commentaires, il préfère se fier au
code.
- Un VÉRITABLE n'a pas besoin de IF structurés, de REPEAT, de CASE
... OF, tout cela peut se simuler en FORTRAN, au besoin en faisant des ASSIGN, GOTO.
Les structures de données reçoivent aussi beaucoup
de publicité ces temps-ci. Les types de données abstraits, les pointeurs, les listes et
les chaînes de caractères sont devenus populaires pour certains milieux.
Wirth, le VISAGE PÂLE susnommé, a même écrit un
bouquin prétendant que vous pouvez écrire des programmes partant de structures de
données, au lieu de faire l'inverse.
Ainsi que le sait tout VÉRITABLE, la seule
structure de données réellement utiles est le tableau. Les listes, les structures, les
chaînes de caractères, les ensembles, tout ça sont des variétés de tableaux qui
peuvent se programmer comme tels sans se compliquer la vie avec des distinguos subtils.
La pire des contraintes avec cette fantaisie de
types de données est que vous êtes obligés de les déclarer, et vous savez bien qu'un
VÉRITABLE langage de programmation doit reconnaître implicitement le type de données
sur le premier des six caractères du nom de la variable.
Les systèmes d'exploitation.
Quel est le type de système d'exploitation qui est
utilisé par les VÉRITABLES ?
MS-DOS? Dieu merci non! Après tout, MS-DOS est un
système d'exploitation joujou. Même les petites mémés et les lycéens peuvent
comprendre et utiliser MS-DOS.
UNIX est bien un peu plus compliqué. Un hacker
typique sous UNIX n'arrive jamais à se souvenir quel est le nom de la commande PRINT
valable pour la semaine.
Mais quand on y pense un peu, UNIX n'est qu'un jeu
vidéo un peu mis en valeur. On ne travaille pas sérieusement sous UNIX, on se borne à
envoyer des vannes au monde entier par UUCP, à écrire des jeux d'aventure ou à rédiger
des articles scientifiques pour publication.
Non, un VÉRITABLE travaille sous OS/370. Un bon
VÉRITABLE peut arriver à trouver dans son manuel JCL la signification de l'erreur
IJK305I qu'il vient d'avoir. Un VÉRITABLE fortiche peut écrire du JCL sans consulter ce
manuel du tout. Un VÉRITABLE carrément extra peut trouver des bugs enfouis dans un dump
mémoire de 6 Mega-octets sans utiliser une calculatrice hexadécimale.
OS/370 est véritablement un système d'exploitation
remarquable. Il est possible la dessus de détruire des journées de travail avec un blanc
mal placé, ce qui incite les équipes de programmation à une plus grande concentration
mentale. La meilleure manière pour aborder le système OS/370 est par une perforatrice de
cartes. Certains prétendent qu'il existe un time-sharing sur OS/370, mais une étude
minutieuse à montré le contraire.
Les outils de programmation
Quels outils un VÉRITABLE emploie-t-il? En
théorie, il pourrait rentrer ses programmes directement par les clés du panneau frontal
de son ordinateur. C'était effectivement le cas à l'occasion du temps où les machines
avaient encore cet accessoire. Il fut un temps ou un VÉRITABLE connaissait typiquement
par cur son boot en hexa et le rentrait à chaque fois qu'il lui arrivait de
l'écraser avec son programme.
C'était aussi le temps où la mémoire était
véritable, et ne s'en allait pas quand on coupait le jus. De nos jours, les mémoires
oublient ce qu'on leur demande de retenir et gardent des choses qu'elles feraient mieux
d'écraser. La légende dit que Seymour Cray, le père du super ordinateur CRAY I et de la
plupart des Control Data a rentré aux clés le premier système d'exploitation du
CDC-7600 quand celui-ci a démarré pour la première fois. Inutile de préciser que
Seymour Cray est un VÉRITABLE.
Un de mes VÉRITABLES favoris était un ingénieur
Texas Instrument. Un jour, il reçut un appel longue distance d'un utilisateur dont le
système avait crashé au milieu d'une sauvegarde importante. Jim avait alors réparé les
dommages au téléphone en faisant rentrer par l'utilisateur les instructions de disk I/O
aux clés, en patchant les tables systèmes en hexa et en se faisant relire les contenus
des registres à l'écouteur.
La morale de cette histoire est : Même si un
VÉRITABLE utilise en général une perfo ou une imprimante comme outil de génie
logiciel, il peut s'en sortir en cas d'urgence avec juste un tableau frontal et une ligne
téléphonique.
Dans certaines sociétés, "édition de
texte" ne signifie plus de nos jours 10 ingénieurs faisant la queue devant une perfo
en code 29. D'ailleurs mon lieu de travail n'a plus aucune perfo. Dans une telle
situation, un VÉRITABLE doit se résigner à utiliser un éditeur de texte.
La plupart des systèmes permettent le choix entre
plusieurs éditeurs, et il s'agit d'en choisir un qui soit compatible avec votre style de
travail. Beaucoup de personnes croient que les meilleurs éditeurs de textes du monde
proviennent des laboratoires XEROS à Palo Alto, sur les systèmes ALTO et DORADO.
Malheureusement, comment voulez vous qu'un
véritable puisse utiliser un système d'exploitation au nom aussi ridicule que SMALLTALK,
et encore moins manipuler une souris ?
Quelques un des concepts de ces éditeurs de XEROS
se sont retrouvés dans des éditeurs tournant sur des systèmes aux noms plus
raisonnables (comme EMACS, VI). Le problème avec ces éditeurs de texte est que le
concept "Vous obtenez ce que vous voyez" est aux yeux d'un véritable aussi
vicieux chez un éditeur qu'il peut l'être chez une femme. En réalité, un VÉRITABLE
préfère du "Vous l'aviez voulu, tant pis pour vous", du compliqué, de
l'énigmatique, du mystérieux, puissant et impitoyable comme TECO pour tout dire.
On a fait remarquer qu'une séquence de commande
TECO ressemble plus à un bruit de télétransmission qu'à du texte lisible. Un jeu bien
connu sur TECO consiste à taper votre nom en tant que commande et à voir ce que cela
donne. N'importe quelle erreur de frappe dans TECO recèle une forte probabilité de
destruction de votre programme, ou mieux encore, d'introduction des erreurs dans un sous
programme qui fonctionnait dans le passé.
C'est ce qui explique pourquoi un VÉRITABLE
rechigne à éditer un programme qui tourne presque. Il préfère patcher directement le
binaire à l'aide d'un merveilleux outil appelé SUPERZAP (ou son équivalent sur une
machine non-IBM). Cela marche tellement bien, que beaucoup de programmes IBM n'ont que peu
de ressemblances avec le source FORTRAN. En réalité, dans de nombreux cas, on ne dispose
plus du tout du source.
Quand il s'agit de corriger un tel programme, aucun
patron ne penserait à un autre recours qu'un VÉRITABLE : un VISAGE PÂLE structuré ne
saurait même pas par quoi commencer. On appelle ça : "La protection de
l'emploi".
Voici quelques outils de génie logiciel NON
employés par les VÉRITABLES
- Les préprocesseurs FORTRAN comme RAFTOR ou MORTRAN. C'est bon pour
les VISAGES-PÂLES. Voir ci-dessus à propos de la programmation structurée.
- Les aides au débogage en langage source. Un VÉRITABLE travaille
uniquement sur des dumps mémoire.
- Les compilateurs avec des protections de débordement de tableaux.
Ils brident la créativité, empêche les usages les plus intéressants de l'instruction
ÉQUIVALENCE. Ils rendent impossible la modification des instructions système avec des
indices négatifs. Et le pire de tout, c'est que cela ralentit l'exécution.
- La gestion centralisée du code. Un VÉRITABLE garde toujours ses
sources dans des bacs de cartes personnels fermés à clé.
Les VÉRITABLES au travail
Où travaille un VÉRITABLE? Quels genres de
programmes requièrent l'attention de cet individu aussi talentueux? Vous n'en trouverez
pas en train d'écrire une paie-compta en COBOL, ou encore faisant du tri d'adresses pour
un club de micro. Un VÉRITABLE ne s'attelle qu'à des tâches extraordinaires (au sens
étymologique).
- Un VÉRITABLE travaille au laboratoire national de Los Almos et
écrit des simulations de bombes nucléaires sur CRAY-I.
- Un VÉRITABLE travaille au centre national de sécurité, pour
décoder des messages russes.
- Pour que la NASA puisse envoyer des gars sur la lune et les ramener
avant les russes, il a fallu des milliers de VÉRITABLES.
- Les VÉRITABLES travaillent chez BOEING pour concevoir des missiles
de croisière.
Les VÉRITABLES les plus formidables travaillent au
Jet Propulsion Laboratory en Californie. Beaucoup d'entre eux connaissent par cur le
logiciel de pilotage des sondes Pionner et Voyager. En combinant des gros programmes
FORTRAN au sol avec un petit programme en langage machine la haut; ils sont capables de
prodiges de navigation et d'improvisation, comme taper dans une fenêtre de dix
kilomètres de large sur Saturne après six ans dans l'espace. Ou bien encore de réparer
des radios et batteries endommagées. Il paraîtrait qu'un VÉRITABLE a réussi à fourrer
un programme de reconnaissance de forme de quelques centaines d'octets dans un coin de
mémoire libre, ce qui a permis de découvrir une nouvelle lune de Jupiter !
Il est actuellement prévu pour le programme GALILEO
de balancer la sonde vers Jupiter au moyen d'une assistance gravitationnelle de Mars.
Cette trajectoire va passer à 80 kilomètres (plus ou moins 3 kilomètres) de la surface
de Mars. Personne ne ferait confiance à un programme PASCAL (ou à un programmeur PASCAL)
pour naviguer avec une telle précision.
Comme vous le voyez, beaucoup de VÉRITABLES
existant au monde travaillent pour le gouvernement Américain, et spécialement pour le
Département de la Défense (DoD). Et c'est très bien ainsi. Récemment, cependant, un
nuage noir a obscurci l'horizon des VÉRITABLES. Il semblerait que quelques VISAGES-PÂLES
haut placés du DoD aient décidé que tous les programmes de la Défense devront êtres
écrits dans un grand langage unifié appelé Ada. Pendant un temps, il semblait que Ada
allait à l'encontre de la programmation VÉRITABLE (un langage avec des structures, des
types de données, des points-virgules, bref un langage qui étiolerait la créativité
des VÉRITABLES). Heureusement, le langage qui fut finalement adopté par le DoD comporte
suffisamment de possibilités intéressantes pour le rendre potable. Il est d'une
effroyable complexité, et il contient des outils pour tripoter le système d'exploitation
et réordonner la mémoire. Edsger Dijkstra ne l'aime pas (Vous connaissez Dijkstra, c'est
celui qui a écrit le livre "GOTOs considérés comme nuisibles". Une uvre
remarquable applaudie par tous les programmeur PASCAL et les VISAGES-PÂLES). En tout cas
rassurons-nous :
Un VÉRITABLE peut programmer en FORTRAN dans
n'importe quel langage.
Il semblerait cependant que certains véritables
peuvent condescendre à faire un compromis dans leurs principes et à uvrer sur des
choses plus triviales que la destruction de la terre, à condition que ce boulot puisse
rapporter des sous. ATARI par exemple, emploie plusieurs VÉRITABLES pour écrire ses jeux
vidéos (pas pour y jouer, un VÉRITABLE connaît toutes les astuces pour battre la
machine à chaque coup et ce ne serait pas glorieux). Les gens de chez LUCAS FILM sont
aussi des VÉRITABLES, il faudrait être fou pour refuser des millions de dollars des
fanas de "l'empire contre attaque". En CAO, il n'y a pour le moment pas assez de
VÉRITABLES; Ils n'ont pas encore trouvé le filon. On y trouve en général des gens qui
y sont uniquement pour faire du FORTRAN et éviter de faire du COBOL.
Les VÉRITABLES au travail
En général, un VÉRITABLE joue comme il travaille,
avec des ordinateurs.
Il trouve d'ailleurs incroyable que son boss puisse
le payer pour faire quelque chose qu'il ferait de toute manière gratos (Bien qu'il fasse
attention de ne pas le dire trop fort). De temps en temps, il arrive que le VÉRITABLE
sorte de son bureau pour respirer un bol d'air et prendre un verre de bière. Pour le
reconnaître à ces moments, voici quelques trucs :
- Dans un pot, les VÉRITABLES sont ceux qui sont dans un coin en train
de discuter des protections des systèmes d'exploitation et des moyens pour les planter.
- Dans un match de foot, le VÉRITABLE est celui en train de comparer
le jeu avec sa simulation sur un listing.
- A la plage, le véritable est celui qui dessine des arbres
programmatiques sur le sable.
- Aux enterrements, le VÉRITABLE est celui qui dit "Pauvre Tim,
son tri tournait presque quand il a eu son attaque".
- Au supermarché, le VÉRITABLE est celui qui insiste pour faire
passer lui-même les canettes de bière devant le lecteur optique, si la caissière l'a
mal fait la première fois.
L'habitat naturel du VÉRITABLE
Dans quel biotope se plaît le mieux le VÉRITABLE?
C'est une question importante pour les patrons de VÉRITABLES, car vu le coût d'un tel
spécimen, il est préférable de leur donner un environnement tel qu'il puisse accomplir
efficacement son travail.
Un véritable typique vit devant un terminal
d'ordinateur. Autour de ce terminal, on peut trouver :
- Les listings de tous les programmes sur lequel le VÉRITABLE a eu à
travailler, empilés par ordre chronologique et ce sur toute la surface plane du bureau.
- Environ une demi-douzaine de tasses de café froid.
Occasionnellement, il peut y avoir des mégots flottants dans les tasses. Quelques fois
aussi, les tasses contiennent des restes de jus d'orange.
- A moins d'un spécimen très fort, il y aura des exemplaires des
manuels du JCL-OS et des principes de base ouverts à une page particulièrement
intéressante.
- Scotché au mur, on trouvera bien sûr un listing calendrier SNOOPY.
- Jonchant le sol, des emballages MARS, BOUNTY ou tout autre
équivalent du genre qu'on vend dans les distributeurs et pré-rancis pour résister à
leur long séjour.
- Caché dans le tiroir supérieur gauche du bureau, un paquet de
cigarillos pour les grandes occasions.
- Sous les cigarillos, un NORMOGRAPHE laissé là par l'occupant
précédent. Un VÉRITABLE, lui, n'écrit que des programmes, pas de la doc, il laisse ça
aux gens de la maintenance.
Un VÉRITABLE est capable de travailler 30, 40 et
même 50 heures d'une traite, sous pression intense. Les temps de réponse lents ne
dérangent pas le VÉRITABLE, ils lui donnent la possibilité de faire un petit somme
entre deux compiles. Si le planning n'est pas trop serré, le VÉRITABLE s'arrange en
général pour rendre les choses plus palpitantes en passant les neuf premières semaines
sur un point réduit mais intéressant du projet, puis en finissant le reste du projet la
dernière semaine en quelques marathons de 50 heures. Non seulement cela contribue à
impressionner diablement son patron, qui désespérait de voir le projet finir dans les
temps, mais cela lui fournit aussi une excellente excuse pour ne pas faire la doc.
En général, on peut dire :
- Aucun VÉRITABLE ne travaille de 9 à 5 heures (A moins que ce ne
soit l'autre part de la journée).
- Un VÉRITABLE ne porte pas de cravates.
- Un VÉRITABLE ne porte pas de chaussures à talons.
- Un VÉRITABLE arrive au travail à temps pour le déjeuner.
- Un VÉRITABLE ne connaît pas ou ne se souvient pas du nom de sa
femme. Mais il peut réciter par cur la table ASCII ou EBCDIC.
- Un VÉRITABLE ne sait pas cuisiner, les épiceries étant fermées à
trois heures du matin, il survit avec des barres de MARS et des tasses de café.
L'avenir du VÉRITABLE
Que nous réserve l'avenir. C'est un sujet de
préoccupation pour les VÉRITABLES que les nouvelles générations de programmeurs ne
soient pas élevées avec la même conception de la vie que leurs aînés. Beaucoup de ces
jeunes n'ont jamais vu un ordinateur avec un panneau frontal. On peut à peine trouver un
nouveau diplômé qui sache calculer en hexa sans une calculette. De nos jours, les
diplômés sont des pieds tendres, protégés des réalités de la programmation par des
débuggueurs symboliques, des éditeurs de textes qui comptent les parenthèses, et des
systèmes d'exploitations "conviviaux". Pire de tout, ces soi-disant
"chercheurs" du logiciel récoltent des diplômes sans même avoir jamais appris
le FORTRAN! Sommes-nous destinés à devenir une industrie de programmeurs PASCAL ou de
maniaques UNIX?
Heureusement, mon expérience vécue me dit que le
futur reste radieux pour les VÉRITABLES, Ni OS/370 ni FORTRAN ne montrent de signes de
faiblesses, malgré les tentatives des programmeurs PASCAL du monde entier. Même les
ruses les plus subtiles comme l'introduction de la structuration dans le FORTRAN ont
échoué.
Bien sûr, quelques constructeurs ont bien sorti des
compilos FORTRAN-77, mais tous offrent la possibilité de revenir au FORTRAN-66 moyennant
une option de compile, et permettant ainsi de compiler des boucles DO comme Dieu les a
créées pour.
Mais l'avenir de UNIX peut ne pas être aussi
mauvais pour les VÉRITABLES qu'on le disait avant. La dernière release de UNIX contient
des potentialités dignes de n'importe quel VÉRITABLE : Deux interfaces utilisateurs
différentes et subtilement incompatibles, un driver TTY tortueux et compliqué, de la
mémoire virtuelle. Si vous laissez de coté qu'il soit un langage structuré, le C peut
se faire apprécier d'un VÉRITABLE. Après tout, il ne vérifie pas les types des
variables, les noms ont seulement sept caractères (ou dix? ou huit?) et vous avez en plus
les pointeurs (Comme si on avait les avantages du FORTRAN et de l'Assembleur conjugués).
Et sans oublier toutes les applications créatives et intéressantes qu'on peut faire avec
le #DEFINE.
Non, l'avenir n'est pas si mal. Et même, ces
derniers temps, la presse populaire a mentionné que les brillantes promos d'hackers
quittent des temples comme le MIT ou STRANFORD pour envahir le monde. L'esprit est de
toute évidence en eux. Tant qu'existent encore des objectifs mal définis, des bugs
bizarres et des plannings irréalistes, il y aura des VÉRITABLES prêts à foncer dans le
tas et à résoudre les problèmes en laissant la doc pour plus tard.
LONGUE VIE AU FORTRAN ! |