Стремясь заменить почтенный, но медлительный C++, исследователи Google представили совершенно новый «экспериментальный» язык программирования с открытым исходным кодом, получивший название Carbon.
Carbon может служить преемником C++, который предоставляет разработчикам простую отправную точку для перехода к более новому языку, учитывающему современные концепции разработки, такие как безопасность памяти и дженерики.
Это было бы похоже на то, как Microsoft создала Typescript для обновления JavaScript и Kotlin для устранения недостатков в Java.
Компания Google разработала ряд языков программирования на протяжении многих лет, некоторые из которых получили широкую известность и известность.
Например, Golang (или просто Go) был разработан для облегчения создания серверов и распределенных систем и впоследствии был принят широкой публикой.
Дротик язык программирования, который был создан как замена JavaScript, не стал широко известен до запуска Flutter.
Чендлер Каррут, сотрудник Google, представил свою идею нового языка программирования под названием Carbon 19 июля 2022 года на съезде Cpp North в Торонто. по словам Конора Хукстры, которые присутствовали и записывали слайды.
Чтобы задать сценарий, Каррут продемонстрировал, как несколько наиболее популярных сегодня языков программирования имеют потомков, которые позволяют разработчикам быстро работать продуктивно, а также извлекать выгоду из современного языкового дизайна.
Давайте начнем с общего введения в язык программирования Carbon, включая его функции, цель его изобретения Google и многое другое.
Введение в язык программирования Carbon
19 июля 2022 года Google представила Carbon как новейший созданный ею язык программирования. Он был предназначен для экспериментальной замены C++.
Благодаря система дженериков, что устраняет необходимость перепроверки кода для каждого экземпляра, Carbon будет построен на основе современных концепций программирования.
К концу года проектировщики планируют предоставить базовую рабочую версию (версия 0.1).
Целостность памяти — важнейший элемент, которого нет в C++. Одним из основных источников недостатков безопасности являются проблемы с доступом к памяти.
Разработка динамических проверок границ, улучшенное отслеживание неинициализированных состояний и тщательный режим отладки по умолчанию — все это цели команды Carbon. Создатели намерены со временем создать безопасное подмножество Carbon.
Однако ниже приведены некоторые важные характеристики нового языка программирования:
- Чтобы назвать типы, используйте выражения.
- Сильные дженерики с проверками определений
- Типы специально выполняют интерфейсы
- вводные фразы и базовая грамматика
- Указатели обеспечивают неограниченный доступ и мутацию.
- Значения входных параметров функции доступны только для чтения.
- Корневое пространство имен — это package.
- 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++, в следующих ситуациях:
- Ява – Котлин
- JavaScript — TypeScript
- С++ — углерод
C++ VS Углеродный код
У Carbon должна быть низкая кривая обучения, если вы уже являетесь разработчиком C++. Он состоит из фиксированного набора грамматических конструкций, которые должны звучать естественно и быть простыми для чтения и понимания.
Пример кода С++:
Этот углеродный код соответствует:
Углерод против ржавчины
Еще один современный язык, разработанный специально для удовлетворения требований производительных приложений с безопасной памятью, называется Rust.
Так почему бы просто не использовать Rust?
В то время как некоторые утверждают, что Rust, который начинался как проект Mozilla и впоследствии приобрел значительную популярность среди публики, является преемником C++, Каррут сомневается, что эта параллель все еще действительна.
Rust, несомненно, является фантастическим языком для начала нового проекта, но поскольку ему не хватает «двунаправленной совместимости» таких языков, как Java и Kotlin, постепенно переходить на него сложно.
Каррут прочитал лекцию на CPP North и призвал людей, которые уже используют Rust, продолжать это делать. Разработчики, у которых уже есть значительные кодовые базы C++, которые сложно преобразовать в Rust, должны использовать Carbon.
В частности, Carbon — это то, что Каррут назвал «языком-преемником», который построен поверх существующей экосистемы, в данном случае C++.
Для этой цели Carbon должен быть полностью совместим с текущим кодом C++, даже если он имеет много целей с Rust, таких как помощь программистам в создании «приложений, критически важных для производительности».
Кроме того, он призван максимально упростить переход с C++ на Carbon.
Заключение
Наконец, создатели углеродного языка постарались уделить внимание процессу создания. Код проекта доступен для запроса и хранится в открытом доступе на Github, а его культура определяется как инклюзивная и открытая как для частных лиц, так и для ИТ-сектора.
Команда Carbon считала, что Carbon должен быть автономным проектом, управляемым сообществом, а не только проектом, поддерживаемым Google, чтобы развиваться в будущем.
Карут добавил, что, несмотря на интерес со стороны ряда ИТ-компаний, эта концепция все еще находится на экспериментальной стадии.
Оставьте комментарий