L’origine de la compilation

vendredi 18 novembre 2005.
 
Un jour de mauvais temps, alors que j’avais un partie de criket de prévue, un ami m’a téléphoné pour me faire remarquer qu’on risquait de se faire mouiller et qu’en plus, on n’était vraiment pas bon lorsqu’il pleuvait. J’étais un peu déçu, mais finalement, pas tant que ça. A la place, j’ai pu prendre un peu de temps pour compiler egcs. Egcs c’est un compilateur... Mais alors... suivez mon regard... Je me suis dit : comment ils ont fait pour compiler le premier compilateur ?

J’ai décroché mon téléphone et j’ai téléphoné à Gugu (2.34 euros la minute). Il a dit : "Il suffit d’utiliser l’assembleur (pas besoin de compiler)". L’assembleur ! Mais c’est bien sûr ! C’est un animal qui vient des forêts d’Amazonie et qui est dangeureux. Il a un comportement étrange. Cycliquement, et manifestement les jours de pleines lunes, il se met tout à coup à ramasser des petits cailloux et il les peint avec des couleurs naturelles. Il dit alors, de sa voix grave, à tous les animaux de la jungle : "Ce seront mes instructions de base !". En général, ca fait fuir la moitié de la savane. Ensuite, il passe son temps à les agencer pour faire de jolis dessins sur le sol. Il occupe souvent une bonne partie de la plage. Et puis fatigué, il s’arrête et il dit de sa voix grave, à tous les animaux de la jungle : "J’ai assemblé un compilateur !". Ensuite, il repart dormir pour le cycle prochain.

Et c’est grâce à cet animal qu’existent aujourd’hui nos compilateurs modernes. Il a fallu qu’un botaniste qui étudiait les pygeum africanun et ramassait quelques racines d’Amphipterygium astringens pour ses infusions personelles, je disais, qu’un botaniste tombe par hasard sur le premier compilateur laissé par l’Assembleur. Etonné, il a vite compris l’origine de sa découverte. Elle s’appelait Grace Hopper. On était en 1951.

Réflechissant à tout ceci, je fus saisi d’un doute. Je décrochais à mon nouveau mon téléphone et appelait Gugu (3.57 euros la minute. C’est ce qu’on appelle de l’inflation) : "tu sous entends que le premier compilo fut ecrit en assembleur ? Genre cc écrit en assembleur ? Et qu’ensuite ils ont refait un beau compilo genre gcc compilé avec cc ? Et qu’ensuite ils ont recompilé gcc avec gcc pour que ce soit encore mieux ?"
-  Oui, a-t-il dit.
-  Mais alors...
-  Oui ?
-  J’ai une question à te poser. Je te l’envoie par fax.
-  Ok

Fax : Examen de compilation

From : JF To : Gugu

La question se pose : tu recompiles gcc n fois, avec, à chaque fois, le nouveau gcc que tu viens de faire. Est-ce une suite stable ? Convergente ? Uniformément convergente ? Vous avez 2 heures.

Egcs, c’est le compilo que notre administrateur système, Dan, a mis 3 mois a installer. Tu sais, moi, il m’a fallut environ 15 minutes. 10 minutes pour le trouver (c’est vieux comme prog), 1 minutes pour taper configure, make, make install (et je suis large), 4 minutes de compilation.

Question 2 : est ce que je suis un Dieu de l’informatique ? Est-ce que Dan est aussi bon que ma grand-mère ? Vient-il de l’italie, le pays ou les gens font du surf et font de l’informatique comme je joue aux échecs ? Ou alors, est-ce que Dan est le plus grand des comiques et qu’il aime tester notre resistiviter à nos pulsions violentes ? Vous avez 2 heures.

Fax : Réponses à l’examen de compilation

From : Gugu To : JF

Question 1 :

Definissons la fonction Fc, allant de l’espace des programmes dans l’espace des compilateurs. Fc : P -> C p |-> Fc(p)

Une fonction Fc est definie par chaque compilateur c

Etant donne que Fc(p) appartient a l’espace des compilateurs, il existe une fonction F_Fc(p).

Soit u(n) la fonction recursive suivante :

u0 = version compilee en assembleur un+1 = F_Fun(p)

Cette suite est bien evidemment une suite du type "polonaise croisee". (demonstration triviale).

Par consequent, toutes les hypotheses necessaires pour appliquer le theoreme de Gauss-Newton-BobLeKanarovitch sont reunies, a savoir :
-  suite recursive polonaise croisee
-  C est inclu dans P
-  la clim est en rade et on creve de chaud.
-  on se mangerait meme un orage d’ici peut que ca m’etonnerait pas.

Le theoreme sus-cite nous permet de deduire que cette suite recursive va vite virer a un beau bordel. Plus particulierement, dans le cas present, on en deduit que la compilation d’un compilateur c en Visual Basic sur Crusoe AK851 va donner un truc assez imbittable.

Donc, la suite converge, vers un beau bordel, situe sur l’adherence de l’espace des programmes (qui est donc un ensemble ferme).

