Code-notes Ada #1 Hello World!
Classé dans : Informatique | aucun commentaire | publié le 12 février 2012

Introduction

Cette publication inaugure une série d'articles ayant pour but de partager mes expériences avec le langage de programmation Ada (2005 en attendant que l'ISO normalise Ada 2012).

Pour compiler, il y a GNAT (téléchargeable ici) qui est un front-end libre pour GCC disponible pour de multiples plate-formes. Vim ou Emacs sont parfaits pour coder en Ada, autrement il y a GPS que les fans d'IDE apprécieront.

Le programme

Généralement, le premier programme que l'on voit en découvrant un nouveau langage consiste à afficher « Hello World! ». Je ne vais pas déroger à la tradition. Voici donc le code de base permettant de faire ça :

with Ada.Text_IO;

procedure Salut is
begin
    IO.Put_Line("Salut tout le monde !!");
end Salut;

Enregistrez ce code dans un fichier salut.adb que vous compilerez avec la commande gnatmake salut.adb. En exécutant le programme ainsi obtenu vous verrez « Salut tout le monde !! » (j'ai francisé) s'afficher dans le shell.

Explications

with Ada.Text_IO;

Cette ligne nous permet d'importer la bibliothèque de fonctions Ada.Text_IO qui est partie de la bibliothèque standard définie pour le langage Ada. Nous en avons justement besoin pour afficher du texte à l'écran.

Pour information, ce que nous appelons bibliothèque de fonctions dans certains langages se nommera package en Ada (terme à retenir).

En Ada comme en C, le point-virgule ';' a pour rôle d'indiquer la fin d'une instruction ou d'une déclaration.

procedure Salut is

Cette ligne constitue la première partie de la définition de la procédure Salut. Par analogie avec le C, je dirais qu'en Ada, une procédure est une fonction qui ne renvoie rien (void).

En fait, dans notre cas, Salut est aussi le point d'entrée du programme. C'est-à-dire que les instructions que nous y placerons seront les premières à être prises en compte lors de son exécution.

À quoi reconnaissons-nous le point d'entrée dans un code ? C'est simple, le fichier (ici salut.adb) amené à le contenir ne doit comprendre qu'un seul élément, à savoir la définition d'une procédure. Remarques :

  • le nom de cette procédure importe peu : j'aurais très bien pu l'appeler Ananas ou fin_du_programme, le résultat aurait été le même (en C et apparentés, il se serait agi de la fonction main).
  • cette procédure ne doit recevoir aucun paramètre (même si elle est susceptible d'être appelée en ligne de commande avec un nombre variable d'arguments).

Reprenons où nous en étions :

procedure Salut is
begin
        -- quelques instructions
end Salut;

Au passage, notez que les deux tirets -- sont là pour introduire une ligne de commentaire.

La définition d'une fonction ou d'une procédure va se faire en plusieurs temps :

  1. D'abord, il nous faut indiquer son nom (précédé d'un function ou procedure) suivi s'il y a lieu d'une liste d'arguments entre parenthèses (Salut doit en être dépourvue, comme je l'ai dit précédemment).
  2. Ensuite, avant le mot-clef begin, nous avons la possibilité de déclarer des variables et de les initialiser (ce sera pour plus tard) ou même de définir de nouveaux types, voire des fonctions et des procédures supplémentaires.
  3. Enfin, après le begin, nous pouvons écrire toute une série d'instructions.
  4. La définition prend fin avec le mot-clef end, optionnellement suivi du nom de la procédure. Bien que ce renseignement ne soit pas obligatoire, je vous recommande de ne pas le zapper car le mot-clef end est employé dans de nombreux autres cas très courants et il vaut mieux être capable d'identifier la fin de la définition d'une procédure du premier coup d'œil.
Ada.Text_IO.Put_Line("Salut tout le monde !!");

Si vous avez un minimum d'esprit logique, vous avez dû comprendre que cette instruction appelait la procédure Put_Line et lui transmettait en paramètre la chaîne de caractères "Salut tout le monde !!".

Put_Line est une procédure dont le rôle précis est d'afficher la chaîne de caractères qui lui est donnée puis d'effectuer un retour à la ligne. Nous utilisons la notation pointée pour indiquer que c'est la procédure Put_Line du package Ada.Text_IO que nous voulons appeler.

Ada n'est pas sensible à la casse du tout. En d'autres termes, vous pouvez très bien écrire put_LINE ou PuT_LiNe.

Le résultat

Salut tout le monde !!

Remarques

Pour les curieux de nature, le manuel de référence du langage Ada 2005 est disponible à cette adresse et documente tous les aspects du langage (mots-clefs, bibliothèque standard, comportements prédéfinis). Vous pouvez par exemple y retrouver le prototype de la procédure Put_Line.

En conclusion

Ada a été conçu avec le souci de faciliter l'écriture de code facilement compréhensible. J'espère avoir réussi à vous faire appréhender cet aspect du langage à travers mon exemple et à vous donner envie d'en savoir plus.

Si vous avez des remarques ou des questions à me poser, les commentaires sont là pour vous permettre de vous exprimer. Je suis à l'écoute de la moindre idée qui pourrait m'aider à améliorer cet article.

