Concours de programmation en Ada
Ada est le langage de programmation par excellence lorsque la sécurité, la fiabilité et la pérennité sont essentiels.
Pour la deuxième année consécutive, AdaCore ouvre à tous un concours de programmation autour de ses technologies à savoir Ada et Spark.
Les détails sont en deuxième partie
En quoi cela consiste‐t‐il ?
C’est simple, il faut proposer un projet original de logiciel embarqué utilisant Ada et/ou Spark. Il est possible de fournir un projet utilisant aussi d’autres langages, mais le projet sera noté sur la partie Ada/Spark seule.
Pour qui ?
Il suffit d’être majeur et de ne pas faire partie de la famille des employés d’AdaCore ou des annonceurs. Il est possible de se présenter en équipe de quatre personnes éligibles individuellement.
Conditions de soumission
Le projet devra fournir :
- une description technique ;
- des photos ou des vidéos décrivant le projet ;
- un lien vers un référentiel des sources du projet ;
- la documentation en anglais.
De plus, la documentation devra préciser quelles parties proviennent de bibliothèques externes et quelles parties sont originales.
Critères d’évaluation
Le projet sera noté sur les critères suivants :
- libre selon les définition de la FSF ou de l’Open Source Initiative ;
- collaboratif : le projet peut‐il être construit avec des outils accessibles à toute la communauté ? Le projet est‐il accessible via un gestionnaire de versions accessible publiquement ? A‐t‐il des interfaces clairement définies ?
- fiable : le projet utilise‐t‐il des processus permettant de donner des garanties sur le respect des exigences (ex. : méthodes formelles, programmation par contrats, tests…) ?
- inventif : répond‐il à un nouveau problème ? Fournit‐il une solution inédite à un problème connu ?
Et on soumet quand ?
On peut soumettre depuis le 15 mai 2017 et jusqu’au 15 septembre 2017.
Sachant que l’on peut modifier la soumission jusqu’à la dernière minute, cela laisse trois mois pour peaufiner son projet
Les prix
- première place : 5 000 € ;
- seconde place : 2 000 € ;
- troisième place : 1 000 €.
Par quoi on commence ?
AdaCore fournit depuis maintenant plus d’un an une bonne partie de ses outils sous GitHub, notamment plusieurs environnements d’exécution et une bibliothèque de pilotes pour cartes nues comme la série des cartes de STMicroelectronics utilisant les processeurs STM32.
Il s’agit donc d’un bon point de départ pour démarrer son projet.
Alors, bon courage si ça vous tente, parce que le niveau est assez élevé. :)
Aller plus loin
- Make with Ada (275 clics)
- Le règlement (108 clics)
- La FAQ (87 clics)
- Les gagnants de 2016 (182 clics)
# Le gagnant de 2016
Posté par Blackknight (site web personnel, Mastodon) . Évalué à 3.
Je n'ai pas pensé lors de la création de la dépêche à mettre un lien vers la vidéo montrant la réalisation du gagnant.
C'est chose faite.
Au passage, j'en profite pour mettre les logs des projets gagnants qui vous donneront accès au code, entre autres :
- Etherscope
- Framework to develop control software for the NXP cup race car
- Bluetooth Beacons
Et pour les prix spéciaux:
- IoT Networking Stack for the NXP FRDM-K64F board
- LVC-EMR-1, an explorer and mapper robot
Ouf, voilà
Finalement, ce serait peut-être bien de les mettre dans la dépêche, histoire que ce soit plus "vendeur" :D
# Ada et sécurité
Posté par Eiffel . Évalué à 3.
J'entends souvent parler d'Ada comme un langage sûr, je n'en ai jamais directement mais j'ai pu voir quelques concepts via VHDL ou AADL. En quoi ce langage est-il plus sécurisé qu'un code C ?
[^] # Re: Ada et sécurité
Posté par mahikeulbody . Évalué à 3.
La réponse me paraît évidente mais d'autres sauront bien mieux que moi la résumer en quelques mots. Je vais plutôt à la place donner un exemple d'application où on a considéré qu'il valait mieux Ada qu'un autre langage tel que C ou C++ : le contrôle-commande d'une partie du parc nucléaire français (et aussi d'autres pays).
NB. D'autres langages sont apparus depuis, peut-être que certains d'entre eux auraient pu également convenir.
[^] # Re: Ada et sécurité
Posté par Benoît Sibaud (site web personnel) . Évalué à 5.
Le langage permet plus de vérifications à la compilation et à l'exécution (que pas mal d'autres langages et en particulier que le C).
[^] # Re: Ada et sécurité
Posté par Eiffel . Évalué à 2.
En effet les vérifications à l'exécutions sont complètement absentes du C.
J'essayerai de voir plus en détails les vérifications dont est capable Ada, merci pour le lien :)
[^] # Re: Ada et sécurité
Posté par Blackknight (site web personnel, Mastodon) . É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
[^] # Re: Ada et sécurité
Posté par jb07 . Évalué à 3.
On aurait pu aussi parler de sa gestion des nombres en point flottant et en point fixe, idéal pour le calcul scientifique, de la notion de paquetage (parfait pour les encapsulations et les types abstraits de données), de sa gestion très sure des pointeurs et j'en oublie encore certainement.
Pour la difficulté et la durée d'apprentissage, deux chiffres : le Kernighan et Ritchie fait 280 pages, le John Barnes ("Programming in Ada 2012", pub gratuite) en fait lui … 949 !
[^] # Re: Ada et sécurité
Posté par Blackknight (site web personnel, Mastodon) . Évalué à 3.
Effectivement, j'ajouterai aussi que la norme pèse 951 pages à comparer avec les 1368 pages de la norme C++14… Comme quoi, tout est relatif.
[^] # Re: Ada et sécurité
Posté par Eiffel . Évalué à 1.
Merci beaucoup pour votre commentaire très complet !
[^] # Re: Ada et sécurité
Posté par Blackknight (site web personnel, Mastodon) . Évalué à 3.
Il pourrait l'être encore plus tellement j'ai laissé de côté certaines fonctionnalités pour me concentrer sur celles différenciant du C en termes de vérifications.
Comme dit dans ce commentaire, j'aurais pu parler:
- des différents types de nombres réels (point fixe, point flottant) qui bénéficient eux aussi des contraintes de types range mais aussi des contraintes de précision
- des paquetages qui représente un niveau d'encapsulation que l'on peut rapprocher des namespaces C++
- de la généricité (generics Java ou templates C++)
- des pointeurs que l'on utilise au final assez peu comparé au C
- de l'orientation objet
- des contrats apprus avec le version 2012 de la norme
…
Ce n'est pas un langage qui peut s'apprendre en peu de temps mais il y a tellement de choses que l'on peut très bien commencer à programmer sans tout connaître.
[^] # Re: Ada et sécurité
Posté par cedlemo . Évalué à 1.
Par rapport à OCaml, quels sont les points communs, les différences ou ses atouts?
[^] # Re: Ada et sécurité
Posté par Blackknight (site web personnel, Mastodon) . Évalué à 2.
Les différences :
Les atouts :
Pour les points communs, je ne peux pas dire, je ne connais pas OCaml.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.