FAQ о написании предложений к стандарту C++

Что это за стандарт?

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

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

Поэтому в ISO заседают экспертные советы, которые собирают предложения от разработчиков по всему миру и определяют, какие изменения нужно внести стандарты. Совет, отвечающий за C++, утверждает новую версию стандарта раз в 3 года. На очереди версия С""++""20 — она появится в 2020 году.

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

Что такое предложение к стандарту?

— Экспертный совет небольшой и не может придумать всё сам — большую часть полезных изменений предлагают разработчики, не входящие ни в какие совещательные органы. Можно сказать, что сейчас C++ развивается «коллективным разумом», а не управляется небольшой группой руководителей.

Процедура внесения предложений формализована — разработчик, который придумал что-то полезное, должен представить довольно объёмный документ, написанный по определённым правилам — proposal.

Звучит страшно, но на самом деле облечь хорошую идею в proposal не так уж сложно — особенно с нашей помощью.

Кто может писать предложения?

— Любой опытный разработчик, отлично знающий язык.

На самом деле перспективная идея может прийти в голову и новичку со свежим взглядом, но новичку будет непросто учесть всевозможные тонкости, ограничения и общее направление развития языка.

И что, в самом деле принимают?

— Да. Все отправленные и принятые proposals хранятся на сайте http://www.open-std.org/jtc1/sc22/wg21/docs/papers/. Принимают не всё, конечно, но шанс есть.

А сколько времени занимает написать?

— Ну это как с дипломом или диссертацией. Один пишет за несколько бессонных суток, другой — за несколько лет. Всё зависит от самой идеи и от вас.

Сам proposal по объёму примерно соответствует записке к диплому выпускника технического вуза.

И что, прямо я могу взять и написать?

— Ну да! Пишите уже.

Да бросьте, что я могу придумать? Пусть умные люди пишут.

— Ну вы напишите, а мы посмотрим. Великие начинали с малого. Например, создатель Boost.Filesystem, автор функций для работы с файлами в С++17 начал с того, что попросил вернуть в стандарт случайно выпавшую из него функцию getline.

Что мне это даст? Меня сразу пригласят на работу в Яндекс, Фейсбук и Гугл? Будут звать на лучшие конференции мира?

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

Если я приму вашу помощь, мне придётся взять вас в соавторы?

— Нет :)

А гонорар заплатят?

— Нет.

Пожалуй, буду пробовать! Как взяться, с чего начать?

— У нас есть инструкция :)