Table des matières

Développer en ADA sur Debian

Introduction

La première norme du langage Ada a été publiée en 1983 ; elle a ensuite été révisée et améliorée en 1995, 2005 et 2012, chaque révision apportant de nouvelles fonctionnalités utiles.

Aujourd'hui, Ada est largement utilisé dans les systèmes embarqués en temps réel, dont beaucoup sont critiques pour la sécurité. Bien qu'Ada soit et puisse être utilisé comme un langage à usage général, il brillera vraiment dans les applications de bas niveau :

- Systèmes embarqués avec de faibles besoins en mémoire (aucun ramasse-miettes autorisé).

- Interfaçage direct avec le matériel.

- Systèmes temps réel souples ou durs.

- Programmation de systèmes de bas niveau.

Les domaines spécifiques où Ada est utilisé comprennent l'aérospatiale et la défense, l'aviation civile, le rail et bien d'autres. Ces applications nécessitent un haut degré de sécurité : un défaut logiciel n'est pas seulement une nuisance, mais peut avoir de graves conséquences. Ada fournit des fonctionnalités de sécurité qui détectent les défauts à un stade précoce, généralement au moment de la compilation ou à l'aide d'outils d'analyse statique. Ada peut également être utilisé pour créer des applications dans divers autres domaines, tels que :

Programmation de jeux vidéo

Audio en temps réel

Modules du noyau

Il s'agit d'une liste non exhaustive qui, espérons-le, éclaire sur le type de programmation dans lequel Ada est bon.

En termes de langages modernes, les plus proches en termes de cibles et de niveau d'abstraction sont probablement C++ et Rust.

Dans ce wiki on n'apprend à coder en ADA, mais à installer une infrastructure pour pouvoir le faire.

Un très bon tutoriel quand même pour prendre en main ce merveilleux langage : LEARN.ADACORE.com

Voir aussi : Ada Léa Linux

Installation

apt update && apt install gcc gnat

Compilation manuelle

1. On édite un fichier .adb par exemple avec le code ci-dessous

-- On commence avec du pascada ^^

with Ada.Text_IO;
use Ada.Text_IO;

procedure Hello is
begin
   Put_Line ("Hello WORLD!");
end Hello;

2. On compile. Il y a plusieurs étapes manuelles :

- On compile le fichier .adb:

~/Programmation/ADA$ ls -l
total 12
-rw-r--r-- 1 n n  104 23 nov.  11:03 hello.adb
n@debian-fixe:~/Programmation/ADA$ gcc -c hello.adb
n@debian-fixe:~/Programmation/ADA$ ls -l
total 12
-rw-r--r-- 1 n n  104 23 nov.  11:03 hello.adb
-rw-r--r-- 1 n n 2163 23 nov.  11:03 hello.ali
-rw-r--r-- 1 n n 1456 23 nov.  11:03 hello.o

- on vérifie la cohérence :

n@debian-fixe:~/Programmation/ADA$ gnatbind hello
n@debian-fixe:~/Programmation/ADA$ ls -l
total 44
-rw-r--r-- 1 n n  9346 23 nov.  11:09 b~hello.adb
-rw-r--r-- 1 n n 18159 23 nov.  11:09 b~hello.ads
-rw-r--r-- 1 n n   104 23 nov.  11:03 hello.adb
-rw-r--r-- 1 n n  2163 23 nov.  11:03 hello.ali
-rw-r--r-- 1 n n  1456 23 nov.  11:03 hello.o

- édition de lien :

n@debian-fixe:~/Programmation/ADA$ gnatlink hello
n@debian-fixe:~/Programmation/ADA$ ls -l
total 44
-rwxr-xr-x 1 n n 30912 23 nov.  11:14 hello
-rw-r--r-- 1 n n   104 23 nov.  11:03 hello.adb
-rw-r--r-- 1 n n  2163 23 nov.  11:03 hello.ali
-rw-r--r-- 1 n n  1456 23 nov.  11:03 hello.o
Toutes ces étapes peuvent être remplacée par l'unique commande gnatmake ci-dessous.

Pour la tester, supprimer tous les fichiers issues de la précédente compilation hello hello.ali hello.o

gnatmake hello.adb

3. On exécute :

n@debian-fixe:~/Programmation/ADA$ ./hello 
Hello WORLD!
Rappel :

1. compilation du source : gcc -c hello.adb
2. test de cohérence des différentes unités : gnatbind
3. édition des liens : gnatlink

Compilation automatique avec Makefile

Voir : Makefile pour les nulls

1. Installation de make

sudo apt install make

2. Edition d'un fichier Makefile Nommé ainsi pour que la commande make trouve ce fichier sans lui indiquer le nom de fichier

CC=gcc -c $(FLAGS)
 
 
# quand on met l'option -c à la commente gcc on demande de compiler en debug
FLAGS=-g
 
all: hello
 
#hello.o: hello.adb
#	$(CC) hello.adb
 
#b~hello.ads: hello.o
#	gnatbind hello
 
#hello: b~hello.ads
#	gnatlink hello
 
 
hello: hello.adb
	$(CC) hello.adb
	gnatbind hello
	gnatlink hello

3. Exécution de la commande make qui lit le fichier Makefile

n@debian-fixe:~/Programmation/ADA$ make
ls -l
 
-rwxr-xr-x 1 n n 30912 23 nov.  12:44 hello
-rw-r--r-- 1 n n   137 23 nov.  11:42 hello.adb
-rw-r--r-- 1 n n  2163 23 nov.  12:44 hello.ali
-rw-r--r-- 1 n n  1456 23 nov.  12:44 hello.o
-rw-r--r-- 1 n n   501 23 nov.  12:35 Makefile

Si on a pas modifié le fichier hello.adb et qu'on relance la commande ```make```, il ne recompile pas pour rien.

n@debian-fixe:~/Programmation/ADA$ make
make: rien à faire pour « all ».
ls -l
make

4. On exécute le programme ADA

./hello