Что такое Carbon?
Carbon - это экспериментальный язык программирования, созданный стать преемником C++, должен достичь его производительности, но при этом не будет тянуть за собой десятилетия требований обратной совместимости.
Зачем?
Из JavaScript родился TypeScript, из Objective-C вышел Swift, из Java - Kotlin, но что дальше для C++?
Многие (и я среди них 😏), сказали бы - Rust. И Rust хорош, но если у вас есть огромная кодовая база на C++, плюс вся экосистема вокруг него, то переписать всё на Rust просто так не получится. Не говоря уже о разработчиках, которым нужно будет переучиваться практически с нуля.
Почему бы тогда не взять C++, посыпать его синтаксическим сахаром, добавить качество жизни и на этом закончить? Сам C++ так и родился, сделав это с C и став его надмножеством. Вот некоторые цели, которые преследовали разработчики C++:
- Строить язык на основе существующей экосистемы
- Упростить кривую обучения
- Создать язык для написания ПО, где критически важна производительность
Проблема в том, что C++ необходимо поддерживать полную обратную совместимость с C, а это тянет за собой горы устаревших требований, которые берут своё начало где-то в 1989 году, а с тех пор разработка ПО прошла огромный путь.
textoral preprocexsing? interpromition promotion bizzare operator overload rules
Поэтому разработчики Carbon решили пойти скорее по пути Kotlin - сделать язык максимально похожим на своего прародителя, но при этом без наследования его болячек. Они преследуют те же цели, что и разработчики C++ в своё время, но добавляют несколько важных пунктов:
- Строить язык на основе существующей экосистемы
- Упростить кривую обучения
- Создать язык для написания ПО, где критически важна производительность
- Потенциал для развития софта и языка
- Код, который легко читать, понимать и писать
- Быстрая и масштабируемая разработка
- Двустороннее взаимодействие между кодом на C++ и Carbon
- Инструменты для миграции существующего C++ кода
Hello world
Hello world на C++:
#include <iostream>
int main() {
std::cout << "Hello World!";
return 0;
}
Hello World на Carbon:
fn Main() -> i32 {
Print("Hello World!");
return 0;
}
Свежо! Революционных подход.
Выводы
Carbon - это экспериментальный язык и он не готов ни то что для продакшена, а даже для разработки, даже компилятора или тулчейнов ещё нет.
C++ никуда не денется, но если разработчики Carbon достигнут своих целей, то C++ может стать следующим KOBOL‘ом.
На рынке уже есть вакансии с требованием 15-летнего опыта работы с Carbon, а вы можете смело добавлять строчку в резюме после прочтения этой статьи.