Bonjour Tristan. Tu es, entre autres, lauteur de GHDL, un compilateur VHDL écrit en Ada. Peux-tu nous expliquer en quoi cela consiste ?
VHDL signifie « Very high-speed integrated circuit Hardware Description Language ». Comme son nom lindique, cest un langage dédié à la description matérielle de circuits intégrés. VHDL est très utilisé pour la conception de circuits, surtout en Europe. Pour plus dinformations, vous pouvez regarder les nombreuses pages sur le WEB (NdlR : voir la section « liens » à la fin de larticle).
La première version du standard VHDL (IEEE 1076) est sortie en 1987, et sinspire très fortement de la syntaxe et de la sémantique dAda.
Ton compilateur vient se greffer sur le générateur de code de GCC (GNU Compiler Collections). Pourquoi ne pas lavoir développé de manière totalement autonome ?
Mes premières versions étaient autonomes : il sagissait en fait dun interpréteur. Mais hélas, la vitesse déxécution est très limitée par cette technique. Jai donc choisi de changer de technique et de compiler le code VHDL. Plutôt que de réécrire un compilateur, jai choisi de minterfacer avec GCC.
Pourquoi avoir choisi Ada 95 pour développer cette partie frontale ? Ce choix sest-il avéré judicieux ?
Il y a plusieurs réponses. Tout dabord, il aurait été préférable de réaliser cette partie en VHDL, mais hélas, VHDL nest pas bien adapté pour écrire des compilateurs ou des outils systèmes. Se posait également le problème du « bootstrap » (comment compiler ce premier compilateur ?).
Je nai pas hésité entre Ada95 et un autre langage. En effet, je voulais apprendre Ada95 et pour cela un projet est idéal. De plus, je ne connaissais pas très bien VHDL. Or, VHDL est très inspiré dAda, si bien quen utilisant et en apprenant Ada, japprofondirais mes connaissances en VHDL.
De plus, Ada est un langage conçu et adapté aux gros projets. Et un compilateur nest pas un petit projet.
Enfin, Ada est un langage « pensé » et cohérent ; on apprend beaucoup en programmant en Ada.
La partie de GCC permettant de générer du code est écrite en C. As-tu rencontré des difficultés pour tinterfacer avec ce module ?
Effectivement, GCC est en C alors que le reste de GHDL est en Ada95. En fait, jai écrit un « binding » pour les fonctionnalités de GCC utilisées par le frontal. Ce « binding », que jappelle AGCC (A comme Ada), consiste en un petit nombre de paquetages déclarants des fonctions ou des procedures de GCC. Il ne donne pas accès directement aux structures de données, tout doit passer par des sous-programmes. Cest un peu plus lent mais cela facilite lécriture et la mise à jour du « binding ».
Pour ceux qui ne connaissent pas bien Ada95, il faut savoir quil comporte des fonctionnalités pour sinterfacer aisément avec dautres langages.
As-tu eu des retours dexpérience sur GHDL ? Sur AGCC ?
Je ne crois pas quAGCC soit utilisé dans dautres projets.
Les utilisateurs jugent GHDL assez avancé car il compile quasiment tous leurs projets. Par contre il y a très peu de contribution, car VHDL est un langage pour éléctroniciens, qui ne sont pas toujours des informaticiens. Ceci ne semble pas étonnant.
Enfin, il est sûr que le fait quil soit en Ada95 ne favorise pas les contributions, car ce langage nest, hélas, pas très populaire.
Tristan, merci. Jespère que ton projet fera des émules et que nous verrons fleurir beaucoup dautres programmes écrits en Ada 95.
Liens :
GHDL
GCC (GNU Compilers Collection)
Association Ada-France
Liens VHDL