Atterrir sur la lune ou ma calculatrice est plus forte que l’ordinateur d’Apollo

Un jour deux pays ont décidé de se faire la course.  Leur but était vieux comme le monde : montrer qui est le plus fort.  Ils auraient pu choisir n’importe quel cible mais il leur fallait un objectif vraiment impressionnant, quelque chose de grandiose.  Bref un objectif qui tairait les protestataires à tout jamais.  Ils ont fait la course pour la Lune.

Les États-Unis ont été les premiers à l’atteindre.  Pour ce faire, ils ont développé plusieurs nouvelles technologies comme un charmant petit véhicule et un module d’alunissage pas tout à fait aérodynamique.  C’est un excellent exemple de l’ingénierie humaine.  Mais, par rapport à ce qu’on fait aujourd’hui, est-ce que c’est si complexe que ça ?

Un jour, un de mes professeurs a fait la comparaison suivante : le module lunaire ayant servi à atterrir sur la Lune est moins complexe que n’importe quel logiciel présentement développé.  Toute la classe a trouvé ça très drôle.  Un logiciel, même complexe, ne peut pas se comparer avec la complexité du module lunaire.  On ne va pas sur la Lune avec un logiciel après tout.  Et si c’était équivalent ?  Est-ce que démarrer un traitement de texte est aussi difficile tout en étant mais moins impressionnant que de se rendre sur la Lune ?

Une manière d’évaluer la complexité est de regarder le nombre de composantes et les interactions entre chacune.  Plus ce nombre est élevé, plus le système est complexe.  Il est difficile d’évaluer la complexité du module lunaire mais débutons par sa partie logicielle.  Ces logiciels ont été développés durant les années 1960 pour être exécutés sur des ordinateurs ayant une capacités acceptable… pour l’époque. Par exemple, le vénérable IBM PC XT, introduit une dizaine d’années après la fin du programme Apollo a huit fois plus de mémoire vive que l’ordinateur de navigation qui avait été utilisé pour guider la fusée jusqu’à la Lune.

Maintenant, si on prend un logiciel moderne.  Il est essentiellement composé de son code source et d’une série de librairies externes.  Selon la langage utilisé, la taille du code source peut varier de quelques centaines à plusieurs millions de lignes.  Le langage utilisé est très probablement ce que nous appelons un langage de haut niveau facilitant la programmation en dissimulant la complexité de l’appareil.  Ils ajoutent une complexité supplémentaire à notre logiciel.  En plus, ils sont eux-même basés sur un second langage un plus proche du matériel de l’ordinateur.  Chaque niveau ajoutant de nouvelles composantes ce qui rend l’ensemble de plus en plus complexe.

Au final, tout logiciel moderne est plus complexe que l’ensemble des logiciels du programme Apollo.  Cependant, il faut tenir compte d’un léger détail.  Ces logiciels devaient être fiables et éprouvés.  Il n’était pas possible de redémarrer le programme en cours de voyage sans prendre des risques supplémentaires.  On doit parfois justement éviter la complexité pour atteindre notre cible.

Publicités