Но обо всем по порядку.
Рабочая группа по стандартам C++ Язык программирования C++ не развивается спонтанно.
Его разработку контролирует международная организация ISO/IEC, а точнее рабочая группа внутри этой организации.
В ее обязанности входит рассмотрение предложений по улучшению языка и стандартной библиотеки, голосование по предложениям и написание на них коротких рецензий (почему предложение не прошло голосование, что именно не понравилось в предложении и т. д.).
При этом большая часть предложений, как правило, вносится самими членами комитета.
Зачем писать предложения и модернизировать C++ Ради славы и денег :) А также ради того, чтобы писать код было удобнее и работать быстрее.
Начнем с простоты написания кода.
Чем больше отличных решений будет в стандартной библиотеке, тем меньше велосипедов придется изобретать заново для типичных задач.
Не было там раньше станд::поток — и каждому приходилось писать свои классы для кроссплатформенной работы с потоками.
Не было там раньше станд::массив — и мало кто знал, как вернуть массив из функции.
станд::атомный избавил людей от необходимости прибегать к ассемблерному коду или использовать расширения, специфичные для компилятора.
Теперь о скорости.
Вы можете исправить наиболее оптимальные решения в стандарте или добавить новые возможности, ускоряющие код из коробки.
Например, rvalue-references позволяли ускорить работу некоторых приложений без изменения пользовательского кода.
станд::строка недавно приобрел возможность хранить небольшие строки без динамического выделения памяти, что также положительно сказалось на производительности приложений.
Ну а теперь о славе и деньгах.
Представьте себе диалог при приеме на работу: — Вы работали со стандартным компонентом библиотеки станд::что угодно ? - Да, это я придумал станд::что угодно и участвовал в его продвижении до стандарта C++.
- Вы приняты! При чем здесь Яндекс? C++ — один из основных языков разработки в Яндексе.
Недавно мы подумали, что было бы неплохо иметь больше контроля над таким важным для нас инструментом.
Итак, мы начали работать над созданием рабочей группы по C++.
Цели были амбициозные: понять, как все работает в комитете по стандартизации C++, создать рабочую группу людей, близких к этой теме, дать российским разработчикам возможность влиять на развитие языка, иметь возможность передавать наши успешные разработки по стандарту и т.д. Так сотрудники Яндекса копали-копали и случайно докопались до меня, который к тому времени уже работал в Яндексе.
Как вы, возможно, знаете, в свободное время я разрабатываю библиотеку.
Способствовать росту , я активно помогаю людям по всему миру писать предложения по улучшению стандарта, и у меня есть несколько собственных предложений по улучшению стандарта C++, которые находятся на рассмотрении.
- Стоп, стоп, стоп! - заметит здесь читатель.Все очень просто.— Если предложения по C++ можно принять без «Яндекса», то зачем нам «Яндекс»?
Вы можете написать предложение по улучшению языка C++, но есть несколько нюансов.
- Нужно быть очень «в курсе» и знать, что именно написать в предложении, чтобы не пришлось переписывать его по десять раз.
- Вам придется либо самому присутствовать на заседании WG21, либо найти кого-то, кто поедет на заседание комитета в Америке или Европе и будет защищать там ваше предложение и отвечать на вопросы.
- Некоторые успешные предложения были приняты одним голосом, поэтому хорошо иметь союзников в комитете.
- На собраниях иногда «не хватает рук».
Если во встречах примут участие представители Яндекса, можно будет либо рассмотреть больше заявок, либо подробнее описать авторам предложений, что необходимо улучшить.
Помимо меня, группу будет возглавлять Александр Фокин, который возглавляет одну из команд, разрабатывающих Поиск, и активно помогает в модернизации кодовой базы и внедрении в рабочую практику возможностей новых стандартов C++.
Как и когда это будет работать На данный момент мы находимся в самом начале пути.
Мы создали рабочую группу (РГ21) на базе сотрудников Яндекса, группа является национальной зеркальной рабочей группой.
Нам еще предстоит разобраться в бюрократических вопросах, познакомиться с членами WG21, принять участие в нескольких заседаниях и включиться в рабочий процесс.
Кроме того, C++17 уже не за горами, и сейчас все заняты подготовкой финальной версии стандарта.
Но если все пойдет по плану, то в декабре этого года мы начнем помогать российским разработчикам с предложениями по развитию языка C++.
Что бы мы добавили в стандарт в первую очередь? Мы очень заинтересованы в стандартизации плоских контейнеров, таких как boost::container::flat_set и boost::container::flat_map .
Это сложная работа и ее необходимо проводить внимательно, по согласованию с ведущими разработчиками подобных контейнеров.
У нас также есть ряд компонентов, которые широко используются в нашем коде и будут полезны многим разработчикам.
Первое, что приходит на ум, — это класс трассировки стека.
Чтобы включить наши компоненты в стандарт, нам нужно много чего: перевести имена в нижний регистр, вырвать из класса компоненты, которых нет в стандарте, добавить интеграцию с классическими потоками ввода-вывода, сделать их общедоступными, получить обратная связь и т. д. Мы также надеемся, что начнется работа над предложениями по динамической загрузке библиотек – P0275R0 И P0276R0 .
Ранее подобные предложения были отвергнуты из-за их сложности, но на этот раз удалось свести изменения в ядре языка к минимуму.
Есть также идеи о вещах, которые крайне проблематичны для продвижения, например: классы интерфейса , доступ к полям структуры по индексу и базовое отражение.
Куда писать, если есть предложения Мы создали список рассылки [email protected] — отправляйте туда свои предложения, идеи и пожелания.
Мы постараемся ответить хотя бы на самые интересные и перспективные.
Максимум – за все.
Вместо результатов Мы подготовили здесь небольшую анкету, чтобы оценить объём предстоящей работы и заинтересованность людей.
В опросе могут участвовать только зарегистрированные пользователи.
Войти , Пожалуйста.
Проверка: 3,38% У меня есть (скоро будут) готовые предложения и прототипы для включения в стандарт C++, их надо представить на встрече.
8 12,66% Есть идеи по включению в стандарт C++, нужно написать предложение/прототипы, сам не могу (или ленюсь).
30 10.97% У меня куча мелких замечаний и однострочных поправок к стандарту.
26 88.19% Мне нужен класс для вывода трассировки стека :) 209 Проголосовали 237 пользователей.
295 пользователей воздержались.
Теги: #программирование #c++ #C++ #Яндекс #ИТ-стандарты #Идеальный код #c++17 #c++14 #стандартная библиотека #стандарты
-
Тайны Желтой Коробки
19 Oct, 24