mahikeulbody met la barre vachement haut en disant qu'on pourrait résumer en quelques mots :)
Les grands concepts d'Ada sont:
- Le typage fort
- La concurrence
- la programmation bas niveau en restant haut niveau
Voilà pour les gros points. Ceux-ci se déclinent ensuite en différentes techniques.
Le typage fort
Ada permet la définition de type très contraint.
On peut par exemple définir des types comme
Qui définit donc deux types entiers avec des bornes différentes.
Les deux types, même s'ils sont des entiers ayant des plages de recouvrement, sont incompatibles et on ne peut pas, par exemple, assigner à une variable du type degres_kelvin une variable de type degres_celsius sans faire une conversion
degre_c:degre_celsius:=14;-- Température de circonstancedegre_k:degre_kelvin:=degre_c;-- Impossible même si la valeur est acceptabledegre_k2:degre_kelvn:=-12;-- le compilateur envoie juste un warning disant que cela va lancer une exception à l'exécution
Ceci n'est qu'un petit exemple du système de type. Pour beaucoup plus d'infos (il est trop tard :)), voir le wikibook.
La concurrence
Les tâches, threads en Java ou C (via les pthread Linux), font partie intégrante du langage depuis 1983.
Le langage définit donc la notion de multiprocessus depuis le début ainsi que les communications inter-process.
Ces dernières se font au travers des points de rendez-vous avec ou sans condition et des objets protégés.
C'est une partie complexe du langage mais qui, comme elle est normalisée, permet de faire de la programmation concurrente sans se soucier de la plateforme.
Soyons clair, là encore, j'abrège à mort :D
la programmation bas niveau en restant haut niveau
Là, il s'agit d'un des domaines où Ada excelle. En effet, on utilise surtout Ada dans l'embarqué... Normal, on ne peut pas y changer le code tous les quatre matins alors on veut un truc qui tienne la route.
Ada permet d'exprimer ce que l'on appelle les clauses de représentation.
Celles-ci définissent comment une structure doit être représentée en mémoire.
Par exemple:
Là, j'avoue, je ne me suis pas foulé, c'est dans la norme ;)
L'idée est de dire ce que l'on veut représenter, ici un medium mais aussi la taille allouée en mémoire (et le compilateur dira si cela peut se faire) et l'alignement en mémoire.
Ensuite, on peut même définir l'emplacement en mémoire.
Au passage, on se rend compte qu'il n'est pas besoin de faire appel aux pointeurs pour ce genre d'exercice.
Ceux-ci sont réservés à ce pour quoi ils ont été conçus, à savoir l'allocation dynamique.
Il se trouve que dans l'embarqué, on n'aime pas trop les allocations dynamiques de mémoire puisque le temps d'allocation n'est pas déterministe et le risque d'allocation par manque de RAM qui échoue existe (ce qui pourrait planter le programme).
Conclusion
C'est un résumé beaucoup trop rapide à mon goût mais :
1. il est beaucoup trop tard
2. le langage est très complet avec des concepts réellement orthogonaux (il n'y a que peu d’ambiguïtés voire pas du tout) et il est difficile de tout aborder dans un seul commentaire
3. le langage est complexe (mais comme dirait certains auteurs sur le sujet : c'est un langage complexe pour un monde complexe)
Ce qu'il faut vraiment savoir, c'est que faire compiler un programme Ada est, au début, une vraie gageure tellement le compilateur peut apparaître fasciste mais rien n'est implicite.
Contrairement au C, on estime que le programmeur fait des erreurs et que le compilateur n'en fait pas (au moins dans ce qu'il sait faire).
Au début, on se dit que c'est vraiment trop compliqué, trop verbeux et qu'on se bat contre le compilateur. Après un peu de temps, on utilise le compilateur pour ce qu'il est, un outil permettant de vérifier notre code et générer un binaire qui marche (ok, ça, c'est l'utopie) et la verbosité, c'est finalement un atout quand on doit relire son code six mois plus tard.
Voilà, je pourrais en écrire des tonnes mais je ne peux que te conseille d'essayer, en t'appuyant sur le wikibook, le manuel de référence que tout compilateur doit suivre et les deux newsgroup, le français et l'anglais où l'on ne trouve que des gens sympathiques :)
[^] # Re: Ada et sécurité
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Make with Ada deuxième édition. Évalué à 10.
mahikeulbody met la barre vachement haut en disant qu'on pourrait résumer en quelques mots :)
Les grands concepts d'Ada sont:
- Le typage fort
- La concurrence
- la programmation bas niveau en restant haut niveau
Voilà pour les gros points. Ceux-ci se déclinent ensuite en différentes techniques.
Le typage fort
Ada permet la définition de type très contraint.
On peut par exemple définir des types comme
Qui définit donc deux types entiers avec des bornes différentes.
Les deux types, même s'ils sont des entiers ayant des plages de recouvrement, sont incompatibles et on ne peut pas, par exemple, assigner à une variable du type degres_kelvin une variable de type degres_celsius sans faire une conversion
Ceci n'est qu'un petit exemple du système de type. Pour beaucoup plus d'infos (il est trop tard :)), voir le wikibook.
La concurrence
Les tâches, threads en Java ou C (via les pthread Linux), font partie intégrante du langage depuis 1983.
Le langage définit donc la notion de multiprocessus depuis le début ainsi que les communications inter-process.
Ces dernières se font au travers des points de rendez-vous avec ou sans condition et des objets protégés.
C'est une partie complexe du langage mais qui, comme elle est normalisée, permet de faire de la programmation concurrente sans se soucier de la plateforme.
Soyons clair, là encore, j'abrège à mort :D
la programmation bas niveau en restant haut niveau
Là, il s'agit d'un des domaines où Ada excelle. En effet, on utilise surtout Ada dans l'embarqué... Normal, on ne peut pas y changer le code tous les quatre matins alors on veut un truc qui tienne la route.
Ada permet d'exprimer ce que l'on appelle les clauses de représentation.
Celles-ci définissent comment une structure doit être représentée en mémoire.
Par exemple:
Là, j'avoue, je ne me suis pas foulé, c'est dans la norme ;)
L'idée est de dire ce que l'on veut représenter, ici un medium mais aussi la taille allouée en mémoire (et le compilateur dira si cela peut se faire) et l'alignement en mémoire.
Ensuite, on peut même définir l'emplacement en mémoire.
Au passage, on se rend compte qu'il n'est pas besoin de faire appel aux pointeurs pour ce genre d'exercice.
Ceux-ci sont réservés à ce pour quoi ils ont été conçus, à savoir l'allocation dynamique.
Il se trouve que dans l'embarqué, on n'aime pas trop les allocations dynamiques de mémoire puisque le temps d'allocation n'est pas déterministe et le risque d'allocation par manque de RAM qui échoue existe (ce qui pourrait planter le programme).
Conclusion
C'est un résumé beaucoup trop rapide à mon goût mais :
1. il est beaucoup trop tard
2. le langage est très complet avec des concepts réellement orthogonaux (il n'y a que peu d’ambiguïtés voire pas du tout) et il est difficile de tout aborder dans un seul commentaire
3. le langage est complexe (mais comme dirait certains auteurs sur le sujet : c'est un langage complexe pour un monde complexe)
Ce qu'il faut vraiment savoir, c'est que faire compiler un programme Ada est, au début, une vraie gageure tellement le compilateur peut apparaître fasciste mais rien n'est implicite.
Contrairement au C, on estime que le programmeur fait des erreurs et que le compilateur n'en fait pas (au moins dans ce qu'il sait faire).
Au début, on se dit que c'est vraiment trop compliqué, trop verbeux et qu'on se bat contre le compilateur. Après un peu de temps, on utilise le compilateur pour ce qu'il est, un outil permettant de vérifier notre code et générer un binaire qui marche (ok, ça, c'est l'utopie) et la verbosité, c'est finalement un atout quand on doit relire son code six mois plus tard.
Voilà, je pourrais en écrire des tonnes mais je ne peux que te conseille d'essayer, en t'appuyant sur le wikibook, le manuel de référence que tout compilateur doit suivre et les deux newsgroup, le français et l'anglais où l'on ne trouve que des gens sympathiques :)
Je reste dans les parages pour les questions :D