Pourquoi je déteste conduire
Classé dans : Quotidien | aucun commentaire | publié le 11 février 2012

D'abord, permettez-moi de vous donner les raisons qui ne sont pas celles pour lesquelles je déteste conduire (en voiture, je précise) :

  • parce que je suis mauvais conducteur
  • à cause des sensations fortes qui ôtent tout contrôle de soi
  • parce que ça pollue et que la pollution saÿlemal
  • le permis et l'essence coûtent cher, sans parler de l'acquisition d'un véhicule et de son entretien

Ces raisons sont bien sûr tout à fait plausibles et justifiables mais il ne s'agit pas de la cause profonde de ma réticence à l'égard de la conduite.

Je déteste la conduite parce qu'elle (re)modèle mon cerveau de gré ou de force. L'explication est assez simple : la conduite est une activité qui nécessite une pleine attention du cerveau. Elle ne se contente pas de le monopoliser les trois quarts du temps mais le force à faire des choix dichotomiques sans aucune demi-mesure ni modération (« J'y vais ? J'y vais pas ? », « Je m'arrête ? Je m'arrête pas ? », etc.). Si je voulais caricaturer, je dirais que c'est juste bon pour les brutes épaisses qui n'aiment pas réfléchir l'espace de plus de deux secondes.

Ce qui n'est pas mon cas. En conséquence de quoi, il ne se passe pas une minute sans que, passé un virage, une intersection ou un rond-point, mon esprit ne soit peuplé de doutes quant à mes précédentes décisions de parcours. Peut-être la pratique finira-t-elle par gommer ces considérations chez moi (j'ai 6-7 mois de conduite supervisée à mon actif), mais ce n'est pas ce que je souhaite.

En conclusion, mon objectif présent est de passer mon permis le plus tôt possible et de le ranger au fin fond d'un tiroir pour ne plus le ressortir, sauf besoin vital. Vive le bus/RER/métro/etc !

La Peur de ma vie
Classé dans : Quotidien | 2 commentaires | publié le 08 février 2012

Quand je m'ennuie, eh bien il faut que je fasse des trucs. Mon dernier « truc » en date :

Vous pouvez remplacer l'astérisque par ce que vous voulez, elle est juste là parce que je ne trouvais pas d'unité de mesure pour ce que je souhaitais exprimer sur l'axe des ordonnées. Vu que je préfère conserver le mystère de ce graphique, je ne vais pas vous dire ce qu'il est censé représenter. En revanche, je serais curieux de voir comment vous l'interprétez.

PS : mon but n'est pas d'insulter les personnes d'un certain âge passé.

Colorer son code sans se casser la tête
Classé dans : Astuce | aucun commentaire | publié le 22 janvier 2012

J'ai trouvé une solution efficace et facile à mettre en œuvre pour obtenir de la coloration syntaxique dans mes articles, à savoir Quick Highlighter. Il s'agit d'une application qui prend en entrée un bout de code dans un langage quelconque et vous ressort le HTML et le CSS nécessaires à sa coloration. Il suffit ensuite de coller le CSS une fois pour toutes dans votre feuille de style, et de placer le HTML là où vous souhaitez le voir apparaître.

Quick Highlighter a plusieurs avantages :

  • il supporte exactement 139 langages (difficile de ne pas y trouver son bonheur)
  • il propose diverses options concernant la numérotation des lignes ou encore la longueur des tabulations
  • il est plus léger qu'un programme Javascript qui colorerait à la volée le code dans le navigateur de chaque visiteur puisqu'à la fin il ne s'agit que de HTML et de CSS

Le seul désavantage que je vois est celui de devoir, en cas de modification du code, le repasser par la case Quick Highlighter. Ça ne me paraît pas problématique dans la mesure où le code que je mets dans mes articles n'est pas là pour changer toutes les semaines.

Quick Highlighter utilise GeSHI pour colorer le code. Voici un exemple de code coloré :

  1. if true; then
  2.     echo "Un exemple de code coloré avec Quick Highlighter.";
  3. fi
Binärpilot, ou l'électro qui déboulonne grave
Classé dans : Culture | aucun commentaire | publié le 21 janvier 2012

Le logo de Binärpilot.

Fans de 8-bits ou simples amateurs de bonne musique, je vous propose de découvrir Binärpilot, un artiste qui nous vient du grand froid (Norvège) et qui chuchote à l'oreille des cartes mères. Blague à part, je vous conseille d'écouter ses derniers albums, Nordland, Robot Wars et Defrag. Le casque est de rigueur, bien entendu, mais attention à vos tympans, ils risquent d'accuser le coup si vous passez la journée entière à écouter ça en boucle.

Je ne vais pas vous recommander des pistes en particulier, elles méritent toutes votre oreille (et même vos deux oreilles). Par contre, en vous couchant ce soir, ne vous étonnez pas si vous ne distinguez plus de ce qui vous entoure que des 0 et des 1, ce sera juste l'effet Binärpilot (ou alors l'effet Matrix peut-être).

Je terminerai avec une parole de l'artiste lui-même :

I make music because I love to. I don't want to be famous, I don't want to make a lot of money, I just want to keep making music that I like and share it with everyone. Especially the robots, geeks, hackers, and nerds of this world.

Amen.