Analyse critique et dialectique du « véritable » programmeur

    Tout d'abord, un petit mot pour vous dire que ces aventures me sont réellement arrivées - mêmes si celles-ci sont un peu romancées -, et dans un passé pas si lointain que cela. Par discrétion, j'ai volontairement modifié certains noms afin de ne porter aucun préjudice. Toutes ressemblances avec des faits ou des personnes existantes ou ayant existées ne seraient que pure coïncidence.

    Au bon vieux temps, durant ce qu'on appellera 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 ». À 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, l'entropie - ou écho du bordel ambiant - augmente. En d'autres termes, les choses évoluent. Nous sommes dans un monde où les braves mêmes peuvent disposer d'un ordinateur dans leur voiture ou leur four à micro-ondes, où les gosses de douze ans peuvent ridiculiser un véritable aux Asteroids ou au PacMan, et où n'importe qui peut acheter et même - c'est ce qu'essaye de faire croire une certaine publicité - 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 et ce, quelles qu'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 principalement le FORTRAN - mais peuvent occasionnellement faire digression en daignant coder en Forth ou RPL - et les visages pâles, le PASCAL, voire de nos jours le C et ses dérivés.

    Un jour où Niklaus Wirth, le concepteur de PASCAL participait à une conférence, quelqu'un 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 connaissant qu'un seul mécanisme de passage de paramètres, le passage par adresse, qui est implanté 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 perforatrice, d'un compilateur FORTRAN et d'un café.

    S'il ne peut le faire en FORTRAN, il le fait en assembleur, et 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 informatique 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. Enfin, au moins l'un des meilleurs... Mon programme d'Othello était imbattable, je programmais en cinq langages différents et j'étais capable d'aligner un programme de mille lignes qui marchait du premier coup. Si, si, je vous assure... Je maîtrisais même la programmation des VAX en assembleur, c'est vous dire...

    Mon premier boulot dans le monde véritable fut de lire et de comprendre un programme de deux cent mille instructions FORTRAN IV - une sombre histoire de modélisation de la terre et de ses marées (Paris se soulève de quarante centimètres deux fois par jour...) pour des études de mécanique spatiale et d'orbitographie -, 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 :

    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 utile est le tableau. Les listes, les structures, les chaînes de caractères, les ensembles sont des variétés de tableaux qui peuvent se programmer comme tels sans se compliquer la vie avec des distinguos subtils. Au pire, pour des structures contenant des types de données exotiques, il reste possible de tout mettre dans un tableau d'entiers et d'utiliser l'instruction EQUIVALENCE.

    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 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 grands-mères et les lycéens peuvent comprendre et utiliser MS-DOS. IBM-DOS, sûrement pas ! IBM-DOS n'est qu'un MS-DOS amélioré et rationalisé.

    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. Est-ce « lp » ou « lpr » ? D'ailleurs, quel est le nom de le file d'attente associée à l'imprimante ? 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. C'est d'ailleurs, aux yeux d'un véritable, la seule justification de l'existence d'UNIX. Pouvoir faire tourner décemment TeX, le seul formateur de texte qu'un véritable puisse utiliser, non qu'il s'en serve pour faire de la documentation, mais pour coder différents algorithmes. L'un de mes véritables préférés, contributeur du TeX Users Group, a même réussi à programmer un interpréteur BASIC en TeX...

    VMS ? Non, VMS est bien trop structuré et cartésien pour permettre à une imagination débridée de s'exprimer pleinement. FLEX, UniFLEX, Prologue ? Certes non. Si ces systèmes sont particulièrement tortueux, ils n'offrent pas assez de fonctionnalités et d'effets de bord dignes d'intérêt aux yeux d'un véritable.

    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 fort peut écrire du JCL sans consulter ce manuel du tout. Un véritable carrément extraordinaire peut trouver des bugs enfouis dans un dump mémoire de six mégaoctets sans utiliser une calculatrice hexadécimale.

    OS/370 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 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 a montré le contraire.

Les outils de programmation : quels outils un véritable emploie-t-il ?

    En théorie, il pourrait entrer ses programmes directement par les clefs du panneau frontal de son ordinateur. C'était effectivement le cas au temps où les machines avaient encore cet accessoire. Il fut un temps ou un véritable connaissait typiquement par coeur sa séquence de boot en hexadécimal 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 courant. 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 clefs 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 de feue Digital Equipment Corporation. Un jour, il reçut un appel longue distance d'un utilisateur dont le système avait planté au milieu d'une sauvegarde importante. Jean-Pierre avait alors réparé les dommages au téléphone en faisant rentrer par l'utilisateur les instructions de « disk I/O » aux clefs, en patchant les tables systèmes en hexadécimal et en se faisant relire les contenus des registres à l'écouteur. La morale de cette histoire est que même si un véritable utilise en général une perforatrice et 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 dix 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 son propre 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 outil 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 commandes TECO ressemble plus à un bruit de télétransmission qu'à du texte lisible et compréhensible. Un jeu bien connu sur TECO consiste à taper son 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 d'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 cela « la protection de l'emploi ».

    Voici quelques outils de génie logiciel non employés par les véritables :

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 du terme.

    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 hauts 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 et un typage fort, 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 patron puisse le payer pour faire quelque chose qu'il ferait de toute manière gratuitement, bien qu'il fasse attention de ne pas le crier 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 :

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 :

    Un véritable est capable de travailler trente, quarante, et même cinquante 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 cinquante 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 documentation.

    En général, on peut dire :

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 hexadécimal 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 le 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 compilateurs FORTRAN-77, mais tous offrent la possibilité de revenir au FORTRAN-66 moyennant une option de compilation, et permettant ainsi de compiler des boucles DO comme Dieu les a créées...

    Mais l'avenir d'UNIX peut ne pas être aussi mauvais pour les véritables qu'on le signalait. La dernière mouture d'UNIX contient des potentialités dignes de n'importe quel véritable : plusieurs interfaces utilisateurs différentes et subtilement incompatibles, un driver TTY tortueux et compliqué, de la mémoire virtuelle. De même, si vous laissez de côté 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 promotions d'hackers quittent des temples comme le MIT ou Stanford pour envahir le monde. L'esprit est de toute évidence en eux. Tant qu'existeront 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 documentation pour plus tard.

Retour