Citation :
Manifeste du véritable programmeur (1987)
Il était une fois, au bon vieux temps (durant ce qu'on appelle l'âged'or de l'informatique) il était facile de distinguer les HOMMES desJEUNOTS (la tradition les désigne aussi respectivement par lesdénominations de VÉRITABLES et de VISAGES PÂLES). A cette époque, lesVÉRITABLES étaient ceux qui connaissaient la programmation desordinateurs, et les VISAGES PÂLES étaient ceux qui ne la connaissaientpas. 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 mondedisait des choses du genre "Les ordinateurs sont trop compliqués pourmoi" ou bien encore "Les ordinateurs ne me disent rien, ils sont tropimpersonnels". Des recherches récentes ont d'ailleurs montré que lesVÉRITABLES n'ont besoin de rien dire à personne, et qu'en plus ils n'ontpas peur d'être impersonnels.
Cependant, comme toujours, les choses évoluent. Nous sommes dans unmonde où les braves mêmes peuvent disposer d'un ordinateur dans leurfour à micro-ondes, où les gosses de 12 ans peuvent ridiculiser unVÉRITABLE aux ASTEROIDS ou au PacMan, et où n'importe qui peut acheteret même comprendre son propre ordinateur personnel. Les VÉRITABLESrisquent fortement l'extinction, sous la concurrence des lycéens avecleurs Macintosh.Il est donc clairement urgent de mettre en évidence les différencesentre un lycéen joueur de PACMAN typique et un VÉRITABLE. En soulignantcette 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 deremplacer ceux-ci par des lycéens joueurs de PACMAN (quelques en soientles é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 estson langage de programmation. Les VÉRITABLES utilisent le FORTRAN, lesVISAGES-PÂLES utilisent le PASCAL. Niklaus Wirth, le concepteur dePASCAL participait à une conférence. On lui demanda comment il fallaitprononcer son nom. Il répondit "Vous pouvez soit faire un appel par nomen prononçant 'Wiirt', ou faire un appel par valeurs, en prononçant'Woort'". Visiblement, on peut détecter par cette réponse que NiklausWirth est un VISAGE PÂLE. Les VÉRITABLES, eux, ne connaissent qu'un seulmécanisme de passage de paramètres, le passage par adresse, qui estimplémenté dans les compilateurs FORTRAN-G et -H des IBM/370. LesVÉRITABLES n'ont pas besoin de tous ces concepts abstraits poureffectuer leur boulot, ils se contentent d'une perfo, d'un compiloFORTRAN 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 enFORTRAN.* Un VÉRITABLE fait de la comptabilité (pour autant qu'il en fait) enFORTRAN.* Un VÉRITABLE fait des programmes d'intelligence artificielle enFORTRAN.
S'il ne peut le faire en FORTRAN, il le fait en Assembleur, s'il ne peutle faire en Assembleur, c'est que cela ne vaut vraiment pas la peined'être programmé.
La programmation structurée
Ces derniers temps, les autorités académiques en informatiques sonttombées d'accord sur la manie de la programmation structurée. Ellesprétendent que les programmes sont plus faciles à comprendre quand leursauteurs pratiquent des techniques ou langages spéciaux de programmation.Ces savants ne sont pas tous d'accord sur quels langages ou quellestechniques il faut utiliser, et leurs exemples en général sont faits demanière à tenir sur une page de publication scientifique, visiblementinsuffisant pour convaincre qui que ce soit.
Quand j'étais sorti de l'école, je pensais être le meilleur programmeurau monde. Mon programme de morpion était imbattable, je programmais en 5langages différents et j'étais cap d'aligner un programme de 1000 lignesqui marchait du premier coup (OUI !).
Mon premier boulot dans le monde VÉRITABLE fut de lire et de comprendreun programme de 200.000 instructions FORTRAN, puis de diviser par deuxson temps d'exécution. Tout VÉRITABLE vous dira que la programmationstructurée ne vous est pas d'un grand secours pour résoudre ce genre deproblème. Il faut du TALENT.
Voici quelques opérations sur l'attitude des VÉRITABLES vis à vis de laprogrammation 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élangerles pinceaux.* Un VÉRITABLE préfère les IF arithmétiques, ça prend moins de placemémoire.* Un VÉRITABLE est capable d'écrire du code auto-modifiant si cela faitgagner 20 nanosecondes.* Un VÉRITABLE n'a pas besoin de commentaires, il préfère se fier aucode.* 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 desASSIGN, GOTO.
Les structures de données reçoivent aussi beaucoup de publicité cestemps-ci. Les types de données abstraits, les pointeurs, les listes etles 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 quevous pouvez écrire des programmes partant de structures de données, aulieu de faire l'inverse.
Ainsi que le sait tout VÉRITABLE, la seule structure de donnéesréellement utiles est le tableau. Les listes, les structures, leschaînes de caractères, les ensembles, tout ça sont des variétés detableaux qui peuvent se programmer comme tels sans se compliquer la vieavec des distinguos subtils.
La pire des contraintes avec cette fantaisie de types de données est quevous êtes obligés de les déclarer, et vous savez bien qu'un VÉRITABLElangage de programmation doit reconnaître implicitement le type dedonné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 lesVÉRITABLES ?
MS-DOS? Dieu merci non! Après tout, MS-DOS est un système d'exploitationjoujou. Même les petites mémés et les lycéens peuvent comprendre etutiliser MS-DOS.
UNIX est bien un peu plus compliqué. Un hacker typique sous UNIXn'arrive jamais à se souvenir quel est le nom de la commande PRINTvalable pour la semaine.Mais quand on y pense un peu, UNIX n'est qu'un jeu vidéo un peu mis envaleur. On ne travaille pas sérieusement sous UNIX, on se borne àenvoyer des vannes au monde entier par UUCP, à écrire des jeuxd'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'ilvient d'avoir. Un VÉRITABLE fortiche peut écrire du JCL sans consulterce manuel du tout. Un VÉRITABLE carrément extra peut trouver des bugsenfouis dans un dump mémoire de 6 Mégaoctets sans utiliser unecalculatrice hexadécimale.
OS/370 est véritablement un système d'exploitation remarquable. Il estpossible la dessus de détruire des journées de travail avec un blanc malplacé, ce qui incite les équipes de programmation à une plus grandeconcentration mentale. La meilleure manière pour aborder le systèmeOS/370 est par une perforatrice de cartes. Certains prétendent qu'ilexiste un time-sharing sur OS/370, mais une étude minutieuse à montré lecontraire.
Les outils de programmation
Quels outils un VÉRITABLE emploie-t-il? En théorie, il pourrait rentrerses programmes directement par les clés du panneau frontal de sonordinateur. C'était effectivement le cas à l'occasion du temps où lesmachines avaient encore cet accessoire. Il fut un temps ou un VÉRITABLEconnaissait 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 allaitpas quand on coupait le jus. De nos jours, les mémoires oublient cequ'on leur demande de retenir et gardent des choses qu'elles feraientmieux d'écraser. La légende dit que Seymour Cray, le père du superordinateur CRAY I et de la plupart des Control Data a rentré aux clés lepremier système d'exploitation du CDC-7600 quand celui-ci a démarré pourla 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. Unjour, il reçut un appel longue distance d'un utilisateur dont le systèmeavait crashé au milieu d'une sauvegarde importante. Jim avait alorsréparé les dommages au téléphone en faisant rentrer par l'utilisateurles instructions de disk I/O aux clés, en patchant les tables systèmesen 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 engénéral une perfo ou une imprimante comme outil de génie logiciel, ilpeut s'en sortir en cas d'urgence avec juste un tableau frontal et uneligne téléphonique.
Dans certaines sociétés, "édition de texte" ne signifie plus de nosjours 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 tellesituation, un VÉRITABLE doit se résigner à utiliser un éditeur de texte.La plupart des systèmes permettent le choix entre plusieurs éditeurs, etil s'agit d'en choisir un qui soit compatible avec votre style detravail. Beaucoup de personnes croient que les meilleurs éditeurs detextes du monde proviennent des laboratoires XEROS à Palo Alto, sur lessystèmes ALTO et DORADO.Malheureusement, comment voulez vous qu'un véritable puisse utiliser unsystème d'exploitation au nom aussi ridicule que SMALLTALK, et encoremoins manipuler une souris ?
Quelques un des concepts de ces éditeurs de XEROS se sont retrouvés dansdes éditeurs tournant sur des systèmes aux noms plus raisonnables (commeEMACS, 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 aussivicieux chez un éditeur qu'il peut l'être chez une femme. En réalité, unVÉRITABLE préfère du "Vous l'aviez voulu, tant pis pour vous", ducompliqué, de l'énigmatique, du mystérieux, puissant et impitoyablecomme TECO pour tout dire.
On a fait remarquer qu'une séquence de commande TECO ressemble plus à unbruit de télétransmission qu'à du texte lisible. Un jeu bien connu surTECO consiste à taper votre nom en tant que commande et à voir ce quecela donne. N'importe quelle erreur de frappe dans TECO recèle une forteprobabilité de destruction de votre programme, ou mieux encore,d'introduction des erreurs dans un sous programme qui fonctionnait dansle passé.
C'est ce qui explique pourquoi un VÉRITABLE rechigne à éditer unprogramme qui tourne presque. Il préfère patcher directement le binaireà l'aide d'un merveilleux outil appelé SUPERZAP (ou son équivalent surune machine non-IBM). Cela marche tellement bien, que beaucoup deprogrammes IBM n'ont que peu de ressemblances avec le source FORTRAN. Enré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 sauraitmême pas par quoi commencer. On appelle ça : "La protection del'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 lesVISAGES-PÂLES. Voir ci-dessus à propos de la programmation structurée.* Les aides au débogage en langage source. Un VÉRITABLE travailleuniquement sur des dumps mémoire.* Les compilateurs avec des protections de débordement de tableaux. Ilsbrident la créativité, empêche les usages les plus intéressants del'instruction ÉQUIVALENCE. Ils rendent impossible la modification desinstructions 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 sessources dans des bacs de cartes personnels fermés à clé.
Les VÉRITABLES au travail
Où travaille un VÉRITABLE? Quels genres de programmes requièrentl'attention de cet individu aussi talentueux? Vous n'en trouverez pas entrain d'écrire une paie-compta en COBOL, ou encore faisant du trid'adresses pour un club de micro. Un VÉRITABLE ne s'attelle qu'à destâches extraordinaires (au sens étymologique).
* Un VÉRITABLE travaille au laboratoire national de Los Almos et écritdes simulations de bombes nucléaires sur CRAY-I.* Un VÉRITABLE travaille au centre national de sécurité, pour décoderdes messages russes.* Pour que la NASA puisse envoyer des gars sur la lune et les rameneravant les russes, il a fallu des milliers de VÉRITABLES.* Les VÉRITABLES travaillent chez BOEING pour concevoir des missiles decroisière.
Les VÉRITABLES les plus formidables travaillent au Jet PropulsionLaboratory en Californie. Beaucoup d'entre eux connaissent par coeur lelogiciel de pilotage des sondes Pionner et Voyager. En combinant desgros programmes FORTRAN au sol avec un petit programme en langagemachine la haut; ils sont capables de prodiges de navigation etd'improvisation, comme taper dans une fenêtre de dix kilomètres de largesur Saturne après six ans dans l'espace. Ou bien encore de réparer desradios et batteries endommagées. Il paraîtrait qu'un VÉRITABLE a réussià fourrer un programme de reconnaissance de forme de quelques centainesd'octets dans un coin de mémoire libre, ce qui a permis de découvrir unenouvelle lune de Jupiter !
Il est actuellement prévu pour le programme GALILEO de balancer la sondevers Jupiter au moyen d'une assistance gravitationnelle de Mars. Cettetrajectoire va passer à 80 kilomètres (plus ou moins 3 kilomètres) de lasurface 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 mondetravaillent pour le gouvernement Américain, et spécialement pour leDé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. Ilsemblerait 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 grandlangage unifié appelé Ada. Pendant un temps, il semblait que Ada allaità l'encontre de la programmation VÉRITABLE (un langage avec desstructures, des types de données, des points-virgules, bref un langagequi étiolerait la créativité des VÉRITABLES). Heureusement, le langagequi fut finalement adopté par le DoD comporte suffisamment depossibilités intéressantes pour le rendre potable. Il est d'uneeffroyable complexité, et il contient des outils pour tripoter lesystème d'exploitation et réordonner la mémoire. Edsger Dijkstra nel'aime pas (Vous connaissez Dijkstra, c'est celui qui a écrit le livre"GOTOs considérés comme nuisibles". Une oeuvre remarquable applaudie partous les programmeur PASCAL et les VISAGES-PÂLES). En tout casrassurons-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 plustriviales que la destruction de la terre, à condition que ce boulotpuisse rapporter des sous. ATARI par exemple, emploie plusieursVÉRITABLES pour écrire ses jeux vidéos (pas pour y jouer, un VÉRITABLEconnaît toutes les astuces pour battre la machine à chaque coup et ce neserait pas glorieux). Les gens de chez LUCAS FILM sont aussi desVÉRITABLES, il faudrait être fou pour refuser des millions de dollarsdes fanas de "l'empire contre attaque". En CAO, il n'y a pour le momentpas assez de VÉRITABLES; Ils n'ont pas encore trouvé le filon. On ytrouve en général des gens qui y sont uniquement pour faire du FORTRANet é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 fairequelque chose qu'il ferait de toute manière gratos (Bien qu'il fasseattention de ne pas le dire trop fort). De temps en temps, il arrive quele VÉRITABLE sorte de son bureau pour respirer un bol d'air et prendreun verre de bière. Pour le reconnaître à ces moments, voici quelquestrucs :
* Dans un pot, les VÉRITABLES sont ceux qui sont dans un coin en trainde discuter des protections des systèmes d'exploitation et des moyenspour les planter.* Dans un match de foot, le VÉRITABLE est celui en train de comparer lejeu avec sa simulation sur un listing.* A la plage, le véritable est celui qui dessine des arbresprogrammatiques sur le sable.* Aux enterrements, le VÉRITABLE est celui qui dit "Pauvre Tim, son tritournait presque quand il a eu son attaque".* Au supermarché, le VÉRITABLE est celui qui insiste pour faire passerlui-même les canettes de bière devant le lecteur optique, si lacaissiè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 questionimportante pour les patrons de VÉRITABLES, car vu le coût d'un telspécimen, il est préférable de leur donner un environnement tel qu'ilpuisse accomplir efficacement son travail.
Un véritable typique vit devant un terminal d'ordinateur. Autour de ceterminal, 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 surfaceplane du bureau.* Environ une demi-douzaine de tasses de café froid. Occasionnellement,il peut y avoir des mégots flottants dans les tasses. Quelques foisaussi, les tasses contiennent des restes de jus d'orange.* A moins d'un spécimen très fort, il y aura des exemplaires des manuelsdu JCL-OS et des principes de base ouverts à une page particulièrementintéressante.* Scotché au mur, on trouvera bien sûr un listing calendrier SNOOPY.* Jonchant le sol, des emballages MARS, BOUNTY ou tout autre équivalentdu 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 decigarillos pour les grandes occasions.* Sous les cigarillos, un NORMOGRAPHE laissé là par l'occupantpré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'unetraite, sous pression intense. Les temps de réponse lents ne dérangentpas le VÉRITABLE, ils lui donnent la possibilité de faire un petit sommeentre deux compiles. Si le planning n'est pas trop serré, le VÉRITABLEs'arrange en général pour rendre les choses plus palpitantes en passantles neuf premières semaines sur un point réduit mais intéressant duprojet, puis en finissant le reste du projet la dernière semaine enquelques marathons de 50 heures. Non seulement cela contribue àimpressionner diablement son patron, qui désespérait de voir le projetfinir dans les temps, mais cela lui fournit aussi une excellente excusepour 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 soitl'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 à troisheures du matin, il survit avec des barres de MARS et des tasses decafé.
L'avenir du VÉRITABLE
Que nous réserve l'avenir. C'est un sujet de préoccupation pour lesVÉ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 deces jeunes n'ont jamais vu un ordinateur avec un panneau frontal. Onpeut à peine trouver un nouveau diplômé qui sache calculer en hexa sansune 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èmesd'exploitations "conviviaux". Pire de tout, ces soi-disant "chercheurs"du logiciel récoltent des diplômes sans même avoir jamais appris leFORTRAN! Sommes-nous destinés à devenir une industrie de programmeursPASCAL ou de maniaques UNIX?
Heureusement, mon expérience vécue me dit que le futur reste radieuxpour les VÉRITABLES, Ni OS/370 ni FORTRAN ne montrent de signes defaiblesses, malgré les tentatives des programmeurs PASCAL du mondeentier. Même les ruses les plus subtiles comme l'introduction de lastructuration 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 uneoption de compile, et permettant ainsi de compiler des boucles DO commeDieu les a créées pour.
Mais l'avenir de UNIX peut ne pas être aussi mauvais pour les VÉRITABLESqu'on le disait avant. La dernière release de UNIX contient despotentialités dignes de n'importe quel VÉRITABLE : Deux interfacesutilisateurs différentes et subtilement incompatibles, un driver TTYtortueux 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'unVÉRITABLE. Après tout, il ne vérifie pas les types des variables, lesnoms ont seulement sept caractères (ou dix? ou huit?) et vous avez enplus les pointeurs (Comme si on avait les avantages du FORTRAN et del'Assembleur conjugués). Et sans oublier toutes les applicationscré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 pressepopulaire a mentionné que les brillantes promos d'hackers quittent destemples comme le MIT ou STRANFORD pour envahir le monde. L'esprit est detoute évidence en eux. Tant qu'existent encore des objectifsmal définis, des bugs bizarres et des plannings irréalistes, il y aurades VÉRITABLES prêts à foncer dans le tas et à résoudre les problèmes enlaissant la doc pour plus tard.
LONGUE VIE AU FORTRAN !
|