[amusement] Petit Hello, World!

Page principale

Répondre à ce message
Auteur: Edgar Bonet
Date:  
À: Liste Guilde
Sujet: [amusement] Petit Hello, World!
Bonjour la Guilde !

Si vous programmez avec des langages compilés, vous avez probablement
été déjà intrigués par la taille considérable que prend le moindre
exécutable. Par exemple, le Hello, World! de base :

    $ cat > hello.c << EOF
    #include <stdio.h>
    int main(void) { printf("Hello, World!\n"); return 0; }
    EOF
    $ gcc -o hello hello.c && wc -c hello
      13748 hello


À partir d'un source de 75 octets, on obtient un exécutable 183 fois
plus gros ! À quoi est utilisé tout cet espace ? Est-ce vraiment utile ?
strip donne un élément de réponse, puisque cet utilitaire fait descendre
la taille à 3292 octets. C'est donc apparemment la table des symboles
qui prend quelques 10 ko. En revanche l'optimisation de gcc n'aide en
rien.

Mais 3292 reste une taille respectable, deux fois plus gros que ce
message, tout ça pour dire bonjour ! Je me suis donc demandé si on
pouvait encore réduire cette taille. J'ai trouvé des idées, mais je ne
les donnerai pas tout de suite. Je laisse ceux que ça amuse chercher un
peu. L'énoncé du problème est :

    Créer un programme Hello, World!, le plus petit possible. Le
    programme doit afficher Hello, World! à l'écran quand il est
    appelé sans arguments. Il doit ensuite se terminer en renvoyant
    au shell un code de retour de zéro. Tout ça sous Linux,
    évidemment !


Suite la semaine prochaine.

Edgar.

-- 
Edgar Bonet                         Tél    : 04 76 88 10 96
Laboratoire Louis Néel -- CNRS      Mobile : 06 77 19 79 39
25 av. des Martyrs, BP 166          Fax    : 04 76 88 11 91
38042 Grenoble cedex 9, France      e-mail : guilde@???