# Programmation Ada/FAQ/Bibliothèques

Ce document peut être librement copié et distribué en respectant les conditions de la Licence de documentation libre GNU.
École Nationale Supérieure des Télécommunications Département Informatique et Réseaux
Cet article est livré en l'état, sans garantie déclarée ni implicite. Bien que tous les efforts aient été déployés pour s'assurer de la validité des informations contenues dans ce document, l'auteur ne pourra être tenu pour responsable d'erreurs, ou d'omissions, ni d'éventuels dommages résultant de leur utilisation.

# Bibliothèques
## Bibliothèques diverses
### Existe-t-il l'équivalent de la STL de C++ en Ada?

Ada 2005 propose l'équivalent de la STL pour les aspects suivants:
| Conteneur | Équivalent C++ | Version de C++ |
| Ada.Containers.Vectors | std::vector | C++ 98 |
| Ada.Containers.Doubly_Linked_Lists | std::list | C++ 98 |
| Ada.Containers.Hashed_Maps | std::unordered_map | C++ 0x |
| Ada.Containers.Ordered_Maps | std::map | C++ 98 |
| Ada.Containers.Hashed_Sets | std::unordered_set | C++ 0x |
| Ada.Containers.Ordered_Sets | std::set | C++ 98 |
Chaque conteneur générique existe en deux versions : une pour les types définis (de taille connue à l'avance) et une autre pour les types indéfinis (de taille non connue à l'avance).
La bibliothèque normalisée contient également un algorithme générique de tri appelé Ada.Containers.Generic_Array_Sort.
Ada 2012, en cours d'élaboration, ajoutera de nouveaux types de conteneurs et de nouveaux algorithmes.

### Existe-t-il une bibliothèque XML en Ada?

XML/Ada est disponible sur le site de développement de Logiciel Libre d'ACT Europe.

### Existe-t-il une bibliothèque Posix en Ada?

Il y en a une pour l'ensemble des systèmes Posix, appelée Florist. Une version spécifique pour Windows est nommée Win32POSIX.

### Comment accéder à une base de données depuis Ada?

Le projet GNADE, disponible librement sur http://www.sourceforge.net/projects/gnade, a pour ambition de donner accès à toutes sortes de bases de données depuis Ada.
Une bibliothèque spécifique pour PostgreSQL est disponible librement sur http://www.rfc1149.net/devel/pgada.

## Programmation réseau
### Comment utiliser des sockets en Ada?

La distribution AdaSockets permet d'utiliser les sockets BSD en Ada sous Unix, Windows et OpenVMS. Il existe également une liste de diffusion (en anglais) qui traite des aspects techniques de AdaSockets.
De plus, GNAT offre depuis la version 3.14 un paquetage appelé GNAT.Sockets permettant de faire des sockets basiques.

### Existe-t-il un serveur WWW en Ada?

AWS, de Pascal Obry et Dmitriy Anisimkov, permet d'inclure un mini-serveur WWW dans une application Ada, permettant ainsi de l'instrumenter et de l'interroger à distance. Un ensemble de services tels que le module de session ou la gestion du push facilite le développement d'applications web. AWS permet également l'utilisation de SSL pour une connexion sécurisée. Cet environnement de développement dispose également d'une liste de diffusion.

### Existe-t-il une implémentation de SOAP en Ada?

AWS, depuis la version 1.1, vous permet d'ajouter une interface SOAP à vos applications basées sur le protocole HTTP.

### Est-il possible de programmer des systèmes répartis en Ada pur?

La norme Ada 95 définit, dans son annexe E, une manière de faire des systèmes répartis en Ada. La seule mise en œuvre actuelle de cette annexe est PolyORB, l'intergiciel libre à personnalités multiples d'AdaCore, qui met également en œuvre MOMA, CORBA et d'autres mécanismes. PolyORB requiert GNAT. Voir http://libre.adacore.com/polyorb/.

## GtkAda
### Qu'est-ce que GtkAda?

GtkAda est une bibliothèque permettant, sous Unix ou sous Windows, de créer des applications graphiques portables.

### GtkAda permet-il de créer des contrôles dynamiquement?

Tout à fait; son interface ressemble à Delphi ou à Visual Basic.

### Quelle version de GtkAda utiliser?

Le numéro de version de GtkAda est en trois parties X.Y.Z; les deux premières, soit X.Y, correspondent a la version de GTK+ prise en charge; la troisième correspond à des modifications mineures spécifiques à GtkAda et pas à GTK+. Par exemple, GtkAda 2.14.2 prend en charge toutes les fonctions de GTK+ jusqu'à la version 2.14.0.
Comme le numéro majeur, X, reste stable tant que la compatibilité arrière est assurée, GtkAda 2.14.2 peut aussi être utilisé avec toutes les versions ultérieures de GTK+, par exemple 2.16.z, mais sans prise en charge des fonctionnalités ajoutées entre 2.14 et 2.16. En revanche il ne peut pas être utilisé avec le futur GTK+ 3.0.
Le numéro Y est toujours pair; il dénote une version stable de GTK+ par opposition à une version en cours de développement.

### Peut-on créer une application graphiquement avec GtkAda?

C'est possible: GtkAda est interfacé avec Glade, un outil permettant de construire des interfaces graphiques.