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

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

Як пояснив Каррут на сторінці GitHub, 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.