Programmeurs VHDL, apprenez Ada !

Posté le 12 septembre 2021 dans Hardware

J'utilise VHDL depuis des années. J'ai beaucoup pesté contre la rigidité de ce langage.

Et puis un jour, j'ai décidé d'apprendre Ada [1].

Ada est aussi rigide que le VHDL. Normal, VHDL a été conçu à partir de Ada.
Même s'il y a de grosses différences entre les deux langages [2], il y a aussi de grosses similitudes.
La plus grosse de celles-ci étant l'objectif à atteindre : Minimiser les bugs.
Pour atteindre cet objectif, il y a bien sûr la syntaxe qui doit être respectée à la virgule près. Mais aussi et surtout l'utilisation d'un typage fort.
Lorsque l'on discute de VHDL, ce n'est pas mis en avant. Par contre, lorsque l'on discute de Ada, ce concept est beaucoup mis en avant. L'utilisation des types de base (Integer, Float, boolean...) n'est pas proscrite mais déconseillée. La communauté Ada insiste sur le fait que l'on doit déclarer nos propres types. Ceci, dans le but d'éviter les erreurs d'assignation. Une variable contenant des minutes ne doit pas pouvoir être affectée à une variable contenant des kilomètres. De même, des minutes n'ont pas de sens au-delà de 59... Ou pas, cela dépend du contexte.

Autre concept appris avec Ada : La syntaxe verbeuse du langage n'est pas un problème, bien au contraire.
Un des mantras de Ada est : On écrit un programme une fois, on le relit plusieurs fois.
La vitesse d'écriture n'est donc pas un problème. Ce qui importe c'est que les programmes soient le plus lisible possible.
La syntaxe du langage est conçue dans ce sens.

Aussi, la capitalisation des mots clé, des noms de variables, des fonctions, des procédures... n'a pas d'importance. Le but est encore d'éviter les erreurs de programmation. Dans beaucoup de langages, les noms Loopback et LoopBack peuvent être utilisés pour désigner des objets différents. Pas en Ada. Impossible de confondre les deux car, ils désignent le même objet.

Tous ces concepts sont applicables au VHDL.

Ada possède une littérature très étendue sur tous les concepts mis en oeuvre dans le langage. La littérature traitant de VHDL ne met pas assez en avant ces mêmes concepts. Elle se concentre seulement sur l'utilisation du langage pour la description de systèmes numériques, et c'est bien dommage.

En apprenant Ada, j'ai appris un langage de programmation mais aussi une philosophie.
Cette même philosophie est applicable au VHDL.

Tout programmeur VHDL devrait apprendre Ada pour en acquérir la philosophie et ainsi pouvoir apprécier VHDL à sa juste valeur.




[1]Je cherchais un langage plus sûr que le C pour écrire des programmes avec moins de bugs (voir ici) .
[2]VHDL est utilisé pour décrire des systèmes numériques hardware (utilisable avec les ASICs et les FPGA) alors que Ada est un langage de programmation pour microprocesseur.