Programmation, algorithmique et Ada ?

Nous allons dans ce chapitre répondre à quelques questions préliminaires. Qu'est-ce qu'un programme ? À quoi cela ressemble-t-il ? Comment crée-t-on un programme ? Qu'est-ce que l'algorithmique ? Pourquoi utiliser Ada et non pas un autre langage ? Ce que j'apprends ici sera-t-il utilisable avec un autre langage ?

Bref, beaucoup de réponses existentielles trouveront (je l'espère) leur réponse ici. Ce chapitre, relativement court et sans difficultés, permettra de poser un certain nombre d'idées et de termes. Pour bien commencer, mieux vaut en effet que nous ayons le même vocabulaire. ;)

À ceux qui auraient déjà des notions de programmation, vous pouvez bien entendu éviter ce chapitre. Je ne saurais trop toutefois vous conseiller d'y jeter un œil, histoire de remettre quelques idées au clair.

Qu'est-ce qu'un programme ?

Avant de commencer, il est important que nous nous entendions sur les termes que nous allons utiliser.

Qu'appelle-t-on programme ?

Les programmes sont des fichiers informatiques particuliers. Sous Windows, ce sont généralement des fichiers se terminant par l'extension .exe ; sous MacOS ce sont globalement des fichiers .app ; sous Linux ce sont schématiquement des fichiers .bin. Cette explication est très (TRÈS) schématique, car d'autres types de fichiers peuvent correspondre à des programmes.

Ces fichiers ont comme particularité de ne pas seulement contenir des données, mais également des instructions. Lorsque vous ouvrez un fichier .exe sous windows, celui-ci transmet à votre ordinateur une liste de tâches à effectuer comme :

  • ouvrir une fenêtre
  • afficher du texte
  • effectuer des calculs

Cette liste d'instructions envoyées au processeur, forme alors ce que l'on appelle un processus.

On fait généralement un amalgame entre programme et processus. Le programme est, rappelons-le, un fichier. Le processus correspond aux instructions effectuées par le processeur et qui viennent du programme. Mais, en général, on appelle tout cela programme. ;)

Vous trouverez ci-dessous trois exemples de programmes.

Mozilla Firefox

Calculatrice de Windows

Paint Shop Pro

Attention, tous les programmes ne sont pas nécessairement visibles. Beaucoup n'ouvrent même pas de fenêtre ! Pour s'en rendre compte, sous Windows, appuyez simultanément sur les touches Alt + Ctrl + Suppr, puis cliquez sur le second onglet, cela affichera la liste de tous les processus en cours.

Gestionnaire des tâches de Windows

Bon nombre d'entre eux effectuent des tâches tranquillement sans que vous ne vous en rendiez compte.

Alors qu'allons-nous faire ?

Eh bien, programmer (en Ada ou avec tout autre langage) c'est tout simplement créer des programmes. Mais je vous arrête tout de suite, malgré tout le talent de votre humble guide, :p vous ne confectionnerez pas un jeu vidéo en 3D d'ici la fin de ce tutoriel. La plupart des logiciels, comme le navigateur internet que vous utilisez actuellement, exigent la participation de nombreuses personnes et de nombreuses autres compétences ne relevant pas de ce cours (modélisation 3D par exemple). Les premiers programmes que nous allons concevoir seront des programmes en console. C'est-à-dire qu'ils ressembleront à la figure suivante.

Programme en console

Nous ne pourrons utiliser que le clavier ! Pas de souris ou de joystick ! Pas d'images ou de vidéos ! Pas de 3D puisqu'il n'y aura même pas de 2D ! Que du texte blanc sur fond noir.

:waw: Aaargh ! Mais, c'est possible ? Ces horreurs existent encore ?

Bon, c'est vrai qu'aujourd'hui on a tendance à oublier la console, mais il est nécessaire de passer par ce stade pour apprendre les bases de la programmation. Nous pourrons ensuite nous atteler à des programmes plus conséquents (avec des boutons, des images, la possibilité d'utiliser la souris… ). Mais il faudra être patient. ;)

Comment réaliser un programme ?

Alors comment faire pour créer votre propre programme ? Il faut avant tout savoir comment est constitué un programme (ou tout autre type de fichier). Vous le savez peut-être déjà, mais un ordinateur a un langage très très basique. Il ne connaît que deux chiffres : 1 et 0 ! Donc tout fichier (et donc tout programme) ne peut ressembler qu'à ceci :

10001001111010110110111011011 …

Ça rappelle Matrix ! Mais comment je fais moi ? J'y comprends rien à tous ces chiffres! Il faut faire Math Sup pour afficher une fenêtre ?

Pas d'inquiétude : personne n'est capable de créer un programme informatique ainsi. C'est pourquoi ont été inventés différents langages pour la programmation : le Pascal, le Basic, le C, le C++, le Python, le Java… et bien sûr l'Ada. Ce sont ce que l'on appelle des langages de haut niveau. À quoi cela ressemble-t-il ? Voyez vous-même :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
with Ada.Text_IO, Ada.Integer_Text_IO ; 
use Ada.Text_IO, Ada.Integer_Text_IO ; 

procedure exemple is
   n : integer ; 
begin
   loop
      Put("Saisir un nombre : ") ; 
      Get(n) ; Skip_line ; 
      if n mod 2 = 0
         then Put("Ce nombre est pair ! Tres bien !") ; exit ; 
         else Put("Ce nombre est impair ! Recommencez. ") ; 
      end if ; 
   end loop ; 
end exemple ;

Vous serez capables d'ici quelques chapitres de comprendre ce texte aisément. C'est comme apprendre une langue étrangère ; d'ailleurs si vous connaissez l'anglais, vous avez peut-être reconnu quelques mots : end, if, else, then, begin et is. C'est ainsi que nous créerons nos programmes.

