Inżynierowie pracujący w Google właśnie dokonali rewolucyjnego eksperymentu, wypuszczając na rynek język Carbon, który ma być godnym następcą C++. Chandler Carruth przedstawił w tym tygodniu na konferencji CPP North w Toronto wady języka C++, które spowodowały, że inżynierowie Google pracowali nad nowocześniejszą wersją tego języka programowania. Czy Google Carbon rzeczywiście odniesie taki sukces, jak zapowiada Carruth?
W artykule przedstawiono następujące zagadnienia:
- Problemy C++
- Modyfikowany węgiel, czyli nowoczesny Carbon
Problemy C++
C++, który był rozwijany przez dziesięciolecia, zdążył już wnieść ze sobą wiele praktyk, które obecnie stały się przestarzałe – mowa tutaj o tych, które były częścią języka C. Ponieważ każdą nową funkcję C++ musi zatwierdzić specjalnie powołany komitet, jego aktualizacje opóźniają się, przez co ewolucja C++ także zwalnia. Z tego powodu powstaje wiele sytuacji, w których nie można użyć C++ właśnie ze względu na jego niekompatybilność z najnowocześniejszymi rozwiązaniami technicznymi.
Rust, o którym mówiono, że ma zastąpić C++ nie zdał egzaminu, jeśli chodzi o swobodną dwukierunkową interoperacyjność, którą inne narzędzia, co tworzy pewną barierę językową podczas prób przekładania kodu z Rust na inne języki programowania. Kolejnym problemem z językiem C++ jest bezpieczeństwo pamięci. Błędu dostępu do pamięci kodu pisanego w C++ tworzą luki w zabezpieczeniach, powodując, że projekt staje się narażony na cyberataki.
Modyfikowany węgiel, czyli nowoczesny Carbon
Odpowiedzią na problemy z językiem C++ ma być Carbon, który Chandler Carruth chce rozwijać dzięki wsparciu społeczności na GitHubie i Discordzie. Początkowo miał być wewnętrznym projektem firmy Google, ostatecznie prognozy są takie, by zmniejszyć wkład Google lub innej firmy zaangażowanej w rozwój tego języka do 50% w terminie do końca 2022 r., a docelowo projekt zostanie przekazany niezależnej fundacji programistycznej.
Carbon ma zostać dostosowany do nowoczesnych zasad projektowania kodu, w tym ma posiadać wbudowany system generyczny, który zlikwiduje konieczność podwójnego sprawdzania kodu. Społeczność rozwijająca projekt Carbon będzie szukała sposobów na rozwiązanie problemów z bezpieczeństwem, które występowały w C++, tj. opracują lepsze śledzenie niezainicjowanych stanów, projektowych interfejsów API, czy idiomów, które mogą obsługiwać dynamiczne sprawdzanie granic. W planach jest również zaprojektowanie kompleksowej kompilacji debugowania.
Carbon ma mieć prostszą składnię niż język C++ oraz ma umożliwić szybką i bezproblemową migrację użytkownikom, którzy będą chcieli przenieść swoje projekty z języka C++ na Carbon, dzięki wbudowanej interoperacyjności z C++.
Wsparcie języka Carbon obejmuje:
-
stworzenie oprogramowania krytycznego dla wydajności;
- ciągłą, swobodną ewolucję języka;
- łatwy do odczytania, zrozumienia i napisania kod;
- szybki i skalowalny rozwój języka;
- usprawnione mechanizmy bezpieczeństwa;
- nowoczesne platformy systemu operacyjnego, tj. architektury sprzętu i środowisko;
- wbudowany menedżera pakietów, czego obecnie brakuje w języku C++.
Obecnie Carbon jest w eksperymentalnej fazie projektu. Możesz pobrać jego kod źródłowy lub pobawić się z jego możliwościami za pomocą aplikacji Compiler Explorer w przeglądarce internetowej. Wersja Carbon 0.1 ma zostać opracowana i wydana do końca roku, ale to przyszłość pokaże, czy rzeczywiście w tak szumnie zapowiadanym języku od Google’a tkwi potencjał na zastąpienie nim C++.