Définition du "Véritable" programmeur
ATTENTION : Cette page n'est destinée qu'aux professionnels de l'informatique. Elle est incompréhensible par les autres
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).
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é.
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.
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
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é.
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 fans 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.
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.
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 1 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.
- 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é.
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.