Un approfondissement theorique interessant serait de plonger le-dit probleme dans un espace de dimension superieur, ce qui nous permettrait de prendre en compte l’age du capitaine et le talent du programmeur.

Question 2 :

Non Oui (mais pas plus). Je lui souhaite pas. Certainement. Vu l’environnement de comique (un clown-clochard, un bucheron, un vendeur de 4x4). 64 Y’a plus de questions ?

Là dessus, j’ai essayé de vérifier la démonstration. Ca avait l’air correct. La suite de compilateurs convergeait donc vers un compilateur ultime, le compilateur C-infini. C’est le compilateur idéal. Il ne trahit jamais tes programmes. La nuit, pendant que tu dors, il optimise chaque bit de ton code, il relit chaque instruction avec admiration. Losrqu’il gagne trois cycles d’horloge, il pousse un profond soupir de satisfaction.

Puis, j’ai été saisi d’un autre doute : pourquoi diable Gnu développe-t-il de nouvelles versions de compilateurs qu’il sort tous les quatre matins s’il a juste besoin de recompiler une infinité de fois le compilateur de Grace Hopper ?

J’ai attrapé mon fax.

Fax : Examen de compilation, deuxième partie.

From : JF To : Gugu

Question 1 : Etant donné que GNU n’est pas une entreprise qui cherche à faire de l’argent sur le dos des honnêtes programmeurs, est-il vraisemblable que les différentes versions d’egcs et de ces cousins comportent de réels améliorations ? Vous avez 2 plombes.

Question 2 : Pourquoi Grace Hopper n’a t-elle pas été rémunérée pour son juste travail sur lequel tout le monde se base depuis 50 ans ? Vous avez 2 plombes.

Question 3 : Si l’on considère l’espace pré-hilbertien des familles de suites de compilateurs paramétré par alpha, avec alpha la probabilité que l’Assembleur trouve du jaune, du bleu et du vert dans la savane, que peut-on dire de l’ensemble des parties des éléments de cet espace si l’on choisit la relation d’ordre qui convient (à la question) ? Vous avez 2 plombes.

Fax : Réponse à l’examen de compilation, deuxième partie.

From : Gugu To : JF

Question 1 : Le GNU est un animal imprévisible. En ce sens, il est assez proche du kangourou : il fait des trucs dans un endroit, et quand il en a marre, il va voir ailleurs si l’herbe est plus verte. Du fait de cette manière de procéder, il y a effectivement des améliorations ; mais au bout d’un moment il change d’endroit, et perd une bonne partie de touts les gains (c’est d’ailleurs pour ca que ses amis le chambrent regulièrement et l’appellent 22 (de la valeur de son QI)). En d’autres termes, le GNU n’essaie pas d’atteindre la limite de la suite, il change regulièrement de u0. Répondre à la question "Pourquoi ?" est un problème qui a déjà été prouvé NP-complet (réduction à partir du Voyageur de Commerce).

Question 2 : Elle a eu une vie assez dissolue, ce qui fait que son génie est assez peu reconnue : à l’age de 2 ans, elle quitte la demeure familiale (au grand damne de ses parents) pour aller mener une vie de bohême, alternant les petits boulots (vendeuses dans un magasin de jouet, responsable du "Happy Repas" dans les restaurants Mac Ronald’s (tm), etc) et grande aventure (traverser les yeux bandés, à 18h un vendredi soir la quatre-voie Los angeles-San Francisco). C’est après quelques années de cette vie itinérante que Grace decida de revenir aux études. Apres un premier échec en BEP plomberie-charcuterie et un second en Beaux-Arts (faut dire qu’elle dessine un peu comme un pied), elle trouve sa voie, et suit les mêmes chemins que les plus grands : prépa Maths à Brest, école d’ingénieur en informatique à Clermong-Ferrand. Un jour, alors qu’elle s’ennuyait ferme en attendant "Les Incendies de l’Amour", elle gribouilla quelques mots sur un bout de papier, qu’un de ses amis récupera. Cet ami, un peu veinal quand même, essaya de revendre ce bout de papier à IBM, mais ceux-ci reconnurent tout de suite l’écriture de Grace (tant cette écriture était mauvaise) ; et lui attribuèrent deux des inventions les plus marquantes de notre siècle : le compilateur et le petit jouet dans le Happy Repas Mac Ronald’s (tm).

Question 3 : La question est incomplète, puisque l’on ne connaît la distribution de probabilité des couleurs (alpha). Cela dit, si l’on suppose que cette distribution est "classiquement" une distribution de RogerLaKastagnoff, on en déduit trivialement que la l’ensemble des parties des éléments dans cet espace est indénombrable, infini, et dessine un petit coeur quand on le regarde de haut.

La dessus, j’ai classé tous ces fax dans un dossier sur Egcs. L’étude, bien qu’incomplète prouve qu’il s’agit bien encore d’un coup du sort de l’histoire. Grace aurait du courroner sa carrière avec mise en évidence du compilateur C-infini. Au lieu de ça, et à cause de la non complétude des espaces indénombrables dans le cas alpha=bleu, on valorise son travail grâce à Ronald. Il n’y a vraiment pas de justice.

Répondre à cet article

Forum