Et comment on traduit ça en 1 et en 0 ?

Une fois notre texte rédigé en Ada (mais c'est aussi valable pour les autres langages), il faudra utiliser un programme-traducteur pour le convertir en un programme lisible par l'ordinateur. Les programmes-traducteurs sont appelés compilateurs.

Pourquoi Ada et pas autre chose ?

Algorithmique

Il ne vous reste donc plus qu'à apprendre un langage de programmation, et avec ce langage, vous apprendrez également ce que l'on appelle l'algorithmique.

Algorithmique ? Qu'est-ce que c'est que ça encore ?

L'algorithmique est une branche des mathématiques qui traite de la résolution de problèmes à l'aide d'instructions simples. J'en vois déjà certains qui paniquent à la vue du mot «Mathématiques», mais n'ayez crainte vous avez déjà vu plusieurs fois dans votre vie des algorithmes. Par exemple, comment faire pour diviser 742 par 5 ? Vous vous souvenez, c'était en primaire ? Vous aviez appris à vous demander : «dans 7 combien de fois 5 ? Il y va 1 fois et il reste 2». Puis vous répétiez cette opération : «dans 24 combien de fois 5 ? Il y va 4 fois et il reste 4»… Il suffisait de répéter plusieurs fois cette méthode basique pour obtenir le résultat désiré (Voir la figure suivante).

La division illustrée

Eh bien ça, c'était un algorithme : vous répétiez des instructions simples dans un certain ordre (abaisser les chiffres de 742, se demander «dans machin, combien de fois truc ?»…) afin de résoudre un problème plus compliqué («Combien vaut $742 \div 5$ ?»). Et tout programme informatique n'est en fait qu'un algorithme écrit dans un langage compréhensible par votre ordinateur. Donc apprendre à programmer, c'est en fait apprendre la science de l'algorithmique dans un langage informatique donné.

Pourquoi Ada ?

Mais alors, pourquoi apprendre Ada et pas simplement l'algorithmique ? Et pourquoi utiliser Ada et pas un autre langage ?

Tout d'abord, l'algorithmique n'est pas compréhensible par les ordinateurs, je vous rappelle que c'est une science. L'algorithme de la division euclidienne vu au-dessus est expliqué en français, or je vous ai dit qu'il doit être écrit dans un langage qui pourrait être traduit par un compilateur, un langage très structuré et normé (qui ne changera pas en changeant de compilateur), et ça, c'est ce qu'on appelle la programmation. Et Ada répond à ces exigences.

Au début, on parlait d'Ada tout court ou d'Ada83. Puis le langage a évolué, donnant naissance aux normes Ada95 puis Ada2005 et enfin Ada2012. Mais rassurez-vous, tout cela ne constitue qu'une sorte de «grosse mise à jour» et pas 3 langages différents ! C'est pourquoi nous ne parlerons pas ici des langages Ada83, Ada95 ou Ada2005 mais simplement du langage Ada.

Maintenant, pourquoi utiliser Ada et non pas un autre langage ? Il est vrai que Ada n'est pas le langage le plus répandu. Mais il présente de nombreux avantages par rapport à d'autres langages plus courants comme le C, le C++, le Java…

Tout d'abord il présente un avantage pédagogique. Ada consitue un langage parfait pour apprendre à programmer. D'ailleurs de nombreuses écoles ou universités l'utilisent comme support de leurs cours de programmation. La rigueur qu'il impose au programmeur permet aux débutants d'apprendre à coder correctement, de prendre de bonnes habitudes qu'ils conserveront par la suite, même s'ils venaient à changer de langage de programmation durant leur carrière. Qui plus est, c'est un langage facilement lisible car il utilise des mots complets (begin, end, function, if… c'est de l'anglais en effet) plutôt que les symboles «barbares et bizarroïdes» pour un débutant que préfèrent la plupart des langages actuels. Les codes des programmes sont certes moins condensés, mais plus faciles à reprendre en cas de bogue ce qui constitue un avantage non négligeable quand on sait que les coûts de maintenance d'un logiciel sont souvent plus élevés que le coût de son développement.

Ensuite, le langage présente également des avantages pour les professionnels. Son fort typage (vous aurez l'occasion de le découvrir durant la deuxième partie) ou sa très bonne gestion des erreurs (abordée lors de la quatrième partie) garantissent des programmes fiables. Ce n'est pas pour rien qu'Ada est utilisé pour de gros projets comme Ariane, chez Thalès pour ses avions ou radars, ou encore pour la sécurité des centrales nucléaires, du trafic aérien ou ferroviaire… Utiliser Ada est un gage de fiabilité et pour cause, il a été développé par le polytechnicien français Jean Ichbiah pour le compte du département de la défense américain, le fameux DoD (vous vous doutez bien que rien n'a été laissé au hasard ;) ).

Maintenant que ces quelques explications préliminaires sont faites, j'espère que vous vous sentez toujours prêts à vouloir apprendre un langage. Si cela vous semble compliqué, n'ayez crainte, nous commencerons doucement et je vous guiderai pas à pas. Nos premiers programmes seront peut-être inutiles ou ringards, mais nous apprendrons peu à peu de nouvelles notions qui nous permettront de les perfectionner.


En résumé :

  • Un programme est un fichier contenant des instructions à destination du processeur de votre ordinateur.
  • Un programme est écrit en langage binaire, le seul langage que comprend votre ordinateur.
  • Pour réaliser un programme, vous devez écrire des instructions dans un fichier texte. Celles-ci sont écrites dans un langage de programmation (ou langage formel) comme Ada, compréhensible par les humains.
  • Pour traduire un texte écrit en langage de programmation en un programme écrit en binaire, vous devrez utiliser un logiciel appelé compilateur.