Site WWW de Laurent Bloch
Slogan du site

ISSN 2271-3905
Cliquez ici si vous voulez visiter mon autre site, orienté vers des sujets moins techniques.

Pour recevoir (au plus une fois par semaine) les nouveautés de ce site, indiquez ici votre adresse électronique :

Forum de l’article

Premiers programmes en Rust

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rappel de la discussion
Premiers programmes en Rust
Stéphane Rivière - le 15 mai 2021

Bonjour Laurent,

Vous savez que je lis toujours avec intérêt vos chroniques.

Rust me semble une tentative étrange de recyclage de Ada dans une syntaxe à la C toujours aussi déprimante. Aussi, je trouve tout ça bien assez vieillot. D’un autre coté, c’est une belle reconnaissance pour les concepts Ada. Mais tout langage sérieux utilise {} et non pas begin et end, s’il fallait donc en passer par là, pourquoi pas ;)

J’espère que vous aurez la possibilité d’actualiser votre relation avec Ada (il y a eu Ada 2005, 2012 et cette année Ada 2021), sans compter ce merveilleux sous-ensemble de Ada qu’est Spark. Pour le tout, on est - me semble t-il - dans une autre dimension.

La diversité des langages informatiques tend vers l’infini. C’est la garantie que tout humain y trouvera le langage correspondant à sa forme d’esprit, ou à ses objectifs...

Et puis la compétition est toujours une bonne chose :)

https://users.rust-lang.org/t/if-ada-is-already-very-safe-why-rust/21911/7

Bien cordialement,

Stéphane

Premiers programmes en Rust
Laurent Bloch - le 15 mai 2021

Bonjour Stéphane,

Merci de votre contribution. Vos arguments pour Ada sont parfaitement valides. Il y a longtemps que je n’ai pas fréquenté ce langage, je n’ai pas suivi ses derniers développements, sous cette réserve je crois que Rust apporte quelque chose de nouveau avec son modèle de mémoire par possession et emprunt, mais Ada permet peut-être la même chose. Il faut toujours être prudent en supposant qu’Ada ne puisse pas faire quelque-chose, mais il me semble qu’il ne procure pas une telle garantie à la compilation.

Il me semble aussi que l’offre de Rust en termes de parallélisme et de répartition est particulièrement facile à comprendre et à utiliser, mais encore une fois je ne suis pas sûr qu’Ada ne fasse pas aussi bien.

J’ai nourri de grands espoirs en Ada, et j’ai été déçu de son faible succès en dehors de domaines spécialisés, aérospatial, militaire, transports, embarqué en général. Comme expliquer ce demi-échec ? Plusieurs hypothèses :

 la paresse, intellectuelle et autre : quand on voit le succès de Python...
 l’absence, pendant longtemps, de logiciels libres : un développeur d’aujourd’hui n’accepte plus d’utiliser des outils pour lesquels il doive s’embarrasser de gestion de licences et autres formalités bureaucratiques ;
 le prix : lorsque j’ai acheté mon premier compilateur Ada, en 1983 ou 1984, pour un VAX 750, sans doute à l’époque la plus petite machine capable de le supporter, j’avais une réduction de 80% en tant qu’organisme de recherche, et le prix toutes remises incluses était de 500 000 F ; comment espérer développer à ce tarif une communauté de développeurs, et surtout équiper universités et écoles, généralement impécunieuses ?

Bref, ce fut une occasion ratée, et même si j’observe que de plus en plus de gens comprennent les apories de C, C++ et Java, sans parler de Python, PHP ou JavaScript, et de ce fait pensent à Ada, l’écosystème est bien petit.

Pour des raisons de pure tactique j’ai écrit un livre de Python, langage fumiste s’il en fut, qui doit son immense succès à plusieurs facteurs parmi lesquels je relèverai :

 c’est du logiciel libre ;
 Guido van Rossum est le genre de type avec lequel tout le monde a envie de travailler (par opposition à tel ou tel ayatollah du monde BSD, au hasard) ;
 il y a une quantité fabuleuse de bibliothèques pour toutes sortes d’applications, et qui en règle générale ne sont surtout pas écrites en Pyhon ;
 les développeurs paresseux (tous par moments) adorent ;
 les enseignants paresseux (tous par moments) adorent.

Je crois qu’une partie de ces facteurs de succès ont manqué à Ada, ils contribueront peut-être à celui de Rust.

Cordialement à vous !

Premiers programmes en Rust
Stéphane Rivière - le 16 mai 2021

Bonjour Laurent,

Je ne peux être qu’en accord avec votre réponse. Et je vois que nous partageons un certain avis commun pour ce hold-up nommé Python.

