Le 28/02/2019 à 14:37, Vincent Duvernet a écrit :
Mon Dieu, l'ADA, mais quelle horreur.
Merci Vincent de me donner l'occasion de parler de Ada, qui s'écrit
ainsi car c'est un prénom féminin. ADA c'est l'American Dental
Association ou l'Americans with Disabilities Act ou un loueur :)
Ada est le prénom du premier programmeur de l'humanité, qui était une
femme, Ada Byron, Countess of lovelace, née en 1815.
Ses programmes (comprenant tous les concepts usuels comme des variables,
des fonctions, etc...) prévus pour la machine de Babbage (qui n'a jamais
été achevée) ont été implémentés 120 ans plus tard. Ils se sont tous
exécutés sans un seul bug.
Ada est un langage compilé ultra portable, syntaxe à la Pascal, avec un
runtime normalisé ISO très riche. Il gère directement le multitâche, le
temps-réel, la programmation par preuve et la programmation distribuée
(dans le langage lui-même, aucune nécessité de lib externe). C'est aussi
un langage très très très productif (peu d'anomalies .
Les versions Ada 2005, 2012 et bientôt 2020 ont ajouté beaucoup de
concepts sympas, dont certains en provenance de Java (interfaces).
Inversement, pas mal de concepts sympas de Ada se retrouvent dans Java
ou Python.
Mais Ada est lui un vrai langage compilé qui gère les dépendances d'une
façon si rigoureuse qu'aucune explosion à l'exec n'est envisageable pour
ça. Ceux qui, comme moi, doivent aussi bosser avec des langages
interprétés, comme JS et Java, apprécieront la disparition de ce que
l'on appelle souvent "l'enfer des dépendances".
Ada permet de faire réellement de l'ingénierie logicielle et de
réutiliser des composants logiciels pour créer des programmes selon les
mêmes méthodes que celles des ingénieurs construisant un pont, un
immeuble ou un navire. Avec la même garantie de bonne fin, dans le
respect des délais (et souvent en avance d'ailleurs).
Je conçois que tout le monde ne soit pas fan de .NET mais au moins il reste le
C/C++.
Pourquoi opposer .NET, langage plutôt bien conçu par l'inventeur de
Delphi (et que beaucoup préfèrent à Java) avec le C, sorte d'assembleur
plus ou moins portable dont l'industrie ne saurait se passer ?
Ce sont juste deux langages pour des usages différents...
Par contre le C++, dont l'emblème devrait être l'ornithorynque, est bien
conçu pour tuer sa productivité et améliorer sa pratique de GDB (le
debuggueur GCC).
Un usage conseillé du C++ est d'inventer un langage personnel afin de se
rendre indispensable dans l'entreprise, par exemple en redéfinissant par
des macros des mots clés et des classes : le résultat est prodigieux ;).
Sérieusement, on peut faire des choses superbes en C++. Mais il faudra
s'appliquer. Beaucoup plus que dans d'autres langages. Le simplisme
apparent du C++ a un coût caché : devoir s'astreindre à beaucoup de
règles très strictes pour atteindre un certain niveau de qualité.
Non mais franchement, si la première condition est fausse, à quoi ça sert que
ce stupide langage teste aussi les autres ?
Certes, mon prof' d'Algo était pro-ADA lorsque j'étais déjà convaincu par la
supériorité du C (oui c'était au millénaire précédent ^^)
No war & Peace, Ada me permet juste de partir plus tôt du boulot pour
aller me baigner, d'oublier GDB, d'être portable sans toucher ni caster
une variable de 8 à 64 bits, de porter une application Gtk de 40K lignes
de doze à nux ou 200K lignes de doze à nux batch du premier coup sans
une seule erreur. On ne peut pas faire ça en C++. C'est impossible.
Le tout avec les perfs du C/C++ (c'est le même backend GCC) mais en
moins de lignes et incomparablement plus maintenable. D'ailleurs tous
les compilos Ada sont validés et produisent des binaires aux résultats
identiques.
Initialement, je citais ce langage juste pour dire qu'on peut en faire
sur un bidule aussi simple qu'un Arduino (petite carte bien fun).
Puisqu'on en parle, plus d'info sur ce papier fait pour le Paris Open
Summit 2017...
https://stef.genesix.org/pub/embedded_AVR-Ada_-_Setup_POSS2017.pdf
Pour regarder de plus près :
http://www.getadanow.com
https://www.adacore.com/community (pour devs GPLv3)
https://packages.debian.org/sid/gnat (pour devs commerciaux)
L'essentiel est de programmer avec le langage qu'on aime et qu'il soit
approprié à l'objectif à atteindre.
Et de rester curieux de ce que l'on ne connaît pas. C'est pour ça que je
suis sur FRnOG, et que j'apprends plein de trucs :)
---------------------------
Liste de diffusion du FRnOG
http://www.frnog.org/