L’IA ou l’Intelligence de l’Ada

Image générée par une IA

Un Adaiste convaincu vous dirait que le langage Ada est le « meilleur » des langages de programmation. Cela est bien évidemment faux, car le « meilleur » langage de programmation n’existe tout simplement pas et n’existera jamais. Chaque langage a ses qualités et ses défauts, et le choix du langage dépend en grande partie du projet dans lequel il est mis en œuvre.

Au même titre qu’un outil, le bon langage est celui qui répond au besoin. Utiliseriez-vous une tronçonneuse pour faire une coupe précise alors que, par exemple, une scie japonaise serait plus appropriée ? La réponse en non, même si cela peut fonctionner. Avec les langages de programmation, c’est la même chose !

Nous allons regarder ce qui fait les spécificités du langage Ada et en quoi, l’« intelligence » de celui-ci permet, au même titre que l’outil, de l’utiliser quand il est manifestement le plus approprié.

Un langage « cartésien »

L'esprit cartésien est souvent associé à la méthode, à la clarté et à la rigueur de la pensée. Il trouve une partie de ses origines dans la philosophie de René Descartes.

Dès sa création, le langage Ada avait en partie ces traits « cartésiens » :

  • La clarté et la non-ambiguïté de sa syntaxe et de sa sémantique.
  • Une mise en œuvre encourageant la décomposition des problèmes en éléments plus simples.
  • Une spécification rigoureuse et complète.

De façon plus précise, on peut dire du langage Ada qu’il :

  • Permet de garantir une vraie maintenabilité, portabilité, sécurité et fiabilité des logiciels.
  • Offre une puissance de l’abstraction.
  • Détecte au plus tôt les erreurs.

Et cela au travers entre autres de paradigmes supportés comme :

  • La programmation modulaire et structurée.
  • La programmation orientée objet, par classification et composition.
  • La programmation générique.
  • La programmation temps-réel et concurrente.
  • La programmation par contrat et la preuve formelle.

On donne souvent aux langages de programmation un ou plusieurs qualificatifs sur sa nature. Par exemple le Lisp est « fonctionnel », le C++ est « objet », etc. Même si l’Ada a plusieurs qualificatifs, on pourrait lui rajouter celui de « cartésien ». Hormis cela, il fait preuve d’une vraie intelligence de par sa spécification et sa cohérence.

Le bon outil

Mais la question reste : pourquoi et dans quel cadre utiliser le langage Ada ?

Une façon simple de répondre est de regarder où il est aujourd’hui principalement utilisé :

  • Dans le ferroviaire.
  • Dans l’avionique.
  • Dans la défense.
  • Dans le spatial.
  • Dans le nucléaire.

Ces domaines requièrent de la fiabilité, de la sûreté, de la sécurité et de la maintenabilité.

Dans le bestiaire des langages et contrairement à l’Ada, peu d’entre eux offrent ces caractéristiques.

Cela étant, l’Ada souffre aussi de préjugés plus ou moins justifiés. Ils concernent principalement :

  • Sa courbe d’apprentissage : sa syntaxe et sa sémantique peuvent être difficiles à comprendre et à maîtriser, ce qui peut rendre l’apprentissage du langage plus long et plus difficile.

  • Son manque de popularité : l’Ada est considéré comme un langage de niche, ce qui signifie qu’il y a moins de développeurs qui le connaissent et l’utilisent.

  • Son support communautaire limité : en raison de sa faible popularité, le support communautaire pour l’Ada est limité par rapport à d'autres langages.

  • Une perception de complexité : l’Ada est parfois perçu comme un langage complexe et difficile à utiliser, ce qui peut dissuader son adoption.

Pour finir, n’oublions pas que le choix d’un langage de programmation nécessite aussi de prendre en compte :

  • Les contraintes du projet : délais, budget, plateforme cible, etc.
  • Les compétences et la maturité de l’équipe.

Concernant ces deux points, une attitude classique est de raisonner sur le court terme, ce qui s’avère bien souvent être une erreur sur ce type d’applications et de domaines.

Conclusion

L’esprit cartésien est souvent considéré comme un des traits de la pensée française valorisant la logique, l’analyse et la clarté. Le langage Ada ne serait-il donc pas un peu français ? De par son histoire 1, la réponse est clairement oui.

En filant à nouveau la métaphore, le langage Ada est une scie japonaise de la programmation et non une tronçonneuse. Il n’est pas conçu pour les travaux simples et rapides, voire bâclés, comme un script ou une application web, car son domaine de prédilection, ce sont les systèmes critiques ne pouvant tolérer aucune erreur.