Google запускает Carbon, экспериментальный языка программирования вместо C++

Google запускает Carbon, экспериментальный языка программирования вместо C++ - Украина, Польша, Германия.

Разочарованные медленной эволюцией C++ инженеры Google запустили новый «экспериментальный» язык программирования с открытым исходным кодом под названием Carbon как возможную преемницу уважаемой, но устаревшей C++.

Подобно тому, как Microsoft создала Typescript для обновления JavaScript, а Kotlin был создан, чтобы устранить недостатки Java, Carbon может стать преемником C++, языком, предлагающим разработчикам легкий переход к новому языку, соответствующему современным концепциям разработки, таким как безопасность памяти. и дженерики (обобщения). Инженер Google Чандлер Каррут представил язык на конференции CPP North C++ в Торонто.

Как пояснил Каррут на странице GitHub, C++ давно является языком выбора для создания критически важных для производительности приложений. С++ имеет ряд проблем, мешающих современным разработчикам. Он накопил десятилетия технических проблем, принося с собой многие устаревшие практики, которые были частью языка-предшественника, C. Пользователи C++ отдают приоритет обратной совместимости, чтобы продолжать поддерживать широко используемые проекты, такие как Linux и его пакетное управление экосистемой, говорит Керрут.

Эволюцию языка также тормозит процесс бюрократического комитета, ориентированный на стандартизацию, а не на дизайн. Что может усложнить добавление новых функций. C++ имеет в основном обособленный процесс разработки, при котором особый комитет принимает важные решения в каскадном процессе, который может длиться годами.

«Структура комитета разработана для обеспечения представительства наций и компаний, а не для создания инклюзивной, гостеприимной команды и сообщества экспертов и людей, активно способствующих развитию языка», — написал Каррут. «Доступ к комитету и стандарту ограничен и дорог, присутствие необходимо для того, чтобы иметь право голоса, а решения принимаются живым голосованием присутствующих».

Керрут хочет построить Carbon в более открытой среде под руководством сообщества. Проект будет поддерживаться на GitHub и будет обсуждаться на Discord.

Хотя Carbon начинался как внутренний проект Google, команда разработчиков хочет сократить взносы от Google или любой другой отдельной компании до менее 50% к концу года. В конце концов, они хотят передать проект независимому фонду программного обеспечения, где его разработкой будут руководить волонтеры.

Разработчики планируют выпустить основную рабочую версию (0.1) до конца года. Carbon будет построен на основе современных принципов программирования, включая общую систему, которая избавит от необходимости проверять и повторно проверять код каждого экземпляра.

Еще одна необходимая функция, которой не хватает в C++, это безопасность памяти. Ошибки доступа к памяти являются одними из самых больших виновников безопасности. Разработчики Carbon будут искать способы лучшего отслеживания неинициализированных состояний, разработки API и идиом, поддерживающих динамические проверки границ и создавать комплексный режим сборки отладки по умолчанию. Впоследствии дизайнеры планируют создать безопасный набор Carbon.

Согласно документации, Carbon будет поддерживать:

  • Программное обеспечение, важное для производительности;
  • Эволюция программного обеспечения и языка;
  • Код легко читать, понимать и писать;
  • Практическая безопасность и проверка механизмов;
  • Быструю и масштабируемую разработку;
  • Современные платформы операционной системы, аппаратные архитектуры и среды;
  • Взаимодействие с имеющимся кодом C++ и миграцию из него;
  • Команда разработчиков также собирается создать встроенный менеджер пакетов, чего не хватает C++.

Вот некоторый код C++, переведенный на Carbon. Во-первых, код C++:

Google запускает Carbon, экспериментальную замену языка программирования C++

Вот та же функция, написанная на Carbon:

Google запускает Carbon, экспериментальную замену языка программирования C++

Команда разработчиков планирует написать инструменты перевода для переноса кода C++ в код Carbon.

Tags: