Что такое Carbon?

Что такое 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, а вы можете смело добавлять строчку в резюме после прочтения этой статьи.