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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation système Discussion :

« Les avions F-35 bannissent 90 % des fonctionnalités du C++ pour obtenir un code sûr », selon une Googler


Sujet :

Programmation système

  1. #1
    Chroniqueur Actualités
    Avatar de Patrick Ruiz
    Homme Profil pro
    Redacteur web
    Inscrit en
    Février 2017
    Messages
    2 356
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Redacteur web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2017
    Messages : 2 356
    Par défaut « Les avions F-35 bannissent 90 % des fonctionnalités du C++ pour obtenir un code sûr », selon une Googler
    « 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
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre éprouvé
    Avatar de calvaire
    Homme Profil pro
    .
    Inscrit en
    Octobre 2019
    Messages
    2 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Singapour

    Informations professionnelles :
    Activité : .
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2019
    Messages : 2 300
    Par défaut
    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)
    La France est un pays qui redistribue tout sauf de l'espoir.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2025
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2025
    Messages : 38
    Par défaut
    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. #4
    Invité
    Invité(e)
    Par défaut
    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.

  5. #5
    Membre éprouvé
    Profil pro
    programmeur du dimanche
    Inscrit en
    Novembre 2003
    Messages
    1 073
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : programmeur du dimanche
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 073
    Par défaut
    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.

  6. #6
    Invité de passage
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2025
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2025
    Messages : 99
    Par défaut
    Ada n'est pas conçu pour ces destinations ?

  7. #7
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 465
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 465
    Par défaut
    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é.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  8. #8
    Invité de passage
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2025
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2025
    Messages : 99
    Par défaut
    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.

  9. #9
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 465
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 465
    Par défaut
    Mais pourquoi a t'on créé Rust si Ada peut répondre au prob ?
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  10. #10
    Invité de passage
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2025
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2025
    Messages : 99
    Par défaut
    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.

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/05/2024, 21h02
  2. Réponses: 1
    Dernier message: 27/04/2023, 14h53
  3. Réponses: 1
    Dernier message: 26/02/2021, 13h09
  4. Réponses: 13
    Dernier message: 29/11/2011, 15h21
  5. Réponses: 0
    Dernier message: 22/11/2011, 08h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo