Les véritables
MANIFESTE DES VERITABLES PROGRAMMEURS
(anonyme, trouvé dans un réseau public aux USA)
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 VERITABLES et de VISAGES-PALES). A cette
époque, les VERITABLES étaient ceux qui connaissaient la
programmation des ordinateurs et les VISAGES-PALES étaient ceux
qui ne la connaissaient pas. Les VERITABLES proféraient des mots
comme : "DO 10 I=1,10" ou encore "ABEND" (et ils ne parlaient qu'en majuscules),
pendant que le reste du monde disait des choses comme : "les ordinateurs
sont trop compliqués pour moi" ou encore "les ordinateurs ne me
disent rien, ils sont trop impersonnels". Des recherches récentes
ont d' ailleurs montré que les VERITABLES n'ont besoin de rien dire
à personne et, qu'en plus, ils n'avaient pas peur d'être impersonnels.
Cependant, comme toujours, les choses évoluent. Nous sommes maintenant
dans un monde où les braves mémés peuvent disposer
d'un ordinateur dans leur four à micro-ondes, où les gosses
de 12 ans peuvent ridiculiser un VERITABLE aux ASTEROIDS ou au PAC-MAN
et où n'importe qui peut acheter, et même comprendre, son
propre ordinateur personnel. Les VERITABLES risquent fortement l'extinction
sous la concurrence des lycéens avec des MAKINTOCKS. Il est donc
clairement urgent de mettre en évidence les différences entre
un lycéen_joueur_de_pacman typique et un VERITABLE. En soulignant
cette différence, nous montrons ainsi à ces gosses un modèle
à suivre, une aspiration de perfection, une figure paternelle. Cela
contribuera aussi à expliquer aux employeurs de VERITABLES pourquoi
ce serait une erreur de remplacer ceux-ci par des lycéens_joueurs_de_pacman
(quelles qu'en soient les économies de salaire réalisées).
LANGAGES
Le critère le plus simple pour repérer un VERITABLE dans
la foule est son langage de programmation. Les VERITABLES utilisent le
FORTRAN, les VISAGES-PALES utilisent le PASCAL. Niklaus Wirth, le concepteur
de PASCAL, donnait un jour 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 "Viirt" ou bien faire un appel par
valeur en prononçant "Voort". Visiblement, on peut détecter
par cette réponse que Niklaus Wirth est un VISAGE-PALE. Les véritables,
eux, ne connaissent qu'un seul mécanisme de passage de paramètre,
l'appel par adresse, qui est implémenté dans les compilateurs
FORTRAN-G et H des IBM/370. Les VERITABLES n'ont pas besoin de tous ces
concepts abstraits pour effectuer leur boulot, ils se contentent d'un compilo
FORTRAN et d'un café. * Un VERITABLE fait du traitement de listes
en FORTRAN. * Un VERITABLE fait des manipulations de chaînes de caractères
en FORTRAN. * Un VERITABLE fait de la comptabilité (pour autant
qu'il en fait) en FORTRAN. * Un VERITABLE 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 ça ne
vaut vraiment pas du tout la peine d'être programmé.
LA PROGRAMMATION STRUCTUREE
Les autorités académiques en informatiques sont tombées
ces derniers temps 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 des langages spéciaux
de programmation. Ces savants ne sont pas tous d'accord sur quels langages
et quelles techniques il faut utiliser, et leurs exemples en général
sont fait de manière à tenir sur une page de publication
scientifique, visiblement insuffisant pour convaincre qui que ce soit.
En sortant 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 capable d'aligner un
programme de 1000 lignes qui MARCHAIT du premier coup (oui!). Mon premier
boulot dans le monde VERITABLE fut de lire et de comprendre un programme
de 200 000 instructions FORTRAN, puis de diviser par deux son temps d'exécution.
Tout VERITABLE 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 observations sur l'attitude des VERITABLES
vis à vis de la "programmation structurée" : * Un VERITABLE
ne craint pas d'utiliser les GOTOs, * Un VERITABLE peut écrire une
boucle DO de cinq pages sans se mélanger les pinceaux, * Un VERITABLE
préfère les IF arithmétiques, ça prend moins
de place mémoire, * Un VERITABLE est capable d'écrire du
code auto-modifiant si ça fait gagner 20 nanosecondes, * Un VERITABLE
n'a pas besoin de commentaires, il préfère se fier au code,
* Un VERITABLE n'a pas besoin de IF structuré, de REPEAT, de CASE...OF;
tout ça 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 abstrait,
les structures, les pointeurs, les listes et les chaînes de caractères
sont devenus populaires dans certains milieux. Wirth, le VISAGE-PALE susnommé
a même écrit un bouquin prétendant que vous pouvez
écrire des programmes en partant des structures de données
au lieu de faire l'inverse. Ainsi que le sait tout VERITABLE, la seule
structure de données réellement utile est le tableau. Les
listes, les structures, les chaînes de caractères, les ensembles,
tout ça ce sont des variétés de tableaux qui peuvent
se programmer comme telles sans se compliquer la vie avec des distingos
subtils. La pire des contraintes avec cette fantaisie des types de données
est que vous êtes obligé de les déclarer, et vous savez
bien qu'un VERITABLE 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 un les VERITABLES? CP/M? Dieu merci non! Après tout CP/M est
un système d'exploitation joujou. Même les petites mémés
et les lycéens peuvent comprendre et utiliser CP/M. UNIX est bien
sûr plus compliqué - un hacker typique sous UNIX n'arrive
jamais à se souvenir du nom de la commande PRINT en cours de validité
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 sur un système
UNIX, on se borne à envoyer des vannes au monde entier par UUCP
sur un réseau, à ecrire des jeux d'aventure ou à rédiger
des articles scientifiques pour publication. Non, un VERITABLE travaille
sous OS/370. Un bon VERITABLE peut arriver à trouver dans son manuel
JCL la signification de l'erreur IJK3051 qu'il vient d'avoir. Un VERITABLE
fortiche peut écrire du JCL sans consulter ce manuel du tout et
un VERITABLE carrément extra peut trouver des bugs enfouis dans
un dump mémoire de 6 mégaoctets sans utiliser une calculatrice
hexadécimale (anecdote véridique). OS est véritablement
un système d'exploitation remarquable. Il est possible là-dessus
de détruire des journées de travail avec un blanc mal placé,
ce qui incite les équipes de programmeurs à une plus grande
concentration mentale. La meilleure manière pour aborder le système
OS est par une perfo de cartes. Certains prétendent qu'il existe
un Time Sharing sur OS 370, mais une étude minutieuse a démontré
le contraire.
LES OUTILS DE PROGRAMMATION
Quel outil un VERITABLE 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
où un VERITABLE connaissait typiquement par coeur son boot en hexa
et le rentrait ainsi 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 été
démarré pour la première fois. Inutile de préciser
que Seymour Cray est un VERITABLE. Un de mes VERITABLES favoris était
un ingénieur système de chez Texas Instruments. Un jour il
reçut un appel en 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 se faisant relire les
contenus des registres à l'écouteur. La morale de cette histoire
est que, même si un VERITABLE utilise en général une
perfo et une imprimante comme outils de génie logiciel, il peut
s'en sortir en cas d'urgence avec juste un tableau frontal d'ordinateur
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
actuel n'a plus aucune perfo. Dans une telle situation un VERITABLE doit
se résigner à utiliser un éditeur de texte. La plupart
des systèmes permettent le choix entre plusieurs éditeurs
et il s'agit alors d'en choisir un qui soit compatible avec votre style
de travail. Beaucoup de personnes croient que les meilleurs éditeurs
de texte du monde proviennent des laboratoires Xerox à Palo-Alto,
sur les systèmes Aldo ou Dorado. Malheureusement comment voulez-vous
qu'un véritable utilise quelque chose au nom aussi ridicule que
"Smalltalk", et encore moins manipuler une souris? Quelques un des concepts
de ces éditeurs de Xerox se sont retrouvés dans des programmes
aux noms plus raisonnables, comme EMACS ou VI. Le problème avec
ces éditeurs est que le concept "vous obtenez ce que vous voyez"
est, aux yeux d'un VERITABLE, aussi vicieux chez un éditeur de texte
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
commandes 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 ça donne. N'importe
quelle erreur de frappe dans TECO recèle une forte probabilité
de destruction de votre programme ou, mieux encore, d'introduire des erreurs
subtiles dans un sous programme qui fonctionnait auparavant. C'est ce qui
explique pourquoi un VERITABLE 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
sur IBM n'ont que peu de ressemblance avec le code FORTRAN d'origine. 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 VERITABLE. Un VISAGE-PALE structuré
ne saurait même pas par quoi commencer. On appelle ça la "protection
de l'emploi". Voici quelques outils de génie logiciel que n'emploient
PAS les VERITABLES : * Les préprocesseurs FORTRAN comme RATFOR ou
MORTRAN. C'est bon pour les VISAGES PALES, * Les aides au débuggage
en langage source. Un VERITABLE travaille uniquement sur les dumps mémoire,
* Les compilateurs avec des protections de débordement de tableau.
Ils brident la créativité, empêchent les usages les
plus intéressants de l'instruction EQUIVALENCE et rendent impossible
la modification des instructions systèmes avec des indices négatifs.
Et le pire de ces reproches est que ça ralentit l'exécution,
* La gestion centralisée du code. Un VERITABLE garde toujours ses
sources dans des bacs de cartes personnels fermés à clé.
LES VERITABLES AU TRAVAIL
Où travaille un VERITABLE? Quels genres de programmes requièrent
l'attention de cet individu aussi talentueux? Vous n'en trouverez pas en
train d'écrire un paie/compta en COBOL, ou encore faisant des tris
d'adresses pour un club micro. Un VERITABLE ne s'attelle qu'à des
tâches extra-ordinaires : * Un VERITABLE travaille au laboratoire
national de LOS ALAMOS et écrit des simulations de bombes nucléaires
sur CRAY I, * Un VERITABLE travaille au centre national de sécurité,
pour décoder les messages des Russes, * Pour que la Nasa puisse
envoyer nos gars sur la Lune et les en ramener avant les Russes, il a fallu
des milliers de VERITABLES, * Les VERITABLES travaillent chez Boeing pour
concevoir les missiles de croisière. Les VERITABLES les plus formidables
travaillent au Jet Propulsion Laboratory en Californie. Beaucoup d'entre-eux
connaissent par coeur le logiciel de pilotage des Pionner et des Voyager.
En combinant des gros programmes FORTRAN au sol avec un petit programme
en langage machine là-haut, ils sont capables de prodiges de navigation
et d'improvisation, comme taper dans une fenêtre de dix kilomètres
de large après six ans de navigation dans l'espace, réparant
ou by-passant des senseurs, des radios et des batteries endommagés.
Il paraîtrait qu'un VERITABLE a réussi à fourrer un
programme de reconnaissance de formes de quelques centaines d'octets dans
un coin de mémoire libre, ce qui a permis de découvrir une
nouvelle lune de Jupiter. Comme vous le voyez la plupart des VERITABLES,
travaillent pour le gouvernement 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 VERITABLES. Il semblerait
que quelque VISAGE-PALE haut placé du DoD a décidé
que tous les programmes de la défense devront être écrits
dans un grand langage unifié appelé ADA. Pendant un temps
il a semblé que ADA allait à l'encontre des préceptes
de la programmation VERITABLE (un langage avec des structures, des types
de données, des points-virgules, bref un langage qui étiolerait
la créativité des VERITABLES). 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é,
il contient des méthodes pour tripoter le système d'exploitation
et réordonner la mémoire et 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 en méthodologie
et applaudie par tous les programmeurs PASCAL et les VISAGES-PALES). En
tout état de cause, rassurons nous : un VERITABLE peut programmer
en FORTRAN dans n'importe quel langage. Il semblerait cependant que certains
VERITABLES peuvent condescendre à faire un compromis dans leurs
principes et à oeuvrer sur des choses plus triviales que la destruction
de la vie sur Terre, à condition que ce boulot puisse rapporter
des sous. ATARI, par exemple, emploie plusieurs VERITABLES pour écrire
ses jeux vidéos (pas pour y jouer, un VERITABLE connait toutes les
astuces pour battre la machine à tous les coups, ce ne serait pas
glorieux). Les gens chez Lucas Films sont aussi des VERITABLES, il faudrait
être fou pour refuser les millions de dollars des fans de "l'Empire
contre-attaque". En CAO, il n'y a pour le moment pas assez de VERITABLES;
ils n'ont pas encore trouvé le filon et 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 JEU
En général, un VERITABLE 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 VERITABLE 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 VERITABLES sont ceux
qui sont dans un coin en train de discuter des protections de systèmes
d'exploitation et des moyens de les craquer, * Dans un match de foot, le
VERITABLE est celui en train de comparer le jeu avec sa simulation sur
listing, * Aux enterrements, le VERITABLE est celui qui dit : "Pauvre Tim,
son tri tournait presque quand il a eu cette attaque", * Au supermarché
le VERITABLE est celui qui insiste pour faire passer lui même les
cannettes 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 plait le mieux le VERITABLE? Ceci est une question
importante pour les patrons de VERITABLES car, vu le coût d'un spécimen,
il est préférable de leur donner un environnement tel qu'il
puisse accomplir efficacement son travail. Un VERITABLE typique vit devant
un terminal d'ordinateur. Autour de ce terminal, on peut trouver : * Les
listings de tous les programmes sur lesquels le VERITABLE a eu à
travailler, empilés par ordre chronologique sur tout bout de surface
plane du bureau, * Environ une demi-douzaine de tasses de café froid.
Occasionnellement, il peut y avoir des mégots flottant dans les
tasses. Quelquefois aussi, les tasses contiennent des restes de jus d'orange,
* A moins d'un spéciment très fort, il y aura des exemplaires
des manuel du JCL-OS et des Principes de Base ouverts à une page
particulièrement intéressante, * Scotché au mur, on
trouvera bien sur un listing de calendrier Snoopy, * Jonchant le sol, des
enveloppes de barres de Mars ou de Bounty, ou tout autre équivalent
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 à organigrammes laissé
là par l'occupant précédent (un VERITABLE, lui, n'écrit
que des programmes, pas de la doc, il laisse ça aux gens de la maintenance).
Un VERITABLE est capable de travailler 30, 40 et même 50 heures d'une
traite, sous pression intense. En fait, il préfère comme
ça. Les temps de réponse lents ne le dérangent pas,
il lui donnent la possibilité de récupérer un petit
somme entre deux compils. Si le planning n'est pas très serré,
le VERITABLE s'arrange en général pour rendre les choses
plus palpitantes en passant les neufs 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 sessions marathons
de 50 heures chacune. Non seulement ça contribue à impressionner
diablement son patron, qui désespérait de voir le projet
fini dans les temps, mais cela fournit aussi une excellente excuse pour
ne pas faire la doc. En général on peut dire que : * Aucun
VERITABLE ne travaille de 9 à 5 (à moins que ce ne soit l'autre
part de la journée), * Un VERITABLE ne porte pas de cravate, * Un
VERITABLE ne porte pas de chaussures à talons, * Un VERITABLE arrive
au travail à temps pour le déjeuner, * Un VERITABLE ne connait
pas, ou ne peut pas se souvenir du nom de sa femme, mais il peut réciter
par coeur la table ASCII (ou EBCDIC), * Un VERITABLE 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 VERITABLES 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.
Les diplômés de nos jours sont des pieds-tendres, protégés
des réalités de la programmation par des debuggers symboliques,
des éditeurs de texte qui comptent les parenthèses et des
systèmes d'exploitation "conviviaux". Pire que 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 de UNIX? Heureusement,
mon expérience vécue me dit que le futur reste radieux partout
pour les VERITABLES. Ni OS-370 ni FORTRAN ne montrent de signes de faiblesse,
malgré les tentatives des programmeurs PASCAL du monde entier. Même
les ruses les plus subtiles comme l'introduction de la structuration de
code 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
compil et permettant ainsi de compiler les boucles DO comme Dieu les a
créé pour. Même l'avènement de UNIX ne peut
pas être aussi mauvais pour les VERITABLES qu'on le disait avant.
A l'heure où j'écris ceci, la dernière release de
UNIX contient des potentialités dignes de n'importe quel VERITABLE
: deux interfaces utilisateurs différentes et subtilement incompatibles,
un driver TTY tortueux et compliqué, de la mémoire vituelle.
Si vous laissez de côté le fait qu'il soit un langage structuré,
même C peut se faire apprécier d'un véritable : après
tout, il ne vérifie pas les types de 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.
Sans oublier toutes les applications créatives et interessantes
qu'on peut faire avec le #DEFINE. Non, l'avenir n'est pas si mauvais. Et
même, ces derniers temps, la presse populaire a mentionné
que des brillantes promos de hackers quittent des temples comme le MIT
ou Stanford pour essaimer dans 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 VERITABLES
prêts à _Rentrer_dans_le_Tas_ et à _Résoudre_le_Problème_,
en _laissant_la_doc_pour_plus_tard. Longue vie au FORTRAN !