W celu zastąpienia czcigodnego, ale powolnego C++, badacze Google wprowadzili zupełnie nowy „eksperymentalny” język programowania open source o nazwie Carbon.
Carbon może służyć jako następca języka C++, który zapewnia programistom prosty punkt wyjścia do nowszego języka, który odnosi się do współczesnych koncepcji programistycznych, takich jak bezpieczeństwo pamięci i generyki.
Byłoby to podobne do tego, w jaki sposób Microsoft zbudował Typescript, aby zaktualizować JavaScript i Kotlin, aby wzmocnić słabości w Javie.
Na przestrzeni lat Google opracował wiele języków programowania, z których niektóre zyskały znaczny rozgłos i rozgłos.
Na przykład Golang (lub po prostu Go) został opracowany w celu ułatwienia tworzenia serwerów i systemów rozproszonych, a następnie został przyjęty przez ogół społeczeństwa.
Dart język programowania, który powstał jako substytut JavaScriptu, nie stał się dobrze znany do czasu premiery Fluttera.
Chandler Carruth, pracownik Google, zaprezentował swój pomysł na nowy język programowania o nazwie Carbon 19 lipca 2022 r. na konwencji Cpp North w Toronto, według Conora Hoekstra, którzy uczestniczyli i nagrywali slajdy.
Aby ustalić scenariusz, Carruth zademonstrował, że kilka najbardziej lubianych współczesnych języków programowania ma potomków, którzy umożliwiają programistom szybkie zwiększenie produktywności, a także czerpanie korzyści ze współczesnego projektowania języków.
Zacznijmy od ogólnego wprowadzenia języka programowania Carbon, w tym jego funkcji, celu wymyślenia go przez Google i nie tylko.
Wprowadzenie do języka programowania Carbon
19 lipca 2022 r. Google ujawnił Carbon jako najnowszy język programowania, który stworzył. Miał on na celu eksperymentalne zastąpienie C++.
Dzięki system generyczny, co eliminuje potrzebę podwójnego sprawdzania kodu dla każdej instancji, Carbon zostanie skonstruowany na podstawie nowoczesnych koncepcji programistycznych.
Do końca roku projekt planuje dostarczyć podstawową wersję operacyjną (wersja 0.1).
Integralność pamięci jest kluczowym elementem, którego brakuje C++. Jednym z głównych źródeł luk w zabezpieczeniach są problemy z dostępem do pamięci.
Rozwój dynamicznych kontroli granic, lepsze śledzenie niezainicjowanych stanów i dokładny domyślny tryb budowania debugowania to cele zespołu Carbon. Twórcy zamierzają z czasem stworzyć bezpieczny podzbiór Carbon.
Oto kilka kluczowych cech nowego języka programowania:
- Aby nazwać typy, użyj wyrażeń.
- Silne generyki z kontrolą definicji
- Typy specjalnie wykonują interfejsy
- zwroty wprowadzające i podstawowa gramatyka
- Wskaźniki pozwalają na nieograniczony dostęp i mutację.
- Wartości parametrów wejściowych funkcji są tylko do odczytu.
- Główna przestrzeń nazw to pakiet.
- Interfejsy API można importować przy użyciu ich nazw pakietów.
- Metoda jest deklarowana za pomocą jawnego parametru obiektu.
- Klasy są domyślnie ostateczne; jest tylko jedno dziedzictwo
Cechy węgla
Nowoczesna i rozwijająca się
- Aktualizacje pomiędzy wersjami Carbon są proste i oparte na narzędziach.
- Mocne podstawy językowe, zwłaszcza jeśli używałeś C++ i proste do nauczenia
- Bezpieczniejsze podstawy i podejście krok po kroku do bezpiecznego podzbioru pamięci
Powitanie społeczności open source
- Społeczność, która stara się być ciepła, akceptująca i zapraszająca
- Jej cele i priorytety są wyraźne i silne rządzenie
- Kompleksowa strategia z kompilatorem, bibliotekami, dokumentacją, narzędziami, zarządzaniem pakietami i nie tylko
Szybki i kompatybilny z C++
- Współpracuj z Kod C ++ które już masz, w tym dziedziczenie i szablony
- Dzięki LLVM wydajność porównywalna z C++ i niskopoziomowy dostęp do bitów i adresów
- Kompilacje, które są szybkie i skalowalne oraz kompatybilne z istniejącymi systemami kompilacji C++
Dlaczego Google zbudował język programowania Carbon?
Oprogramowanie krytyczne dla wydajności jest nadal pisane głównie w języku C++, który ma ogromne i rozszerzające się bazy kodu i inwestycje.
Ma jednak problemy z rozwijaniem się i sprostaniem wymienionym powyżej wymaganiom deweloperów, głównie z powodu narastania wieloletniego zadłużenia technologicznego.
Niezwykle trudno jest stopniowo ulepszać C++ z powodu narosłego długu technicznego oraz trudności w procesie jego ewolucji.
Idealnym podejściem do rozwiązania tych problemów jest rozpoczęcie od silnych podstaw językowych, takich jak współczesny system generyczny, modułowa struktura kodu i spójna, prosta składnia, zamiast bezpośredniego dziedziczenia tradycji C lub C++.
Go, Swift, Kotlin, Rust i wiele innych współczesnych języków oferuje już wyjątkowe wrażenia programistyczne. Deweloperzy, którzy potrafią używać jednego z tych obecnych języków, powinni to zrobić.
Niestety, adaptacja i migracja z C++ są poważnie utrudnione przez projekty tych języków. Przeszkody te obejmują narzut wydajności i modyfikacje idiomatycznego projektu oprogramowania.
Carbon nie jest próbą stopniowego ulepszania C++; jest raczej następcą strategii językowej. Koncentruje się na interoperacyjności C++, a także na powszechnej akceptacji i migracji dla programistów i baz kodu, które obecnie używają C++.
Język zastępczy C++ musi mieć:
- Wydajność porównywalna z C++ jest kluczową cechą deweloperów.
- Łatwa do opanowania krzywa uczenia się i poziom znajomości dla programistów C++
- Migracja, która jest skalowalna i obejmuje niektóre idiomatyczne tłumaczenie kodu C++ ze źródła do źródła.
- Podobna ekspresja i wsparcie dla architektury i projektowania obecnego oprogramowania.
- Interoperacyjność z C++, która jest płynna i dwukierunkowa, pozwalając każdej bibliotece na przyjęcie Carbon bez konieczności przenoszenia reszty stosu.
Dzięki tej strategii Google powiększa ekosystem, który już istnieje dla C++ i uwzględnia bieżące inwestycje, bazy kodu i społeczności programistów.
Kilka języków przyjęło to podejście dla różnych ekosystemów, a Carbon stara się pełnić funkcję podobną do C++ w następujących sytuacjach:
- Jawa – Kotlin
- JavaScript – TypeScript
- C++ – węgiel
Kod węglowy C++ VS
Carbon powinien mieć niską krzywą uczenia się, jeśli jesteś już programistą C++. Składa się z ustalonego zestawu konstrukcji gramatycznych, które powinny brzmieć naturalnie i być łatwe do odczytania i zrozumienia.
Przykład kodu C++:
Ten kod węgla odpowiada:
Węgiel kontra rdza
Innym współczesnym językiem zaprojektowanym specjalnie w celu spełnienia wymagań aplikacji zapewniających wydajność bezpieczną w pamięci jest Rust.
Dlaczego więc po prostu nie użyć Rusta?
Podczas gdy niektórzy twierdzą, że Rust, który rozpoczął się jako projekt Mozilli, a następnie zyskał sporą publiczność, jest następcą C++, Carruth wątpi, czy analogia jest nadal aktualna.
Rust jest niewątpliwie fantastycznym językiem, z którym można rozpocząć nowy projekt, ale ponieważ brakuje mu „dwukierunkowej interoperacyjności” języków takich jak Java i Kotlin, stopniowe przejście do niego jest trudne.
Carruth wygłosił wykład w CPP North i zachęcił ludzi, którzy już korzystali z Rust, do kontynuowania tego. Deweloperzy, którzy mają już pokaźne bazy kodu C++, które trudno przekonwertować na Rust, powinni używać Carbon.
W szczególności Carbon jest tym, co Carruth określił jako „język następcy”, który jest zbudowany na istniejącym ekosystemie, w tym przypadku C++.
W tym celu Carbon ma być całkowicie kompatybilny z obecnym kodem C++, nawet jeśli ma wiele celów z Rustem, takich jak pomoc programistom w tworzeniu „aplikacji o krytycznym znaczeniu”.
Ponadto ma na celu maksymalne uproszczenie przejścia z C++ na Carbon.
Wnioski
Wreszcie twórcy języka Carbon podjęli wysiłek zwrócenia uwagi na proces tworzenia. Kod projektu jest dostępny na żądanie i przechowywany w sposób otwarty Github, a jego kultura jest definiowana jako integracyjna i otwarta zarówno dla obywateli prywatnych, jak i sektora IT.
Zespół Carbon uważał, że Carbon musi być autonomicznym projektem prowadzonym przez społeczność, a nie tylko projektem napędzanym przez Google, aby móc rozwijać się w przyszłości.
Caruth dodał, że pomimo zainteresowania ze strony wielu firm IT, koncepcja ta jest wciąż w fazie eksperymentalnej.
Dodaj komentarz