Chandler Carruth, ingénieur logiciel principal de Google, a présenté Carbon cette semaine lors de la conférence C++ CPP Northà Toronto. Selon certains observateurs, « la nouvelle version de Carbon devrait être interopérable avec le populaire code C++, mais pour les utilisateurs qui souhaitent passer à la vitesse supérieure, la migration devrait être assez facile. » Pour ceux qui ne sont pas sûrs de vouloir changer complètement, Carruth a expliqué plus en détail certaines des raisons pour lesquelles Carbon devrait être considéré comme un successeur puissant du langage C++, notamment une grammaire plus simple et des importations d'API plus fluides.
Les ingénieurs de Google construisent déjà des outils pour traduire C++ en ce nouveau langage. Bien que Carbon ait commencé comme un projet interne de Google, l'équipe de développement souhaite réduire les contributions de Google, ou de toute autre entreprise, à moins de 50 % d'ici la fin de l'année. Les concepteurs veulent publier une version de base 0.1 d'ici la fin de l'année. Carbon sera construit sur une base de principes de programmation modernes, notamment un système générique, qui supprimerait la nécessité de vérifier et revérifier le code pour chaque instanciation.
La sécurité de la mémoire est une autre fonctionnalité indispensable qui fait défaut au C++. Les bogues d'accès à la mémoire sont l'une des principales causes d'exploitation de la sécurité. Les concepteurs de Carbon chercheront des moyens de mieux suivre les états non initialisés, de concevoir des API et des idiomes qui prennent en charge les vérifications dynamiques des limites et de créer un mode de construction de débogage par défaut complet. Les concepteurs prévoient de construire un sous-ensemble sûr de Carbon. Selon la documentation, le langage supportera :
- développement rapide et évolutif ;
- les logiciels à performances critiques ;
- l'évolution des logiciels et du langage ;
- un code facile à lire, à comprendre et à écrire ;
- des mécanismes de sécurité et de test pratiques ;
- plateformes OS modernes, architectures matérielles et environnements ;
- interopérabilité avec le code C++ existant et migration à partir de celui-ci.
Voici un code C++ traduit en Carbon. Tout d'abord, le code C++ :
Voici la même fonction écrite en carbone :
Carbon pourra mieux remplacer le C++ que Rust ?
Rust est un langage de programmation compilé multiparadigme, conçu par Graydon Hore alors employé chez Mozilla Research, avec la contribution du créateur de JavaScript Brendan Eich. Utilisé par plusieurs grandes entreprises et par de nombreux développeurs dans le monde, Rust est devenu le langage de base pour certaines des fonctionnalités fondamentales du navigateur Firefox et de son moteur Gecko, ainsi que pour le moteur Servo de Mozilla.
Microsoft
Microsoft fait partie des membres fondateurs de la fondation Rust et dit vouloir collaborer avec la communauté pour continuer à améliorer le langage. L’entreprise promet de fournir des outils, une bibliothèque pour le langage et des ressources d’apprentissage.
Selon Nell Shamrell Harrington, Ingénieur logiciel chez Microsoft et directeur du conseil d'administration de la Fondation Rust, les logiciels et les langages open source sont d'une importance capitale pour son entreprise et pour l'ensemble de l'industrie technologique.
En outre, Microsoft a récemment formé une équipe Rust pour contribuer aux efforts d'ingénierie de l'écosystème du langage. L’entreprise spécialisée dans le développement de logiciel prévoit de travailler avec la communauté Rust sur le compilateur, les outils de base, la documentation et bien plus.
Dans une annonce faite sur son blog ce 8 février, Google dit être ravie d’avoir rejoint la fondation Rust et se dispose pour travailler sur des questions comme l'interopérabilité avec C++. « S'appuyant sur les investissements de longue date de Google dans le C/C++ et les compilateurs et chaînes d'outils, nous sommes ravis d'annoncer notre adhésion à la fondation Rust », a annoncé Google sur son blog. « Nous sommes impatients de participer davantage à la communauté Rust, en particulier de travailler dans l'ensemble sur des questions importantes, notamment l'interopérabilité avec C++, la coordination des examens de sécurité, la réduction des coûts des mises à jour et de continuer à accroître nos investissements dans les projets Rust existants », a ajouté l'entreprise.
Selon Google, les défauts de sécurité de la mémoire menacent fréquemment la sécurité des appareils, en particulier pour les applications et les systèmes d'exploitation. Par exemple, sur le système d'exploitation mobile Android, Google dit avoir constaté que plus de la moitié des vulnérabilités de sécurité traitées en 2019 résultaient de bogues de sécurité de la mémoire. Et ce, malgré les efforts considérables déployés par l'entreprise et d'autres contributeurs au projet Open Source Android, pour investir ou inventer diverses technologies, notamment l'AddressSanitizer, des allocateurs de mémoire améliorés et de nombreux fuzzers et autres outils de vérification du code.
Amazon Web Service (AWS)
Amazon a pour sa part clairement reconnu qu’elle est principale bénéficiaire du langage Rust et des travaux de sa communauté. L'entreprise se dit heureuse de pouvoir participer aux futurs succès de Rust. Selon Shane Miller, responsable de l'équipe Rust chez AWS et également professeur d'université, la raison pour laquelle les ingénieurs choisissent Rust pour créer des services est que cela leur permet d'offrir aux clients des expériences qui répondent à leurs exigences de qualité et de sécurité beaucoup plus rapidement et à moindre coût.
AWS utilise Rust pour fournir des services tels qu'Amazon Simple Storage Service (Amazon S3), Amazon Elastic Compute Cloud (Amazon EC2), Amazon CloudFront, et plus encore. Récemment, l’entreprise a lancé Bottlerocket, un système d'exploitation basé sur Linux et écrit en Rust. L’équipe Amazon EC2 utilise le langage Rust pour développer les nouveaux composants du système Nitro d'AWS, y compris les applications sensibles, telles que les enclaves Nitro. Pour Shane Mille, en tant que membre fondateur de la Fondation Rust, l’entreprise se consacrera à l’un des objectifs de la fondation Rust qui consiste à donner aux responsables de Rust les moyens de faire joyeusement leur travail.
Pourquoi ne pas utiliser Rust ?
Longtemps, le langage de prédilection pour la création d'applications critiques en termes de performances, le C++ souffre d'un certain nombre de problèmes qui gênent les développeurs modernes, a expliqué Carruth. Il a accumulé des décennies de dettes techniques, entraînant avec lui de nombreuses pratiques dépassées qui faisaient partie du prédécesseur du langage, le C. Les gardiens du C++ donnent la priorité à la rétrocompatibilité, afin de continuer à soutenir des projets largement utilisés tels que Linux et son écosystème de gestion des paquets, explique Carruth.
L'évolution du langage est également entravée par un processus de comité bureaucratique, orienté vers la normalisation plutôt que la conception. Ce qui peut rendre difficile l'ajout de nouvelles fonctionnalités. Le C++ a largement un processus de développement séquestré, dans lequel un comité restreint prend les décisions importantes, dans un processus en cascade qui peut prendre des années.
La comparaison entre Rust et C++ reste un sujet d'actualité, car ces langages de programmation sont en concurrence dans des domaines comme le développement système et l'embarqué. Du point de vue technique, les deux langages partagent de nombreuses similitudes dans leur syntaxe. Cependant, Rust et C++ présentent des différences significatives.
C++ est un langage de programmation compilé permettant la programmation sous de multiples paradigmes, dont la programmation procédurale, la programmation orientée objet et la programmation générique. Ses bonnes performances, et sa compatibilité avec le C en font un des langages de programmation les plus utilisés dans les applications où la performance est critique.
En outre, c'est un langage polyvalent, ce qui signifie qu'il peut être utilisé dans presque tous les cas. Cependant, en raison de ses règles syntaxiques complexes et de son utilisation globalement difficile, il est principalement dominant dans les applications qui nécessitent une grande vitesse, la simultanéité et un examen plus approfondi du fonctionnement du matériel.
Toutefois, la sécurité de la mémoire est une autre fonctionnalité indispensable qui fait défaut au C++. Les bogues d'accès à la mémoire sont l'une des principales causes d'exploitation de la sécurité. Les concepteurs de Carbon chercheront des moyens de mieux suivre les états non initialisés, de concevoir des API et des idiomes qui prennent en charge les vérifications dynamiques des limites et de créer un mode de construction de débogage par défaut complet.
Pour certains analystes, le C++ possède des bases plus solides en ce qui concerne la communauté et les informations générales sur ses principes. En outre, par rapport au C++, Rust est un nouveau venu dans le monde de la programmation, et de nombreux développeurs hésitent à s'y intéresser.
La fin du C++ ?
De même que Microsoft a créé Typescript pour mettre à jour JavaScript et que Kotlin a été créé pour pallier les faiblesses de Java, Carbon pourrait servir de langage successeur à C++, un langage qui offre aux développeurs un point de départ facile vers un langage plus récent qui prend en compte les concepts de développement modernes tels que la sécurité de la mémoire et les génériques.
« La structure du comité est conçue pour assurer la représentation des nations et des entreprises, plutôt que de construire une équipe et une communauté inclusive et accueillante d'experts et de personnes contribuant activement au langage », écrit Carruth. « L'accès au comité et à la norme est restreint et coûteux, la présence est nécessaire pour avoir une voix, et les décisions sont prises par des votes des personnes présentes. »
Carruth veut construire Carbon par un environnement plus ouvert et dirigé par la communauté. Le projet sera maintenu sur GitHub, et discuté sur Discord. Bien que Carbon ait commencé comme un projet interne de Google, l'équipe de développement souhaite réduire les contributions de Google, ou de toute autre entreprise, à moins de 50 % d'ici la fin de l'année. Elle souhaite finalement confier le projet à une fondation logicielle indépendante, où son développement sera dirigé par des bénévoles.
Dans sa présentation à CPP North, Carruth a conseillé à ceux qui utilisent Rust de continuer à l'utiliser. Carbon est destiné aux développeurs qui disposent déjà de bases de code importantes en C++, difficiles à convertir en Rust. Carbon est spécifiquement ce que Carruth appelle un « langage successeur », qui est construit au-dessus d'un écosystème déjà existant, C++ dans ce cas.
« Il est conçu autour de l'interopérabilité avec C++ ainsi que de l'adoption et de la migration à grande échelle pour les bases de code et les développeurs C++ existants », expliquent les concepteurs. Cela signifie que le langage doit être aussi performant que C++, qu'il doit offrir une interopérabilité transparente et bidirectionnelle avec C++.
Source : Google
Et vous ?
Quel est votre avis sur le sujet ?
Google essaie-t-il de tuer le C++ ?
Pourquoi Carbon plutôt que le Rust pour améliorer les problèmes de sécurité et de mémoire en C++ ?
Selon vous, la fin du C++ est-elle envisageable ?
Voir aussi :
Microsoft, Google, AWS, Huawei et Mozilla s'associent pour créer la Fondation Rust, une organisation à but non lucratif chargée de gérer le langage de programmation
Le projet Carbon, un successeur expérimental du C++, explore une direction future possible pour le C++ étant donné les difficultés à l'améliorer et mise sur l'interopérabilité comme base de travail
C3 : un langage de programmation système basé sur le C, permet un accès sécurisé aux tableaux, les conteneurs de haut niveau et manipulation des chaînes de caractères