Les commentaires, c'est mieux quand y-en a pas

Ah ! L'IUT ! Petit moment de nostalgie. Je me remémore mon arrivée dans ce que j'imaginais alors être un temple du savoir, un panthéon de la connaissance. Je me voyais déjà marchant en toge parmis les vénérables érudits qui, au prix d'une vie de labeur et d'intense réflexion, avaient amassé une telle compétence que le simple fait de leur baiser les pieds me remplirait d'honneur et de joie.

Enfin ! Enfin, terminées les pénibles heures, incomfortablement assis devant un cahier à étudier des matières inutiles et obsolètes. Enfin, j'allais pouvoir m'abreuver au calice de la culture informatique. J'allais boire jusqu'à la lie le doux hydromel de cette noble science.

Une larme me monte au yeux lorsqu'à ma mémoire remonte avec nostalgie le souvenir de mon second cours de programmation (le premier était une fabuleuse analogie entre la programmation et le tricot irlandais). Je revois encore l'honorable professeur, barbu et imposant comme il se doit, pénétrer d'un pas sûr et tranquille dans l'amphi bondé, et d'un seul regard, serein mais implacable, imposer le silence aux étudiants.

Après nous avoir considéré quelques secondes, l'éminent docteur, toujours sans dire un mot, se tourne vers l'immense tableau vert, saisi une craie, et commence à écrire. Dans la salle, pas un mot, pas un chuchotement. Nous sommes tous figés, écoutant religieusement les crissements de la craie, attendant ce qui va suivre. Notre curiosité, notre soif d'apprendre sont telles, que nous n'osons presque plus respirer.

Après deux interminables minutes, l'estimable savant pose sa craie, se frotte les mains en se tournant vers nous, nous considère d'un oeil malicieux, et nous lance, narquois : "Alors, quelque peut-il me dire ce que cela signifie ?"

void action(int* var1, int* var2) {
    *var1 =  *var1 + *var2;
    *var2 =  *var1 - *var2;
    *var1 =  *var1 - *var2;
}

int main() {
    int var1 = 5;
    int var2 = 7;

    action(&var1, &var2);

    printf("%d %d\n", var1, var2);
}

Après quelques dizaines de secondes à rester dubitatif, observant ces symboles cabalistiques les yeux plissés par l'effort de réflexion, nous dûmes bien avouer notre impuissance à leur attacher un sens.

Amusé, l'honoré pédagogue, celui qu'au fond de nous nous appellions déjà "maître", repris sa craie et compléta le blanc qu'il avait judicieusement laissé au tableau.

/*
 * Type : procédure
 * Paramètres : 2 entiers var1 et var2
 * Résultat : Rien
 * Action : cette fonction échange les deux valeurs des variables passées en paramètres,
 * sans utiliser de variable intermédiaire
 */
void action(int* var1, int* var2) {
    *var1 =  *var1 + *var2;
    *var2 =  *var1 - *var2;
    *var1 =  *var1 - *var2;
}

int main() {
    int var1 = 5;
    int var2 = 7;

    action(&var1, &var2);

    printf("%d %d\n", var1, var2);
}

"Et maintenant, comprenez vous ?" Évidemment ! L'évidence nous avait sauté aux yeux. Tout était limpide comme de l'eau de source. Fallait-il que nous soyons sots et ignorants pour n'avoir pas compris plutôt ? Ce code échangeait tout simplement les valeurs des deux variables passées en paramètres, sans utiliser de fonction intermédiaire.

"Sans commentaires, un code est incompréhensible. Dorénavant, vous ajouterez un commentaire devant chaque fonction, pour indiquer son action, ses paramètres, et son retour. Si vous ne vous conformez pas à cette règle, inutile de vous présenter à l'examen".

Une fois cette docte sentence prononcée, le vénérable enseignant tourna les talons, et sorti sous nos applausissements déchaînés. En fait, seuls ma pudeur naturelle et les traces de vieux chewing-gums écrasés par terre me retinrent de me jeter à ses pieds pour le supplier de me bénir.

Ça-y-était !!! Nous jouyions dans la cour des grands. Nous n'étions plus de pauvres demeurés, nous savions que chaque fonction doit être précédée d'un long commentaire ! Nous pûmes alors nous rendre sur les forums de développez.com, et étaler ouvertement notre science en méprisant les hérétiques qui ne commentaient même pas leurs fonctions (les fous) !!

Depuis, beaucoup d'eau a coulé sous les ponts

Depuis ce temps béni, quelques longues et pénibles années se sont écoulées. Alors que je commence à accumuler de l'expérience professionnelle (pas beaucoup, mais un peu quand même), ma naïve insouciance d'alors s'efface peu à peu, érodée par les nombreuses occasions que j'ai d'observer le code des autres d'un regard un peu critique.

Tel l'enfant qui découvre que son père n'est pas tout puissant, il me fallut beaucoup de courage pour affronter la détresse qui fut mienne lorsque je fit cette terrible découverte : mon adoré, mon honoré, mon vénérable et vénéré maître avait tort. Car je dus me rendre à l'évidence : les commentaires, c'est mieux quand y-en a pas !

La suite au prochain épisode...