Frustrés par la lente évolution du C++, les ingénieurs de Google ont lancé un nouveau langage de programmation open source « expérimental », appelé Carbon, comme successeur possible du Vénérable mais vieillissant C++.
Tout comme Microsoft construit Tapezscript pour mettre à jour JavaScript, et Kotlin a été créé pour renforcer les faiblesses de Java, Carbon pourrait servir de une langue successeur à C ++, qui offre un point de départ facile pour les développeurs vers un langage plus récent qui aborde les concepts de développement modernes tels que la sécurité de la mémoire et les génériques.
Ingénieur Google Chandler Carruth a présenté la langue cette semaine à le RPC Nord Conférence C++ à Toronto.
Wither C++
Longtemps le langage de choix pour la création d’applications critiques en termes de performances, C++ est en proie à un certain nombre de problèmes qui entravent les développeurs modernes, Carruth expliqué sur une page GitHub. Il a accumulé des décennies de dette technique, apportant avec lui de nombreuses pratiques obsolètes qui faisaient partie du prédécesseur des langages, C. Les gardiens du C++ privilégient la rétrocompatibilité, afin de continuer à soutenir des projets largement utilisés tels que Linux et son écosystème de gestion de paquets, a accusé 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. C++ a en grande partie 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 structure des comités est conçue pour assurer la représentation des nations et des entreprises, plutôt que de construire une équipe et une communauté inclusives et accueillantes d’experts et de personnes contribuant activement à la langue », a é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 en direct des personnes présentes. »
Carruth veut construire Carbon par un plus ouvert environnement dirigé par la communauté. Le projet sera maintenu le GitHub (en anglais), et discuté le Discorde.
Alors que Carbon a commencé comme un projet interne à Google, l’équipe de développement veut finalement réduire les contributions de Google, ou de toute autre entreprise, à moins de 50% d’ici la fin de l’année. En fin de compte, ils veulent confier le projet à une fondation logicielle indépendante, où son développement sera dirigé par des bénévoles.
Mises à jour en direct de @chandlerc1024Est @CppNorth Keynote 2022! 1/ 🧵 pic.twitter.com/N6ll6esoIH
— Conor Hoekstra (@code_report) juillet 19, 2022
Qu’y a-t-il dans la boîte?
Le design veut publier une version de travail de base (« 0.1 ») d’ici la fin de l’année. Carbon sera construit sur une base sur des principes de programmation modernes, y compris un système génériques, ce qui éliminerait le besoin de vérifier et de revérifier le code pour chaque instanciation.
Une autre fonctionnalité indispensable manquant en C ++ est la sécurité de la mémoire. Les bogues d’accès à la mémoire sont l’un des plus grands coupables des exploits de sécurité. Les concepteurs de carbone chercheront des moyens de mieux suivre les états non initialisés, de concevoir des API et des idiomes qui prennent en charge les contrôles de limites dynamiques et de créer un mode de génération de débogage par défaut complet. Au fil du temps, les concepteurs prévoient de construire un sous-ensemble de carbone sûr.
Selon la documentation, la langue prendra en charge :
- Logiciels critiques pour les performances
- Évolution des logiciels et des langues
- Code facile à lire, à comprendre et à écrire
- Mécanismes pratiques de sécurité et d’essai
- Développement rapide et évolutif
- Plates-formes de système d’exploitation, architectures matérielles et environnements modernes
- Interopérabilité et migration à partir du code C++ existant.
L’équipe de développement entreprendra également de créer un gestionnaire de paquets intégré, ce qui manque cruellement à C++.
Voici du code C++ traduit en Carbone. Tout d’abord, le code C++ :
Voici la même fonction écrite en Carbone :
L’équipe de développement prévoit d’écrire des outils de traduction pour migrer le code C++ vers le code Carbon.
Pourquoi ne pas rouiller alors?
Rouille était un autre langage récent construit spécifiquement pour aborder les besoins des applications de performances sécurisées pour la mémoire. Alors pourquoi ne pas simplement utiliser Rust alors? Dans sa présentation au RPC Nord, Carrue a conseillé à ceux qui utilisent Rust de continuer à l’utiliser. Carbon est destiné aux développeurs qui ont déjà de grandes bases de code en C ++, qui sont difficiles à convertir en Rust. Carbon est spécifiquement ce que Carruth a appelé un « langage successeur », qui est construit sur 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 », explique la documentation. Cela signifie que le langage doit être aussi performant que C++, qu’il doit fournir de manière transparente et offrir une interopérabilité bidirectionnelle avec C++.
Google #Carbon le langage de programmation me rappelle l’approche adoptée par Apple à partir de #ObjC À #Swift. D’après mon expérience, c’était une très bonne approche. Cela a rendu le portage du code Objective-C sur Swift beaucoup plus facile, car vous n’avez jamais eu à faire un port complet.https://t.co/dQK5wV0J0B
— Erik Engheim (@erikengheim) juillet 20, 2022