IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

« Les avions F-35 bannissent 90 % des fonctionnalités du C++ pour obtenir un code sûr », selon une Googler
Dont le partage d'expérience suscite des appels d'observateurs à passer au langage Rust

Le , par Patrick Ruiz

25PARTAGES

12  0 
« Les avions F-35 bannissent 90 % des fonctionnalités du C++ pour obtenir un code sûr », selon une Googler
Dont le partage d’expérience suscite des appels d’observateurs à passer au langage Rust

L'avion de chasse F-35 est actuellement programmé en C++. C'est un choix basé sur la maturité du langage, un vaste vivier de développeurs et l'existence d'une norme de codage stricte et largement testée (le standard JSF C++). C’est autant d’éléments qu’une ingénieure de Google met en avant dans le cadre d’un retour d’expérience de mise à contribution dudit standard qui suscite des appels de certains intervenants à passer au langage Rust. En effet, la question de savoir si Rust est meilleur que le C++ pour la programmation des systèmes critiques fait l'objet d'un débat continu au sein de la communauté des ingénieurs logiciels au sens large, mais actuellement, il n'est pas utilisé dans les systèmes principaux du F-35.





C++ contre Rust : Et si le problème se situait plutôt entre la chaise et le clavier ?

C’est ce que suggère l’existence de la norme JSF C++. Elle contient 221 règles dont le programmeur a la charge de l’implémentation afin d’éviter les pièges courants du C++. Parmi les plus notables, on peut citer :

  • Pas d'exceptions : la gestion des exceptions C++ est entièrement interdite afin de garantir une exécution déterministe.
  • Pas d’allocation dynamique de mémoire : l'utilisation de malloc, free et new/delete est généralement interdite après l'initialisation afin d'éviter les fuites de mémoire et la fragmentation.
  • Pas de récursivité : la récursivité est interdite afin d'éviter les débordements de pile et de rendre le temps d'exécution prévisible.
  • Complexité limitée : chaque fonction doit être suffisamment simple (complexité cyclomatique ≤ 20) pour que tous les chemins de décision puissent être testés de manière approfondie.

L’existence de la norme JSF C++ est en phase avec un avis de Bjarne Stroustrup selon lequel ce qu’il est possible d’obtenir du C++ en matière de sécurisation des logiciels dépend entre autres du développeur et notamment de la connaissance des outils que lui offre le langage, de sa maîtrise du compilateur, etc. En droite ligne avec cette position, le créateur du C++ propose donc des Profils qui ont pour but de définir des modes de C++ qui imposent des contraintes sur la manière dont le programmeur utilise le langage et la bibliothèque, afin de garantir certaines propriétés de sécurité. Il s'agit principalement de contraintes au moment de la compilation, bien que dans la pratique, certaines vérifications puissent être mises en œuvre à l'aide de fonctionnalités de bibliothèque qui ajoutent une surcharge d'exécution limitée.

Au lieu d'introduire des constructions de langage entièrement nouvelles, les Profils limitent principalement les fonctionnalités et les utilisations existantes. L'idée est que vous pouvez activer un profil, et tout code qui l'utilise accepte de se conformer aux restrictions. Si vous ne l'activez pas, tout fonctionne comme avant. Il est donc rétrocompatible.


La récente adoption du Rust comme deuxième langage de programmation du noyau Linux aux côtés du C indique néanmoins que le Rust a du potentiel pour se positionner parmi les mastodontes de la programmation système

La prise en charge de Rust pour le développement du noyau Linux est vue comme une « une étape importante vers la capacité d'écrire les pilotes dans un langage plus sûr. » Rust de Mozilla Research est le type de langage de programmation auquel ceux qui écrivent du code pour des systèmes d’entrée/sortie de base (BIOS), des chargeurs d’amorce, des systèmes d’exploitation, etc. portent un intérêt. D’avis d’observateurs avertis, c’est le futur de la programmation système en lieu et place du langage C. En effet, des experts sont d’avis qu’il offre de meilleures garanties de sécurisation des logiciels que le couple C/C++. Chez AWS on précise que choisir Rust pour ses projets de développement c’est ajouter l’efficacité énergétique et la performance d’exécution du C à l’atout sécurité.

