La plupart des gens que vous appelez fanatiques pro-Rust ne prennent la peine de défendre le Rust que parce des gens (que l'ont pourrait tout autant qualifier de "fanatiques du C++") crachent dessus, généralement sans trop savoir de quoi il parlent. Je ne parle normalement pas de Rust dans les news qui ne parlent que de C++ si ce n'est pour rectifier quelqu'un qui dirait des erreur sur Rust.
Le unsafe en DotNet et Java n'est pas forcément comparable car ces langage n'ont pas la prétention d'être des langages systèmes. Je n'ai jamais eu besoin de me pencher sur le unsafe en C#, mais au moins, en ce qui concerne en Java, la notion de unsafe ne fait pas officiellement partie du langage. La plupart des JRE embarquent bien une classe Unsafe, mais elle ne fait pas partie de la bibliothèque standard et elle n'est pas officiellement supportée. En général quand on veut faire proprement en Java ce que l'on ferait avec du unsafe en Rust, on passe par des bibliothèque natives en C/C++/ou maintenant Rust.
Ces comparaisons sont simplistes notamment car elles impliquent que les problèmes de sécurité ont un impact immédiatement visible chez le producteur. Mais ce qui fait la particularité des failles de sécurité, c'est qu'elle ne sont pas forcément évidents à éviter et à identifier et elles auront un impact bien plus tard sur l'utilisateur du logiciel.
Pour reprendre la cas du pâtissier : il a bien fait son boulot s'il livre un bon gâteau. Il n'a pas a craindre que parce qu'il n'a pas tenu le couteau parfaitement à la verticale quand il a découpé les fraises, le gâteau devienne toxique quand on le mange la tête en bas un Mardi de pleine lune.
S'il suffisait d'avoir à disposition des développeurs chevronnés pour éviter les problèmes on aurait pas tant de failles, y compris dans les logiciels les plus surveillés au monde comme les navigateurs, OS, base de données ...
Java ne résout clairement pas tous les problèmes possible (Rust non plus d'ailleurs), mais c’était clairement une amélioration comparé au C et C++ au niveau de la sécurité, même si (contrairement au Rust) il implique des concessions sur l'accès au bas niveau et la maitrise des performances.
On peut même aller au delà : le programmeur est la seule et unique cause des problèmes de sécurité. Le souci, c'est que quand on a dit ça, on a rien dit parce que malgré l'IA générative(qui est elle aussi faillible), on ne sait toujours pas faire de programmes un minimum complexe sans programmeurs.
Donc si on veut améliorer la sécurité, il faut améliorer le programmeur, et comme malgré toutes les formations et l'expérience accumulée, ça restera toujours un humain faillible, un compilateur qui permettent d’éviter les pratiques de codage problématiques, c'est un gros avantage. Et comme Rust ne résout pas directement les problèmes (comme Java ou C#) ou les ignore (comme parfois en C et C++), mais les explique, c'est également un très bon moyen de formation.
Partager