LE MANIFESTE DU VERITABLE PROGRAMMEUR
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 STRUCTUREE
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 SYSTEMES
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 Mégaoctets
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 coeur 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
VERITABLES 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 coeur 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 oeuvre
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 à oeuvrer 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
VERITABLES 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 VERITABLE
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 coeur 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
VERITABLE
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 !