En effet, il y a une liste de griefs qui reviennent à l’encontre du langage C : les problèmes liés à la gestion de la mémoire – dépassements de mémoire tampon, allocations non libérées, accès à des zones mémoire invalides ou libérées, etc. D’après les chiffres du dictionnaire Common Vulnerabilities and Exposure (CVE), 15,9 % des 2288 vulnérabilités qui ont affecté le noyau Linux en 20 ans sont liées à des dépassements de mémoire tampon.

De plus, certains benchmarks suggèrent que les applications Rust sont plus rapides que leurs équivalents en langage C. Et c’est justement pour ces atouts que sont la parité en termes de vitesse d’exécution en comparaison avec le C, mais surtout pour la sécurisation et la fiabilité que de plus en plus d’acteurs de la filière du développement informatique recommandent le Rust plutôt que le C ou le C++.

Ainsi, en adoptant Rust, la communauté autour du noyau Linux devrait mettre à profit ces atouts du langage sur le C. Et elle devrait faire d’une pierre deux coups étant donné que Rust peut faciliter l’arrivée de nouveaux contributeurs. C’est en tout cas ce que laisse entrevoir une étude de l’université de Waterloo. C'est pour ce lot de raisons que Mark Russinovich de Microsoft recommande le langage Rust plutôt que le C ou C++ dans le cadre des nouveaux projets.

Et vous ?

Que pensez-vous de ces appels à réécrire la base de code C++ des avions F-35 en Rust ? Quels seraient les avantages d’une telle opération ?
Partagez-vous les avis selon lesquels le problème n’est pas les langages de programmation mais la capacité des programmeurs à tirer le meilleur parti de ces derniers ?
L'adoption du Rust comme deuxième langage de programmation du noyau Linux aux côtés du C est-elle un signal suffisamment fort pour que les nouveaux projets soient menés dès le départ non pas en C ou C++ mais en Rust ?
Partagez votre expérience personnelle en programmation système avec Rust comme langage

Voir aussi :

L'équipe Microsoft Security Response Center recommande l'utilisation de Rust comme approche proactive pour un code plus sécurisé
Quel langage pourrait remplacer C ? Après avoir comparé Go, Rust et D, le choix d'Andrei Alexandrescu se porte sur D
C2Rust : un outil qui permet de faire la traduction et la refactorisation de votre code écrit en langage C vers le langage Rust
Vous avez lu gratuitement 2 599 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de calvaire
Expert éminent https://www.developpez.com
Le 19/12/2025 à 9:57
je ne comprends pas ce débat/cette guerre.

j'ai toujours développé en c/c++ des projets critique/complexe sans ressentir de problèmes (enfin pas plus qu'avec un autre langage même plus haut niveau comme python/java), des fuites mémoires j'en ai vu dans des projets coder en java/python/erlang, bref dans tous les langages.

Que certains aiment rust et veulent le pousser et l'utiliser dans de la prog kernel pourquoi pas, j'ai rien contre ca et je m'en fou complétement, mais de la à crée de tels débats et guerres sur le net j'ai du mal à comprendre.
Si vous saviez tous ce qui tourne en c/c++, ca tourne depuis plus de 20ans de manière très stable, de la à vendre rust comme plus sur... peut être moins sujets aux pièges, mais un programme bien testé et respectant le coding standard et les bon patterns c'est un programme sur, peut importe le langage.

le seul langage pourrie que je connaisse c'est javascript, c'est un langage codé à l'arrache avec pleins d'incohérence. D'ailleurs plus personne ne code en javascript et utilise une surcouche comme angular. Dommage d'ailleurs de pas avoir refait ce langage sur des bases plus solide, comme l'a fait php et python (bien merdiques dans leurs 1ere versions)
8  2 
Avatar de Fagus
Membre expert https://www.developpez.com
Le 19/12/2025 à 13:40
C'est un sous-ensemble limité du C++.
Pas d'allocation dynamique de mémoire.
Pas d’arithmétique des pointeurs .
Pas d'exceptions.
Certains include interdits.
Pas de récursion (en même temps, stack overflow c'est mieux en forum qu'en plein vol)
etc.

