В опит да заменят почтения, но муден C++, изследователите на Google представиха чисто нов „експериментален“ език за програмиране с отворен код, наречен Carbon.
Carbon може да служи като език-приемник на C++, такъв, който предоставя проста отправна точка за разработчиците към по-нов език, който се занимава със съвременни концепции за разработка като безопасност на паметта и генерични продукти.
Това би било подобно на начина, по който Microsoft създаде Typescript, за да актуализира JavaScript и Kotlin, за да засили слабостите в Java.
Google разработи редица езици за програмиране през годините, някои от които придобиха значителна известност и известност.
Например Golang (или просто Go) е разработен, за да улесни създаването на сървъри и разпределени системи и впоследствие е възприет от широката публика.
Дартсът програмен език, който беше създаден като заместител на JavaScript, не стана добре известен до стартирането на Flutter.
Чандлър Карът, служител на Google, представи идеята си за нов език за програмиране, наречен Carbon, на 19 юли 2022 г. на конгреса Cpp North в Торонто, според Conor Hoekstra, които присъстваха и записаха слайдовете.
За да настрои сценария, Carruth демонстрира как няколко от най-харесваните езици за програмиране на днешния ден имат наследници, които позволяват на разработчиците бързо да бъдат продуктивни и също така да се възползват от съвременния езиков дизайн.
Нека започнем с общо представяне на езика за програмиране Carbon, включително неговите характеристики, целта на изобретяването му от Google и други.
Въведение в езика за програмиране Carbon
На 19 юли 2022 г. Google разкри Carbon като най-новия език за програмиране, който е създал. Той беше предназначен да замени C++ експериментално.
Благодарение на генерична система, което елиминира необходимостта от двойна проверка на кода за всяко инстанциране, Carbon ще бъде изграден на базата на модерни концепции за програмиране.
До края на годината дизайнът планира да предостави основна оперативна версия (версия 0.1).
Целостта на паметта е ключов елемент, който липсва в C++. Един от основните източници на пропуски в сигурността са проблемите с достъпа до паметта.
Разработването на динамични проверки на границите, по-добро проследяване на неинициализирани състояния и задълбочен режим на изграждане на отстраняване на грешки по подразбиране са всички цели на екипа на Carbon. Създателите възнамеряват да създадат сигурно въглеродно подмножество с течение на времето.
Следват обаче някои важни характеристики на новия език за програмиране:
- За да наименувате типове, използвайте изрази.
- Силни генерични продукти с проверки на дефиниции
- Типовете конкретно изпълняват интерфейси
- въвеждащи фрази и основна граматика
- Указателите позволяват неограничен достъп и мутация.
- Стойностите за входните параметри на функцията са само за четене.
- Основното пространство от имена е пакетът.
- API могат да бъдат импортирани, като се използват техните имена на пакети.
- Методът се декларира чрез изричен обектен параметър.
- Класовете са окончателни по подразбиране; има само едно наследство
Характеристики на въглерода
Модерен и развиващ се
- Надстройките между версиите на Carbon са прости и базирани на инструменти.
- Силни езикови основи, особено ако сте използвали C++, и лесен за научаване
- По-безопасни основи и поетапен подход към безопасно за паметта подмножество
Приветстваме общността на отворения код
- Общност, която се стреми да бъде топла, приемаща и приветлива
- Нейните цели и приоритети са ясно изразено и силно управление
- Стратегия „всичко в едно“ с компилатор, библиотеки, документация, инструменти, управление на пакети и др
Бърз и съвместим с C++
- Работете заедно с C ++ код вече имате, включително наследяване и шаблони
- С LLVM, производителност, сравнима с C++ и достъп на ниско ниво до битове и адреси
- Компилации, които са бързи и мащабируеми и съвместими с вашите съществуващи системи за компилиране на C++
Защо Google създаде езика за програмиране Carbon?
Критичният за производителността софтуер продължава да се пише предимно на C++, който има огромни и разширяващи се кодови бази и инвестиции.
Въпреки това, той има проблеми с напредването и посрещането на изискванията на разработчиците, както беше споменато по-горе, до голяма степен поради натрупването на дългогодишен технологичен дълг.
Изключително трудно е да се подобри постепенно C++ поради техническия дълг, който е натрупал, както и поради трудностите с процеса на неговото развитие.
Идеалният подход за решаване на тези проблеми е да се започне със силна езикова основа, като съвременна генерична система, модулна структура на кода и последователен, ясен синтаксис, вместо директно наследяване на традицията на C или C++.
Go, Swift, Kotlin, Rust и много други съвременни езици вече предлагат изключителен опит за разработка. Разработчиците, които могат да използват един от тези текущи езици, трябва да го направят.
За съжаление, приемането и миграцията от C++ са силно възпрепятствани от дизайна на тези езици. Тези пречки включват режийни разходи за производителност и модификации на идиоматичния дизайн на софтуера.
Carbon не е опит за постепенно подобряване на C++; по-скоро това е наследник на езикова стратегия. Неговият фокус е върху оперативната съвместимост на C++, както и върху широкото приемане и миграция за разработчици и кодови бази, които в момента използват C++.
Заместващият език C++ трябва да има:
- Производителността, сравнима с C++, е решаваща характеристика за разработчиците.
- Управляема крива на обучение и ниво на познаване на C++ програмистите
- Миграция, която е мащабируема и включва някакъв превод на идиоматичен C++ код от източник към източник.
- Подобна експресивност и поддръжка за архитектурата и дизайна на текущия софтуер.
- Оперативна съвместимост с C++, която е безпроблемна и двупосочна, позволяваща на всяка библиотека да приеме Carbon, без да се налага да пренася останалата част от стека.
С тази стратегия Google добавя към екосистемата, която вече съществува за C++, и включва текущи инвестиции, кодови бази и общности за разработка.
Няколко езика са възприели този подход за различни екосистеми и Carbon се стреми да играе подобна функция на C++ в тези ситуации:
- Java – Kotlin
- JavaScript – TypeScript
- C++ – Carbon
C++ VS въглероден код
Carbon трябва да има ниска крива на обучение, ако вече сте C++ разработчик. Съставен е от фиксиран набор от граматически конструкции, които трябва да звучат естествено и да са лесни за четене и разбиране.
Пример за C++ код:
Този въглероден код съответства на:
Въглерод срещу ръжда
Друг съвременен език, предназначен изрично да отговаря на изискванията на приложенията за безопасна производителност на паметта, се нарича Rust.
Така че защо просто не използвате Rust?
Докато някои твърдят, че Rust, който започна като проект на Mozilla и впоследствие се разрасна до значителна публика, е наследник на C++, Carruth се съмнява дали паралелът все още е валиден.
Rust несъмнено е фантастичен език, с който да започнете нов проект, но тъй като му липсва „двупосочната оперативна съвместимост“ на езици като Java и Kotlin, е предизвикателство да се премине към него постепенно.
Carruth изнесе лекция в CPP North и насърчи хората, които вече използват Rust, да продължат да го правят. Разработчиците, които вече имат значителни C++ кодови бази, които са предизвикателни за конвертиране в Rust, трябва да използват Carbon.
По-специално, Carbon е това, което Carruth нарича „език-наследник“, който е изграден върху съществуваща екосистема, в този случай C++.
За тази цел Carbon е предназначен да бъде напълно съвместим с текущия C++ код, дори ако има много цели с Rust, като например подпомагане на програмистите при създаването на „приложения, критични за производителността“.
Освен това има за цел да направи преминаването от C++ към Carbon възможно най-лесно.
Заключение
И накрая, създателите на езика Carbon се постараха да обърнат внимание на процеса на създаване. Кодът на проекта е достъпен за заявка и се съхранява открито на Github, а културата му се определя като приобщаваща и отворена както за частни граждани, така и за ИТ сектора.
Екипът на Carbon смяташе, че Carbon трябва да бъде автономен проект, ръководен от общността, а не само проект, захранван от Google, за да се развива в бъдеще.
Карут добави, че въпреки интереса от редица ИТ бизнеси, тази концепция все още е в експериментален етап.
Оставете коментар