Если вы любите C++, то вот вам свежая новость!
Разработчики Google выпустили совершенно новый «экспериментальный» язык с открытым исходным кодом под названием Carbon.
Более подробную статью вы можете прочитать на Medium.
В противном случае, ниже вы найдете краткое изложение.
Преемник C++
Carbon может стать преемником языка C++.
Он предоставляет разработчикам простую отправную точку для перехода на более новый язык, который учитывает современные концепции разработки, такие как безопасность памяти и дженерики.
Условное обозначение является обязательным, поскольку в самой документации говорится, что Carbon является «экспериментальным преемником C++».
Если вы предпочитаете посмотреть видео и прочитать материал, который я использовал, вот несколько ссылок:
- посмотрите 1,5-часовое видео на YouTube,
- прочитать документацию на GitHub
Что обещает Carbon?
Начиная с трудностей, возникших при работе с C++, Carbon использует другой подход.
Язык
Carbon хочет начать с нуля, включая:
- современную систему дженериков,
- модульную организацию кода,
- простой синтаксис.
Carbon хочет быть «языком-преемником […], а не попыткой постепенного развития C++», carbon-lang.
По этой причине он отказался от прозрачной обратной совместимости, оставаясь при этом совместимым с C++ и переносимым из него.
Управление
Carbon стремится быть более инклюзивным путем:
- опираясь на принципы, процессы и инструменты открытого исходного кода.
- вносить свой вклад проще и прозрачнее.
- иметь четкую структуру управления, способную быстро принимать решения в случае необходимости.
- расширения экосистемы за счет инструментов, обеспечивающих богатый опыт разработчика (компилятор, стандартная библиотека, инструменты IDE), и обновления на основе инструментов.
- устранение пробела в экосистеме C++ с помощью встроенного менеджера пакетов.
Примеры и демонстрация Carbon
Ниже вы можете увидеть фрагмент из примера кода на GitHub, с некоторыми простыми комментариями с моей стороны.
// Carbon:
package Geometry api; // local namespace
import Math; // library import
class Circle {
var r: f32;
}
fn PrintTotalArea(circles: Slice(Circle)) {
var area: f32 = 0;
for (c: Circle in circles) {
area += Math.Pi * c.r * c.r;
}
Print("Total area: {0}", area);
}
Проводник Carbon
Хотите попробовать?
Carbon Explorer — это «прототип демонстрационного интерпретатора, который может как запускать изолированные примеры, так и проводить детальный анализ конкретной семантической модели и абстрактной машины Carbon».
Вот ссылка на Carbon Explorer.
Если вы хотите узнать больше о том, почему C++, Rust и других языков недостаточно, прочитайте более подробную статью на Medium.
Настроения разработчиков
Здесь собраны настроения разработчиков, посты, твиты, комментарии и т.д.
- Разработчики, похоже, в основном оптимистично настроены по отношению к Carbon
- Большинству нравится функциональная совместимость с C++
- Существует некоторый скептицизм по поводу того, что Carbon заменит C++. Некоторые утверждают, что Carbon преуспеет в определенной нише, но не получит широкого распространения.
- Неизменяемые объявления отложены в let, что может смутить разработчиков, пришедших из JavaScript. Тем не менее, для разработчиков, пришедших из Swift, это не составит труда.
- Публичные члены по умолчанию кажутся спорными. Аргументация выглядит так: поскольку вы в основном будете читать публичные функции в своем API, имеет смысл их раскрыть.
- Сторонникам Rust было сказано: «Если Rust работает для вас сегодня, вы должны использовать его. Но перевести экосистему C++ на Rust сложно».
Выводы
Эта статья хочет стать обзором языка Carbon.
Пока еще очень рано судить, и я не в том положении, чтобы делать это. Тем не менее, очень интересно видеть, как новый проект начинает с нуля и делает первые шаги.
Если вы заинтересованы, вы можете внести свой вклад и стать частью чего-то, что через несколько лет может стать очень большим.
Каковы ваши мысли?
Вы оптимистично или скептически относитесь к Carbon?