Несколько дней назад сотрудник Google раскрыл который разрабатывает новый язык программирования под названием «Каменный уголь», что позиционируется как экспериментальная замена C++, расширяя этот язык и устраняя существующие недостатки.
Согласно презентации Каррута, язык был разработан для создания программного обеспечения, где производительность имеет решающее значение. Они также хотели предоставить разработчикам возможность использовать современные языки программирования с помощью Carbon.
Некоторые из вещей, отмеченных как основные моменты Carbon по сравнению с C++, были, например, более простой синтаксис и импорт API. По словам Каррута, этот новый экспериментальный язык должен быть двунаправленно совместим с C++, а это означает, что проекты должны иметь возможность без особых трудностей переходить с одного языка на другой.
Кроме того, целью является дальнейшее развитие языка открытым способом в Интернете, где любой желающий может внести свой исходный код. Проект находится в открытом доступе на Github. и открыт для запросы на вытягивание.
Язык поддерживает базовую переносимость C++., может интегрироваться с существующим кодом C++ и предоставляет инструменты для упрощения переноса существующих проектов за счет автоматического перевода библиотек C++ в углеродный код.
Например, вы можете переписать определенную библиотеку на Carbon и использовать ее в существующем проекте C++. Компилятор Carbon написан с использованием сборок LLVM и Clang.
Из основных характеристик Carbon, выделяются следующие:
- Производительность полученного кода сравнима с C++, при сохранении возможности доступа к низкоуровневым адресам и битовым данным.
- Переносимость с существующим кодом C++, включая наследование классов и шаблоны.
- Быстрая компиляция и возможность интеграции с существующими системами сборки для C++.
- Упростите миграцию между различными версиями Carbon.
- Предоставляет безопасные для памяти инструменты, защищающие от уязвимостей, вызванных обращением к области памяти после ее освобождения, разыменованием нулевых указателей и переполнением буфера.
Конечно, у нас есть Rust как предложенная альтернатива C и C++, но это не совсем язык расширения, это скорее полноценный язык, давайте начнем сначала. Carbon пытается быть похожим на Rust, сохраняя при этом совместимость с миром C++. Ну, на его странице Github написано:
- Сопоставление производительности C++ с использованием LLVM с низкоуровневым доступом к битам и адресам
- Взаимодействуйте с существующим кодом C++, от наследования до шаблонов.
- Быстрые, масштабируемые сборки, совместимые с вашими существующими системами сборки C++.
Утверждается, что углерод необходим, потому что постепенное улучшение C++ просто невозможно из-за исторического багажа, от которого он просто не может избавиться. Лично я бы пошел еще дальше и предположил, что постепенные «улучшения» в C++ являются частью причины, по которой на практике этот язык является таким большим.
«Всегда появляются новые языки, пытающиеся стать преемниками C++. Я приветствую эксперименты с языками программирования и стилями программирования, но очень не хочу разжигать споры. Легко критиковать устоявшиеся языки (мы знаем их проблемы), но обычно трудно предлагать альтернативы, не создавая совершенно новых наборов проблем в языковых правилах, библиотеках и управлении. Углерод настолько нов и недостаточно определен, что я не могу делать какие-либо содержательные технические комментарии», — написал в электронном письме изобретатель C++ Бьерн Страуструп.
Хотя Carbon начинался как внутренний проект Google, команда разработчиков в конечном итоге хочет сократить вклад Google или любой другой отдельной компании до менее чем 50% к концу года. В конечном итоге они хотят передать проект в независимый фонд программного обеспечения, где его разработкой будут заниматься волонтеры.
В конце концов если вам интересно узнать об этом больше вы должны знать, что разработки проекта распространяются под лицензией Apache 2.0 и вы можете с ними ознакомиться По следующей ссылке.