Comme toute novation ambitieuse, Ada 83 avait placé la barre très haut, avec les effets de bords que vous mentionnez. Ada 95 a corrigé ces justes critiques pour devenir dans la foulée un langage OO complet. Ada 05 a "javaïfié" un tantinet Ada - il y a toujours eu quelques emprunts réciproques entre ces deux langages - Ada 12 a permis l’intégration de Spark - entre autres - et Ada 21 met l’accent sur le parallélisme, eu égard aux processeurs multicœurs, mise à jour d’autant plus pertinente que Ada a toujours eu un train d’avance sur le traitement du multi-tâche, qui est depuis la première version totalement intégré au langage.

En définitive Ada est totalement intégré au compilateur GCC de la FSF, existe aussi avec un backend LLVM, mais aussi avec un générateur pour JVM, C# et même WebAssembly (l’avenir du Web coté client, imho).

Aujourd’hui, compte tenu des ravages du C dans les mains de codeurs à la petite semaine, on constate une appétence au "logiciel solide" sans toutefois oser parler "d’ingénierie logicielle", ce qui nécessiterait une formation et une maîtrise de méthodes dont la plupart des acteurs sont parfaitement démunis.

Dans cette mouvance, on assiste, un peu étonné, au renouveau de Ada dans des domaines comme l’automobile dans l’embarqué, les applicatifs classiques ou même le web (le classique Ada Web Server ou le novateur Gnoga). Les paquetages natifs (libs) disponibles sont en fait légion et offrent toute la palette des applications. Peut être qu’à l’image des supérettes allemandes vs les hypermarchés français, on n’y trouve que trois marques de dentifrices au lieu de trente mais la qualité est là et le bon choix plus rapide !

On observe le même intérêt renouvelé pour Xen pour les clusters de serveurs (même si AWS, qui était fondé sur cet hyperviseur, migre lentement vers une sorte KVM personnalisé), également dans l’automobile, mais pas seulement.

Comme il est bon pour un restaurant d’ouvrir pas loin d’un autre restaurant, je vois dans Rust une bonne chose. Personne n’est propriétaire des concepts mis en avant par Ada et plus il y aura de langages vertueux, avec des développeurs sensibles à ces qualités, mieux l’industrie s’en portera.

À Sowebio, nous avons décidé, il y a deux ans, de repousser toute la panoplie des langages et systèmes à la mode. Nos stations 43" 4K, nos PC portables 4G et notre cluster de serveurs multi-DC sont fondés sur Linux. Nous avons remplacés Bash par HAC https://github.com/zertovitch/hac et tout le développement de Genesix, notre gestionnaire de cluster est en Ada. Plus tard probablement mâtiné de Spark, histoire de se familiariser et d’améliorer.

Pour en revenir à Rust, j’ai trouvé ça, à titre d’illustration : https://blog.adacore.com/from-rust-to-spark-formally-proven-bip-buffers.

Par ailleurs, grand utilisateur de Mozilla Firefox, j’espère que la fondation réécrira au plus vite le navigateur en Rust, en espérant que Firefox y gagne en fuites mémoires (Chrome n’est pas mieux, sinon pire), même si le moteur de rendu est commun et probablement en C++ (ceci expliquant cela)..

Cordialement à vous aussi !

Stéphane

Premiers programmes en Rust
Frédéric LOYER - le 9 février 2024

Il y a beaucoup de choses novateurs en ADA, mais il y a quelques aspects qui rendent la programmation moins pratique.

Par exemple, dans les langages Scheme, Python, OCaml, ... on a un unique type de chaîne de caractères, ici, le type String, Bounded_String, Unbounded_String, avec des conversions explicites à prévoir ("String : " & To_String (S)). Or les chaînes de caractères en programmation Web, il n’y a
que cela.

Je ne sais pas non plus si ADA prévoit un ramasseur de miette (garbage collector) dans les implémentations libres.

Désormais, le choix d’un langage se fait sur les bibliothèques facilement accessibles. L’écosystème Python est à ce sujet impressionnant (ne serait-ce qu’avec Pyplot, Scipy...). Et plusieurs langages sont désormais associés à des gestionnaires de packages pour assurer un accès facile à ces bibliothèques (OCaml/opam, Visual C/vcpkg, Rust/cargo, Python/pip)... signe que l’écosystème importe autant si ce n’est plus que le langage.

Et pour Python, un interpréteur REPL (read-eval-print-loop) est peut être un plus pour les débutants.

Derniers commentaires

Analyse de l’algorithme de Fibonacci
Cet article me fait penser à la manière dont j’ai été bluffé par ChatGPT qui me proposait (...)

Quand la machine apprend
Passionnant livre, parmi l’abondante et inégale floraison actuelle de bouquins sur l’IA. Au (...)

Controverses autour du Système d’information (SI)
Les traités d’informatisation des années 1960 (CEGOS- G. Bauvin, etc.) expliquaient déjà que (...)

Informatique confidentielle
Je cite "moins d’une machine virtuelle que d’un système exploitation virtuel". On a vraiment (...)

Pourquoi Scheme ?
Je suis étonné de la citation suivante dans le contexte d’un article "Pourquoi Scheme ?" : (...)