Ils ont crée un linter qui vérifie leurs règles de style qui enlèvent tous les éléments risqués du langage.

À se demander si ça ne valait pas le coup de juste former leurs employés à coder en ADA, qui a quand même été conçu pour la sécurité et pour ce genre d'applications.
4  0 
Avatar de Bardaz
Nouveau Candidat au Club https://www.developpez.com
Le 19/12/2025 à 10:27
C'est exact c'est incompréhensible et c'est une piste mais peut être que c'est c'est politique.

C++
Citation Envoyé par Wikipédia
Personne ne possède le langage C++. Il est libre de droits[9] ; cependant, le document de standardisation n'est quant à lui pas disponible gratuitement.
Citation Envoyé par Linuxfr
  • juillet 1989, Dmitry Lenkov explique la création d’un groupe de travail C++ officiel et d’y inclure d’office Bjarne Stroustrup ;
  • février 1990, première réunion du comité ANSI C++ ;
  • juin 1991, la réunion du comité ANSI C++ réunit de très nombreux participants non états‐uniens et la décision est prise de travailler conjointement avec le groupe de travail WG21 international.
Citation Envoyé par Linuxfr
Les membres du comité de normalisation
En 1998, les membres finalisent le premier standard C++ : C++98. Soit une vingtaine d’années après la création du langage, et une dizaine d’années après l’initiative de normaliser celui‐ci.
Pour devenir membre du comité international de normalisation du C++, appelé officiellement ISO/IEC JTC 001/SC 22/WG 14/WG 21, il faut être membre d’une représentation ISO de son pays. Une dizaine de pays est représentée :

  • États‐Unis (Task Group PL22.16 de l’ANSI) ;
  • France (Comité de Normalisation Cpp de l’AFNOR) ;
  • Allemagne (DIN) ;
  • Royaume‐Uni (BSI) ;
  • Canada (SCC) ;
  • Finlande SFS ;
  • Pays-Bas (NEN) ;
  • Espagne (AENOR) ;
  • Suisse (SNV) ;
  • Italie (UNI).
Source: https://linuxfr.org/news/les-couliss...ormalisation-c

Rust
Citation Envoyé par Wikipédia
Le 8 février 2021, la formation de la Rust Foundation a été annoncée par ses cinq entreprises fondatrices (AWS, Huawei, Google, Microsoft, et Mozilla)[32],[33]. Dans un blog publié le 6 avril 2021, Google a annoncé le support de Rust au sein du Android Open Source Project comme alternative à C/C++ [34].

Le 22 novembre 2021, l'équipe de modération, qui était chargée de faire respecter les normes de la communauté et le Code de conduite, a annoncé sa démission "pour protester contre le fait que l'équipe principale ne rende de comptes à personne d'autre qu'à elle-même"[35]. En mai 2022, l'équipe principale de Rust, d'autres programmeurs principaux et certains membres du conseil d'administration de la Fondation Rust ont mis en œuvre des réformes de gouvernance en réponse à l'incident (quelles reformes ?).

La Fondation Rust a publié le 6 avril 2023 un projet de nouvelle politique de marque déposée, révisant ses règles sur la façon dont le logo et le nom Rust peuvent être utilisés, ce qui a entraîné des réactions négatives de la part des utilisateurs et des contributeurs de Rust.
Je n'ai rien trouver sur l'organisation de la prise de décision concernant Rust dans un cadre Hors US seulement une représentation plus importantes des Big Techs Américaines que pour C++. Voici la page de la Fondation Rust qui gère le langage. J'ai compris que tout dépend de la fondation Américaine et que la décentralisation par Pays que propose C++ n'est pas présente. Il y a un simulacre avec des membres du board qui peuvent être étranger mais ce ne sont pas des instances indépendantes type AFNOR donc leur poids politique est moindre. Encore une fois la recherche est très succinte donc si une personne qui connaît mieux la chose peut nous en parler.
https://rustfoundation.org/about/#board-of-directors

