D'un petit détail d'implémentation vers un manifeste sans limite (Daniel Porumbel © 2023 ) Que cela nous plaise ou non, la vitesse pratique de tout algorithme qui s'exécute réellement quelque part dépend de la qualité de son implémentation. Après des années d'exposés à diverses conférences (d'informatique), je viens seulement de réaliser que tous mes discours se terminent invariablement par une phrase du type « Et pour finir, je vais vous épargner les détails d'implémentation parce que je préfère me focaliser sur l'essentiel et sur les concepts de haut niveau ». Malgré ses quelques mérites, cette phrase est beaucoup trop simpliste pour être vraiment réaliste. Elle est de nature à détourner le lecteur d'attention moyenne de certaines vérités. Comme une porte dérobée dans un logiciel, une conséquence inavouée est que la qualité de l'implémentation a très peu d'impact sur le temps de calcul et qu'on ne doit pas s'y attarder. Mais en réalité, le temps de calcul dépend toujours d'un facteur constant (voire plus grand) K directement lié à l'implémentation. Ce facteur constant K est invisible lorsqu'on évoque des complexités théoriques comme O(n^2), O(n^2 log n), etc. Mais imaginons un vendeur qui annoncerait un coût à payer de 1000 euros multiplié par un facteur constant $K=2$ ou $K=6$ sans aucune importance dans l'absolu! Si cela puisse être vrai pour certains, je ne me laisserais pas convaincre si vite. Je remercie même le destin de m'avoir épargné le vide d'une existence dans un luxe si démesuré. J'ai entendu un jour une sommité dire dans une conférence plénière qu'une certaine théorie serait essentielle pour les algorithmes qui ont envahi nos vies. J'ai été stupéfait de voir à quel point tout le monde était heureux de penser que l'existence de tous ces algorithmes avait été rendue possible principalement par cette théorie magnifique. Très peu se rendaient compte que cette vision reposait sur un grand nombre d'hypothèses simplificatrices très chères aux théoriciens. D'abord, si on suit cette vision, on évacue trop facilement le fait que tous ces algorithmes ont dû être implémentés par quelqu'un. Et on ne doit jamais l'oublier: « Le diable est dans les détails. » Je trouve donc plus réaliste de rester prudent avant de penser qu'une théorie seule peut tout expliquer. L'essentiel est parfois si difficile à saisir que même les meilleurs cerveaux doivent faire un authentique effort pour le pénétrer en profondeur. Considérons d'abord que le temps de calcul: les théories peuvent proposer une grande variété de leviers pour déterminer la complexité, mais la pratique est trop complexe et échappe facilement aux simplifications et axiomatisations de la théorie. Les facteurs qui peuvent influencer le temps de calcul pratique sont même trop nombreux pour pouvoir les lister ici. Le monde réel nous réserve plus de surprises que la théorie. J'ai déposé à https://youtu.be/9NE0rdLM3Zg deux programmes C++ qui sont évidemment exponentiels en théorie. Les deux programmes réalisent l'allocation et l'initialisation d'un tableau avec 2^n cases. Mais la vidéo montre qu'une des deux implémentations nécessite un temps proche de 0, alors que l'autre est exponentielle (elle prend 3.2 secondes pour n=30, 1.6 secondes pour n=29 ou 0.8 secondes pour n=28). Il ne s'agit pas d'un comportement étrange lié à une configuration atypique de ma machine, car il a été confirmé par environ 50 de mes collègues sur leurs machines. C'est le résultat d'un sondage lancé en novembre 2022 sur la liste de la communauté française de recherche opérationnelle (gdr-ro) combiné avec un sondage lancé en février 2022 sur la liste de mon laboratoire Cedric. Ce comportement a été infirmé par une seule personne sur environ 50. Une chose est claire: s'il y a une machine avec une configuration atypique, ce n'est pas une des 50 machines qui ont confirmé le comportement, mais celle qui l'a infirmé. Je suis assez sûr que si vous exécutez un programme de complexité linéaire O(n) prouvée théoriquement sur 50 machines, une des machines pourra prendre bien plus que O(n). C'est la nature humaine : les certitudes n'existent qu'en théorie. Il y a des chercheurs très académiques (qui visent à publier dans des conférences comme Focs, Soda, etc) qui s'intéressent qu'à des algorithmes théoriques sans accorder aucune attention à l'implémentation. Certains sont même fiers de travailler uniquement avec des algorithmes conçus pour ne jamais être implémentés! Mais si on développe l'informatique uniquement dans cette direction théorique, on ne pourra jamais expliquer le comportement pratique inattendu des deux programmes de la vidéo suscitée. Je peux avouer que j'ai moi aussi publié des algorithmes sans implémentation (e.g., voir mon seul papier sur les fonctions sous-modulaires). Mais on doit tous accepter que ces algorithmes ont toutes les chances de rester uniquement confinés dans notre imagination. Ils peuvent contenir les idées les plus brillantes du monde, mais tant qu'ils restent que sur le papier, on peut être certain qu'ils n'ont aucune chance d'« envahir notre vie ». J'ai beaucoup d'estime pour beaucoup de théories physiques, mathématiques ou philosophiques qui expliquent des phénomènes qui existent dans la vie réelle. Je trouve aussi très honorable que des mathématiciens s'intéressent à des idées théoriques qui captivent l'esprit de beaucoup. Si la science ne servait que des buts très concrets, si l'état n'investissait que dans les sciences ayant un impact immédiat sur l'économie, alors cette société deviendrait vide, i.e., on perdrait la sève vitale nécessaire pour assurer un développement à long terme. Mais à quoi bon étudier un algorithme qui n'existe que sur papier? Si on choisit cette voie uniquement pour échapper aux trop rudes réalités de la programmation et de la vie réelle, bien des améliorations sont vraiment encore possibles. Les sciences de la programmation ont eu un statut peu flatteur depuis leur invention. Voici comment une très grande dame voyait la programmation dans les années 1960 [1, p. 46] >To her, math was an elevated intellectual pursuit, while engineering was the >grubby work of machinists -- a fairly prevalent attitude among those studying >math theory. "It's hard to describe how much contempt we had for the engineers in >the computer center.", [Jean] Sammet recalled. "And I thought of a computer as some >obscene piece of hardware that I wanted nothing to do with." Lorsque j'ai lu ces mots pour la première fois je me suis demandé si quelque chose avait changé depuis 60 ans? Mais une question plus importante a surgi juste après: qu'est-ce qui a pu motiver ces gens à coder du matin au soir dans un tel environnement qui n'offre aucune reconnaissance? Il va sans dire qu'ils n'ont pas programmé pour essayer d'impressionner une femme comme celle évoquée plus haut. Alors pour quelle autre raison? À l'époque, l'énorme potentiel économique de l'informatique n'était pas encore très visible et il y avait peu de gains financiers en vue (à court terme). Pour essayer de donner une réponse, je dois continuer à me hasarder sur la route d'une science non exacte, la philosophie, mais toujours avec l'objectif d'expliquer des phénomènes terre à terre. Comme l'informatique n'est pas complètement déconnectée des autres sciences, je me permets de sortir du cadre (de l'informatique) pour aborder une idée qui vient de la physique. J'idéalise un peu la physique, comme une science qui permet de faire des théories très élevées, très sérieuses mais toujours avec le but de les projeter sur la vie réelle, de les confronter à la réalité; lorsqu'on parle de théories dans un tel contexte, il ne s'agit pas de bulles de savon qui crèvent dès qu'elles atteignent le sol de la réalité. Intuitivement, on peut imaginer une telle théorie comme un éclair qui émerge dans les nouages mais qui établit un contact de forte intensité avec le sol (de la réalité): les idées de haut niveau se matérialisent et deviennent réalité. En mettant une nouvelle machine en action, l'étincelle de la pensée humaine crée un lien presque charnel avec les hommes servis, en conférant une dignité à l'invention. C'est comme ça qu'on donne vie à la matière. Dans une certaine mesure, nous transmettons à la matière l'étincelle de vie que le Créateur tout-puissant a placée dans l'homme. Le processus a commencé il y a longtemps, lorsque le tout premier homme préhistorique a inventé les premiers outils agricoles, s'élevant ainsi au-dessus du niveau animal. Je pourrais citer Tesla, un grand physicien et ingénieur qui aurait dû gagner le prix Nobel pour l'invention de la radio (c'est le moins qu'on puisse dire). >The progressive development of man is vitally dependent on invention [note: and >particularly dependent on software today]. It is the most important product of >his creative brain. Its ultimate purpose is the complete mastery of mind over >the material world, the harnessing of the forces of nature to human needs. This >is the difficult task of the inventor who is often misunderstood and >unrewarded. But he finds ample compensation in the pleasing exercises of his >powers and in the knowledge of being one of that exceptionally privileged class >without whom the race would have long ago perished in the bitter struggle >against [the] pitiless elements [of nature]. Ces mots s'appliquent aussi au logiciel, car le mot « nature » fait référence aux lois éternelles de l'univers qui dictent les règles qui régissent toute notre existence. Si vous lisez ces lignes sur un ordinateur, c'est parce que l'humanité a su maitriser l'énergie (électrique) et canaliser les lois (physiques) de la nature pour les faire afficher ce texte. Il s'agit d'un travail réalisé sur plusieurs générations : une génération a maitrisé l'électricité, une autre génération a inventé les transistors, une autre a conçu le matériel et nous sommes aujourd'hui arrivés aux aspects logiciels (software). C'est ainsi que l'humanité a réussi à mettre les forces de la nature à notre service ; tout cela fait partie de ce que Tesla a décrit ci-dessus par « the harnessing of the forces of nature to human needs ». Ce sont les inventeurs qui nous ont libérés de l'emprise de la gravité. Les inventeurs qui ont lutté pour nous offrir cette libération des forces aveugles de la nature relèvent de plusieurs catégories. Il s'agit d'une tache avec de multiples facettes: A) Les ingénieurs mentionnés plus haut, ceux qui ont conçu les premiers logiciels il y a 60 ans, ont contribué à mettre les forces (physiques) du matériel électronique à notre service. Cette étincelle a conduit à la gigantesque révolution informatique qu'on connait aujourd'hui. Tesla a aussi vu juste sur cet aspect: l'activité de l'inventeur est souvent mal comprise et pas récompensée ("misunderstood and unrewarded"). Cela est bien confirmé par l'attitude de la dame citée plus haut: l'humanité ne reconnait pas toujours ses inventeurs à la hauteur de leur contribution. Sauf pour ceux qui arrivent à mettre les pieds sur une pseudo-gloire (non sans faire un travail de networking pour bien négocier leurs intérêts), la plupart des inventeurs ne sont pas appréciés à leur juste valeur. Mais si on vit aujourd'hui mieux qu'il y a 100 ans, c'est plutôt grâce au progrès technologique qu'aux avancées sociales (dont la presse parle plus souvent). Il serait donc logique d'honorer nos inventeurs au moins au même niveau que nos artistes, nos hommes de lettres, nos sociologues, journalistes, acteurs, etc. Mais un chercheur doit presque se considérer chanceux aujourd'hui s'il arrive à gagner sa vie correctement. Pour prendre les bons repères sur ses aspects, il faut savoir que le principal moteur du développement économique sur le long terme est le progrès technologique, plutôt que le progrès des théories socio-économiques ou politiques (genre gauche, droite, libéralisme, etc) si souvent débattues dans l'espace public -- à condition que celles-ci ne soient pas désastreuses. Par exemple, un retard technologique d'une génération fera à coup sûr perdre à un pays toute guerre commerciale, économique ou militaire. Si le niveau technologique d'une société reste constant, il n'y a aucune raison de voir une évolution de la vérité concernant l'organisation socio-économique optimale. Sans progrès technologique, la meilleure façon d'organiser une société peut rester la même. B) Le concepteur du C++ a décrit qu'une de ses motivations pour la création de ce langage trouvait sa source dans la possibilité de soulager la souffrance associée à certaines tâches: « I swore never again to attack a problem with tools as unsuitable as those I had suffered while designing and implementing the simulator [or a random task]." Le nouveau langage a ainsi apporté un soulagement à des millions de gens. Malgré cette remarquable réussite, Stroustrup est infiniment moins apprécié et connu que Turing. Même dans la presse de masse il y a des journalistes qui nous font comprendre que la machine de Turing serait la pierre angulaire de toute l'informatique ; beaucoup ont été persuadés à croire à ce genre d'histoires. Mais toute l'explosion de l'informatique à laquelle on assiste aujourd'hui est essentiellement due à de gens comme Stroustrup et non pas à des gens comme Turing. Je préfère cet avis de Christopher Strachey [2, p. 100]: "most of the abstract and theoretical work is sterile because it has no point of contact with real computing" [2]. En effet, si la machine Turing n'avait pas existé, le niveau de développement de l'informatique aurait été exactement le même aujourd'hui. Mais si les concepteurs du C et du C++ n'avaient pas existé, l'informatique aurait été beaucoup moins avancée. Ou bien quelqu'un d'autre aurait dû inventer des langages similaires. Si un jour on interdisait d'étudier la machine Turing dans les cours d'informatique, n'affecterait en rien la vie de tous les jours des millions de programmeurs que compte notre monde. Ceux-là ne se confrontent jamais à des problèmes non décidables ou semi-décidables; pour eux, il n'y a rien d'incalculable. Mais imaginez le désastre dans le monde de l'informatique si on interdisait la programmation orientée objet (inventée à Oslo [1, p 108] par des chercheurs en recherche opérationnelle qui ont conçu le langage Simula parce qu'ils avaient besoin d'un langage mieux structuré). Un progrès solide et durable a souvent besoin d'un processus de développement graduel et progressif, comme indiqué à la première ligne de la citation de Tesla. L'informatique est arrivée a l'explosion qu'on connait d'aujourd'hui grâce à beaucoup de petits pas. La révolution informatique ne s'est pas produite grâce à une seule « grande idée » ou à un petit nombre d'inventions ponctuelles. Il est très trompeur de reconnaître uniquement la contribution de quelques individus (genre Turing, Von Neumann), en oubliant les bataillons de chercheurs et le soldat inconnu. Dans le meilleur des cas, une invention ponctuelle a pu être une étincelle pour motiver ou pour déclencher un mouvement de masse. En ignorant cela, certains sont tombés dans l'erreur d'accorder à Knuth tout le mérite du système typographique LaTeX avec ses innombrables paquetages connus aujourd'hui. C'est comme si on attribuait aux frères Wright le mérite de tous les avions jamais construits par l'homme! C) Si on n'est pas aujourd'hui tous condamnés à utiliser Windows, c'est en partie grâce au mouvement open-source qui illustre parfaitement la citation de Tesla. L'open-source est un modèle de travail à faible rémunération mais très utile pour tous, plus utile que les très profitables « géants du web ». Je suis tombé sur une citation d'un économiste américain Adolf Berle: « Le motif du profit ou du prestige personnel ne suscite jamais de grands efforts en vue d'accroître les capacités des autres hommes et des autres femmes, d'étudier leur culture, d'augmenter les ressources humaines à l'intérieur d'une communauté, ou de développer des valeurs autres que commerciales. Si un système économique venait à dépendre uniquement du motif du profit, il [serait trop mécanique et il] tendrait à stagner », p. 125, Science et vie, La Lune, 1969, ré-édité en 2019. Le monde open-source ne nous a pas offert que des logiciels; il a réussi à mobiliser des motivations plus puissantes que celles du profit pour les mettre au service de millions de gens. Toutes les théories que l'humanité a conçues n'ont pas eu des retombées similaires sur la vie de millions de gens. La recherche très théorique nous apporte d'autres bénéfices. D'abord, elle favorise le développement de certaines forces intellectuelles de l'homme; les questions théoriques ont donné du pain sur la planche à tous ceux qui ont souhaité les utiliser pour exercer leur cerveau. Je trouve cela tout à fait honorable et je pense que je l'ai fait aussi dans une certaine mesure. Mais voici un grand risque souvent sous-estimé: cette attitude pourrait inciter certains à pratiquer la science comme si on pratiquait un sport de musculation intellectuelle. Un tel sport aurait le mérite de cultiver en nous un esprit de sacrifice et une certaine abnégation pour renforcer notre motivation collective. Mais les sportifs (intellectuels) n'ont pas vraiment livré une lutte directe contre les forces impitoyables de la nature pour les mettre à notre service. Ce ne sont pas eux qui nous ont libéré de l'emprise de la gravité et des autres forces impitoyables de la nature. Et la société moderne n'est pas si dépendante d'eux; elle est plus dépendante des logiciels pratiques que l'humanité a écrit. Revenons à la grande dame citée plus haut, très dégoutée par le travail de programmation: "Its hard to describe describe how much contempt we had for the engineers in the computer center". Un ingénieur en informatique, peut-il trouver quoi que ce soit de positif dans des mots aussi dévalorisants? Paradoxalement, la réponse est peut-être « Oui ». Aussi inexplicable que cela puisse paraître, cette femme a fini sa vie dans des salles informatiques aux côtés de ces détestables programmeurs. Son nom est Jean Sammet et elle est une des conceptrices du langage Cobol (et aussi la prof d'informatique de Ritchie, un des concepteurs du C). Elle a fini sa carrière aux côtés de ces ingénieurs qu'elle méprisait au début. Elle n'est pas connue pour avoir travaillé dans ce qu'elle appelait au début « une quête intellectuelle de haut niveau » ("an elevated intellectual pursuit"). Peut-être qu'elle a réalisé que cela risquerait de ne mener nulle part, surtout si ce qu'on entends par « elevated intellectual pursuit » est juste un travail théorique à l'abri des dures difficultés de la réalité. Une des conséquences des arguments énoncés jusqu'ici est que le monde scientifique se retrouve sous l'emprise d'un phénomène très négatif que j'essaie de décrire par la suite. Un trop grand nombre de nos élites scientifiques ont une compréhension très approximative du génie logiciel; ils pensent que la programmation « c'est de la cuisine; ça fait partie des petites choses qui doivent être faites pour obtenir des résultats ». Tant que cette vision n'est pas remise en cause, la communauté sera fracturée ainsi: a) D'un côté, les sommités académiques qui n'ont jamais étudié l'exécution d'un algorithme sur une machine peuvent manquer de profondeur dans leurs réflexions; ils se focalisent souvent sur les « grandes idées », sans réaliser que la dynamique et l'efficacité d'un algorithme peuvent facilement changer si l'on modifie un « petit » paramètre ou même si l'on introduit une contrainte redondante dans le modèle. Tout cela vient du fait que, comme je l'ai déjà dit, ils se bornent à essayer de tout comprendre en gros. Il n'est pas possible de pénétrer au coeur d'une telle question si on l'étudie depuis les hauteurs d'une théorie (simplificatrice). Cela les conduit à toutes sortes d'erreurs et d'approximations dans leur appréciations et leurs évaluations. Qu'on ne s'illusionne pas: quiconque n'a jamais lutté avec une machine pour contrôler la dynamique d'un algorithme ne connaitra jamais les secrets des algorithmes au-delà de certains axiomes. b) D'un autre côté, les programmeurs qui voient tous les jours des algorithmes en exécution n'ont pas toujours les bonnes grilles d'analyse et l'outillage de raisonement nécessaire pour déconstruire les innombrables pièges du système, ce qui les empêche d'avoir une très correcte vision globale du domaine; ils risquent de passer une bonne partie de leur temps la tête dans le guidon. Tant que cette la fracture subsistera, je pense que la force de notre communauté scientifique demeura brisée. Une des conséquences de cette fracture est que l'on produit souvent de super algorithmes théoriques mais qu'on oublie d'apprendre aux étudiants comment bien les coder. Ainsi, il y a beaucoup d'énergie intellectuelle qui se perd dans la traduction de la théorie en pratique. Je continue avec un slide (de l'exposé de A.V. Goldberg at ISMP2018). > What students learn? > * Theory of Algorithms > - Ignore constant factors for machine independence > - Analysis mostly worst-case > * Programming Languages > - Aim for compiler to take care of all low-level details > - High-level specification > * Software Engineering > - Correctness > - Development Speed > - Portability, maintainability and testability > RED: Tempting to ignore constant factors and low-level details On peut observer dans ce slide qu'on n'apprends nulle part aux étudiants comment bien coder un algorithme. La fracture est évidente et la communauté des programmeurs communique très peu avec celle des chercheurs académiques. Je conseille à chacun de rester fort face à une phrase assez connue et pourtant trompeuse: « Computer science is no more about computers than astronomy is about telescopes [biology is about microscopes, or chemistry is about test tubes, etc] ». Cette phrase nous éloigne de la vérité, parce qu'elle nous fait oublier un point essentiel: le télescope est un outil destiné à étudier d'autres choses (des phénomènes célestes) alors que l'ordinateur est un outil pour étudier les ordinateurs eux-mêmes! En informatique, l'ordinateur est à la fois le moyen et la fin. Seul celui qui utilise un ordinateur comme un outil pour étudier autre chose peut dire que ce n'est pas l'outil qui est important. Ainsi, une telle phrase n'apporte que de la confusion, en obscurcissant les liens qui existent entre « informatique fondamentale » et les ordinateurs réels. SECTION La difficulté de rompre un sortilège de masse Chaque fois que ce type d'idée s'impose, chaque fois qu'on bâtit des fondations sur le sable de la confusion, c'est la société dans son ensemble qui finit tôt ou tard par en faire les frais. On risque de finir par être dominés par plein de spécialistes en « informatique fondamentale » qui comprennent le fonctionnent d'un ordinateur réel aussi plus-ou-moins aussi bien qu'un gamin de 12 ans, qui n'ont aucune idée de la manière dont un processus s'exécute sur un CPU, etc. Ceci n'est qu'une projection sur l'informatique d'un phénomène plus général qui apparaît très souvent dans toutes les branches de la vie, surtout en politique. D'importantes décisions sur de nombreuses questions sont souvent prises par des personnes qui ne connaissent le sujet que très superficiellement. Le monde d'aujourd'hui a donné la parole a beaucoup d'incorrigibles bavards qui ne s'intéressent qu'aux apparences. Très souvent, ces bavards passent pour être des tigres dans leur discours, mais leurs têtes sont pleines de vide. Si un tel bavardage superficiel acquière une trop grande emprise sur une société, le monde (académique) risque de dériver vers le chaos. Il est difficile de lutter contre une telle tendance. Le principal problème est que le respect légitiment dû à nos élites peut trop facilement glisser vers une forme d'adoration démesurée. Par exemple, beaucoup de gens prennent les idées des lauréats du prix Nobel pour des « paroles d'évangile ». Dans ce monde, il n'existe pas d'esprit véritablement indépendant. Tout comme notre planète tourne autour du soleil et la lune tourne autour de la terre, tous les individus gravitent autour d'une force d'attraction supérieure. Certaines élites constituent une très très grande force d'attraction qui risque d'exercer un effet paralysant sur les cerveaux des masses. Normalement, une sommité devrait avancer des arguments à l'appui de ses idées de la même manière que tout le monde. La seule chose qui devrait peser dans la balance est la force de ses propres arguments et rien d'autre. Mais certains scientifiques qui arrivent à mettre les pieds sur une pseudo-gloire ne se sentent plus obligés d'apporter trop d'arguments pour leurs idées. Ils peuvent dans tous les cas se reposer sur ce qu'on appelle la « preuve par l'autorité » (argumentum ab auctoritate). Il est connu l'exemple d'une sommité en biologie (Painter) qui a affirmé que l'être humain avait 24 chromosomes. Des années 1920 jusqu'à 1956, aucun chercheur n'a osé s'opposer à cette « vérité » qui s'est propagée partout, presque d'une manière « démocratique ». Or aujourd'hui tout le monde s'accorde à dire que l'homme possède 23 chromosomes. La cause profonde d'une telle dérive réside dans le fait qu'on est (tous) souvent trop faibles face à nos supérieurs. Voici une loi naturelle : on a tous l'intérêt de se faire bien voir par l'élite en place. On est tous touchés par ce type de faiblesse humaine et cela est parfois bien compréhensible et acceptable. Mais certains vont au-delà de ce qui est nécessaire ou utile, par automatisme ou routine. Même dans des conditions très contraignantes, il reste utile de veiller à ne pas pousser cela à l'extrême et subir de lourdes pertes d'un autre point de vue: « un homme dans cette situation est assailli, à chaque pensée qui surgit dans sa tête, par le souci de savoir si elle s'accommode avec les vues de l'autorité supérieure. Cela paralyse son esprit, au point que les pensées mêmes n'osent plus surgir» [3]. Pour simplifier l'analyse ci-dessus et revenir à l'informatique, on peut prendre l'exemple de la simple instruction GOTO. Dijkstra a initié l'idée que "GOTO is harmful" et qu'on ne devrait pas l'utiliser. Cette interdiction doit faire le délice de beaucoup de professeurs émérites. C'est une excellente opportunité à saisir pour étaler devant tout le monde ses connaissances solides d'informatique fondamentale. Mais la vérité est toute autre; voici un extrait du « linux kernel coding style ». >Admittedly, all those goto's do look a bit ugly. However, they are usually limited to >error paths, and are used to reduce the amount of code required to perform cleanup >operations. Replacing these with Politically Correct if-then-else blocks would require >duplication of cleanup code. So switching to if-then-else blocks might be good Computer >Science theory, but using goto's is good Engineering. Since the Linux kernel is one >designed to be used, rather than to demonstrate theory, sound engineering principles take >priority. On devrait attribuer le titre d'inventeur uniquement à ceux qui produisent des choses "designed to be used rather than demonstrate theory". Il est très facile de faire une confusion entre un chercheur et un inventeur. Je vois le premier plus attaché aux théories, alors que le deuxième essaye de faire des choses que l'homme peut utiliser, parfois en exploitant la partie la plus utile des théories produites par les chercheurs. Pour un inventeur, "sound engineering principles take priority"; il sait bien à quel point les forces de la nature sont violentes et il ne veut épargner aucun effort dans la lutte pour mettre ces forces aveugles à notre service. La très difficile tache d'un grand inventeur est de devenir, comme je l'ai dit plus haut, un éclair qui émerge dans les nuages (des hautes idées) pour faire contact avec le sol (de la réalité). Très peu arrivent à un tel exploit. Mais c'est pour cela que je trouve la démarche des inventeurs plus noble que celles des chercheurs purs un peu déconnectés. Comme je l'ai déjà dit, trop de chercheurs purs pratiquent la science comme un sport intellectuel rempli d'idées de haut niveau qui risquent de se volatiliser en formules et en phrases. J'apporte une dernière idée pour aider à faire face à la pression invisible. Si vous n'appartenez pas aux élites, n'espérez pas d'obtenir la liberté (un mot dont on abuse) comme un cadeau offert par le système politique juste parce que vous êtes un très bon citoyen. C'est un peu trop idéaliste dans un monde où le principal moteur d'action de beaucoup est la religion de l'intérêt personnel. De toute façon, il y a plus d'aventure dans l'acte (rebelle) de construire soi même ses propres idées que dans la pure importation d'idées étrangères inspirées par un système quel qu'il soit. Et la facilité n'est jamais récompensée. Le meilleur moyen de remplir le cadre de dons et de capacités que la nature a attribué à un homme c'est de travailler soi même ses propres idées. Le manque d'idées indépendantes peut conduire à une démission face à diverses (pseudo-)élites; cela risque de conduire à un état de confusion et d'insécurité idéologique comme celui décrit ci-dessous [3, p50]. >Quelques-uns, conscients de la difficulté, ont emmagasiné >une provision d'idées étrangères le plus souvent >incomplètes et toujours plates, qui dans leur tête, >ajoutons-le, courent sans cesse danger de se >volatiliser uniquement en phrases et en mots. Ils les >poussent ensuite en divers sens et cherchent à les >accorder les unes avec les autres, comme des >dominos. Ils comparent ce qu'a dit celui-ci, puis >celui-là, puis un autre, puis un quatrième encore, et >s'efforcent d'y voir clair. On essaierait en vain de >trouver chez ces gens-là une vue fondamentale >solide reposant sur une base apparente, c'est-a-dire >absolument cohérente, des choses et du monde. >Aussi n'ont-ils sur rien une opinion nette ou un >jugement fermement établi.... Je peux conclure avec une idée de Vilfredo Pareto, qui était à la foi un philosophe et un ingénieur (connu dans notre domaine pour la notion de frontière Pareto): >Changes of regime, revolutions, and so on occur not when rulers are overthrown >from below, but when one elite replaces another. The role of ordinary people in >such transformation is not that of initiators or principal actors, but as >followers and supporters of one elite or another. FIN Références [1] Steve Lohr, Go To: The Story of the Math Majors, Bridge Players, ... Note at page 108: « Simula grew out of a discipline known as operations research. » [2] I give below the full citation extracted from www.cs.ox.ac.uk/activities/concurrency/courses/stracheys.html Strachey's Philosophy: The strongly held common philosophy of the Department (previously Oxford University Computing Laboratory) is admirably expressed in the following quotation from Christopher Strachey, the founder of the Programming Research Group "It has long been my personal view that the separation of practical and theoretical work is artificial and injurious. Much of the practical work done in computing, both in software and in hardware design, is unsound and clumsy because the people who do it have not any clear understanding of the fundamental design principles of their work. Most of the abstract mathematical and theoretical work is sterile because it has no point of contact with real computing. One of the central aims of the Programming Research Group as a teaching and research group has been to set up an atmosphere in which this separation cannot happen." [3] Arthur Schopenhauer, La Philosophie universitaire, environ 1850 Version numérisée par Guy Heff à www.schopenhauer.fr