Что нового в стандартах С++: рассказывают представители российской рабочей группы

НачалоКак устроена стандартизацияЗачем Яндексу участвоватьЧто нового в стандартахВ каких компиляторах работать

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

Участвовать в развитии C++, Python, Java и других языков программирования может любой разработчик. Свою идею можно предложить комитету по стандартизации — участники рабочей группы рассмотрят предложение, обсудят вместе с автором и помогут подготовиться к защите перед рабочей группой Комитета ISO C++.

Встреча международного комитета проходит три раза в год. На ней заседает около 200 человек, среди которых автор самого языка, представители от компиляторов и эксперты от крупных компаний.

Антон Полухин
Руководитель группы разработки общих компонентов, Яндекс Go

Члены Комитета ISO C++ рассматривают идею, вносят правки и возвращают проект на доработку. И так до тех пор, пока идею не доведут до совершенства.

Из недавнего: в стандарте C++ приняли inplace vector. Это контейнер, который не аллоцирует динамически, что хорошо для эмбеда. А на этапе компиляции задаётся максимальный размер — вы знаете, что, например, больше 10 элементов вам не придёт. Этот inplace vector можно взять и подставлять, где нужно. Так вот, идею предложил разработчик, который хорошо пишет классы, погружён в тему, но не знает, как всё правильно выразить. Рабочая группа помогла, и получилась красота.

Антон Полухин
Руководитель группы разработки общих компонентов, Яндекс Go

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

В международные рабочие группы входят представители крупных компаний, среди которых есть и команда от Яндекса. Специалисты работают ради следующих целей:

  • Развивать язык программирования. Многие проекты в Яндексе написаны на C++, поэтому специалистам важно актуализировать стандарты.
  • Ускорять рабочие процессы. Иногда разработчикам приходится сталкиваться с ограничениями языка, и в масштабах компании это тормозит производство. Рабочие группы помогают отловить баги на этапе компиляции за счёт оптимизации языка.

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

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

Роман Русяев
Team Lead компиляторного направления

В 2023 году члены рабочей группы по стандартам C++ (РГ 23 C++) рассматривали предложения разработчиков. Вот какие обновления в стандартах ждут язык программирования уже скоро:

  • Copy Elision — это оптимизация, которая исключает ненужное копирование объектов в компиляторе. Это позволяет значительно сэкономить на рантайме — улучшить производительность приложения.
  • BLAS (Basic Linear Algebra Subroutines) — это набор математических функций, которые позволяют выполнять умножение векторов и матриц из линейной алгебры.
  • Улучшенная диагностика ошибок — теперь разработчик будет диагностировать ошибки на этапе компиляции, а сами сообщения об ошибках можно сделать полезными. Например, добавить в сообщение совет, как исправить ошибку.
  • С++ рефлексия — она будет сильно отличаться от рефлексии в других языках программирования и будет на этапе компиляции.
  • Проект Clang AR — опенсорсный проект, который представляет высокоуровневые промежуточные представления для C++. Его разрабатывают для того, чтобы повышать производительность языка программирования.

Часть компиляторов сразу внедряет новые стандарты и запускает их поддержку, а в некоторых обновления опаздывают. Чтобы работать с актуальным C++, стоит пользоваться следующими программами:

  • GCC — работает с 1985 года и распространяется по принципам свободного ПО
  • Clang — создан для работы на базе LLVM и разрабатывался как замена GCC
  • Visual Studio — интегрированная среда разработки от Microsoft

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

Антон Полухин
Руководитель группы разработки общих компонентов, Яндекс Go

Несмотря на то что все эти компиляторы конкурируют, можно совместить две реализации и получить красивый код. Кроме того, люди часто испытывают фичи, экспериментируют, специально что-то ломают, чтобы потом починить. Это ускоряет развитие языка, к чему в итоге и стремится рабочая группа.

Поделитесь увиденным

Скопировать ссылку
ТелеграмВКонтакте