Voici le modèle de gouvernance, encore une fois ça à l'air très bien mais tout est Américain sans aucune place pour les autres pays:
https://rust-lang.org/governance/

C'est une piste comme une autre on sait que les Américains ont des lois très strictes sur leur sécurité intérieure et aiment assez peu la décentralisation.

Bref à creuser
4  1 
Avatar de marsupial
Expert éminent https://www.developpez.com
Le 19/12/2025 à 11:49
Des livres librement téléchargeables existent sur le langage C et Java pour coder proprement publiés par le CERT américain. Ces livres datent d'il y a 10 ans environ pour le C qui n'a pas changé fondamentalement. Java par contre est encore en cours d'évolution et les livres dessus ne sont peut être pas à jour mais il y a du bon à reprendre.

En bref, aucun langage n'est sûr à 100%. Mais en l'étudiant et le maîtrisant (cela ne se fait pas par un tuto), n'importe qui peut coder sécurisé avec n'importe quel langage. Si Lockheed Martin a décidé de sucrer 90% des fonctionnalités du C++ pour le F35, ils ont certainement de très bonnes raisons. Rust n'existait pas à la conception de cet avion, donc logique de ne pas l'avoir utilisé. Le choix de C++ plutôt qu'un autre (le C par exemple), même en bannissant des fonctionnalités, a dû être murement réfléchi même si on peut avoir un doute quand on voit le choix du tactile pour les commandes de bord.

Maintenant, tout réécrire en Rust en transpilant me semble inenvisageable pour une raison bien simple : un hello world pas de problème, mais un programme de cockpit d'un avion de 5e génération demande quand même un peu d'ingénierie rédhibitoire car un gain faible, voire nul car déjà envisagé lors de la conception. Donc refaire à neuf parce que c'est nouveau est une raison un peu légère qui ne prend pas en compte le travail que cela représente.
3  1 
Avatar de Access_to_folder
Nouveau Candidat au Club https://www.developpez.com
Le 23/12/2025 à 6:32
Ada n'est pas conçu pour ces destinations ?
1  0 
Avatar de Christophe
Responsable Systèmes https://www.developpez.com
Le 23/12/2025 à 7:19
Ada n'est pas conçu pour ces destinations ?
Peut-être, mais c'est un langage sans visibilité. Qui ici le connait ou le pratique ? très peu de gens je suppose (dont moi).

Je dis ça sans connaitre la valeur de ce langage. Si il est très, il est en tout cas très peu utilisé.
0  0 
Avatar de Access_to_folder
Nouveau Candidat au Club https://www.developpez.com
Le 23/12/2025 à 11:00
C'est un langage exigent spécialement conçu pour les applications critiques, temps réel... initié par le DoD Americain. Une référence dans le milieu (militaire..), enseigné même en France à ma génération pour ceux qui étaient dans les spécialisations en temps réel, informatique embarquée... Le langage existe toujours (a évolué support orienté objet, vu que dans le cas présent, c'était du C++) et reste une référence dans le milieu de l'aviation, aérospatiale (même bancaire critique à une époque : la BNP autant que je me souvienne) : voir références sur : https://fr.wikipedia.org/wiki/Ada_(langage) .

Il est effectivement sans visibilité hors ces milieux, c'est très spécifique, je vous l'accorde.
0  0 
Avatar de Christophe
Responsable Systèmes https://www.developpez.com
Le 23/12/2025 à 17:22
Mais pourquoi a t'on créé Rust si Ada peut répondre au prob ?
0  0 
Avatar de Access_to_folder
Nouveau Candidat au Club https://www.developpez.com
Le 23/12/2025 à 18:01
Je n'ai pas étudié Rust alors pour ma part je pourrais vous répondre.
De mon époque, nous apprenions C,C++, et Ada, et les champs d'applications et surtout de recommandation de l'un ou de l'autre, étaient clairement énoncés, quand bien même de l'informatique embarquée puisse être réalisée en C, forcément.
0  0