Співробітники Яндекса будуть представляти Росію в комітеті по стандартизації C++



Хочу поділитися з вами радісною новиною: тепер ми можемо впливати на розвиток C++! Під «ми» я маю на увазі всіх російських програмістів, що працюють з C++.

Але про все по порядку.

Робоча група по стандартизації C++
Мова програмування C++ розвивається не стихійно. Його розвиток контролює міжнародна організація ISO/IEC, а точніше, робоча група всередині цієї організації ISO/IEC JTC1/SC22/WG21 C++. В її обов'язки входить розгляд пропозицій щодо поліпшення мови і стандартної бібліотеки, голосування за пропозиціями та написання коротких відгуків щодо них (чому пропозиція не пройшло голосування, що саме не сподобалось у реченні тощо). Причому більшу частину пропозицій, як правило, вносять самі ж члени комітету.

Навіщо писати пропозиції і модернізувати C++
Заради слави і грошей :) А ще заради того, щоб писати код було зручніше і працювало все швидше.

Почнемо з простоти написання коду. Чим більше відмінних рішень в межах стандартної бібліотеки, тим менше велосипедів треба буде винаходити для типових задач. Раніше не було std::thread — і всім доводилося писати свої класи для кроссплатформної роботи з потоками. Раніше не було std::array — і мало хто знав як повернути масив з функції. std::atomic визволив людей від необхідності опускатися до асемблерного коду або до використання специфічних для компілятора розширень.

Тепер про швидкодію. Можна зафіксувати в стандарті найбільш оптимальні рішення, або додати нові можливості, що прискорюють код «з коробки». Наприклад rvalue-references дозволили прискорити деякі додатки, не змінюючи користувальницький код. std::string з недавнього часу обзавівся можливістю зберігати невеликі рядки без динамічних аллокаций пам'яті, що також позитивно вплинуло на продуктивність додатків.

Ну а тепер про славу і гроші. Уявіть діалог при прийомі на роботу:
— Ви працювали з компонентом стандартної бібліотеки std:: щось-там?
— Так, це я придумав std:: щось-там і займався його просуванням в стандарт C++.
— Ви прийняті!

При чому тут Яндекс
C++ є одним з основних мов розробки в Яндексі. Нещодавно ми подумали, що добре б мати більший контроль над таким важливим для нас інструментом. Так ми почали копати в сторону створення робочої групи по C++. Цілі були амбітні: розібратися в тому, як все влаштовано в комітеті по стандартизації C++, створити робочу групу з людей, яким ця тема близька, дати можливість російським розробникам впливати на розвиток мови, отримати можливість переносити наші вдалі розробки в стандарт і т. д.

Так співробітники Яндекса копали, копали і випадково докопалися до мене, який до того моменту вже працював в Яндексі.

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

— Стоп, стоп, стоп! — помітить тут читач. — Якщо пропозиції по C++ можна приймати і без Яндекса, навіщо нам Яндекс?


Все дуже просто. Ви можете написати пропозицію щодо поліпшення мови C++, але є кілька нюансів.
  • Потрібно бути сильно «в темі» і знати, що саме писати в реченні, щоб не довелося його десять разів переписувати.
  • Вам доведеться або самому опинитися на засіданні WG21, або знайти людину, яка поїде на засідання комітету в Америці або Європі і буде відстоювати там вашу пропозицію і відповідати на запитання.
  • Деякі вдалі пропозиції були прийняті з перевагою в один голос, так що непогано мати союзників в комітеті.
  • На засіданнях деколи «не вистачає рук». Якщо у засіданнях візьмуть участь представники Яндекса, можна буде розглянути більше заявок, або детальніше розписати авторам пропозицій, що необхідно доопрацювати.


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

Як і коли це буде працювати
В даний момент ми на самому початку шляху. Ми створили робочу групу (РГ21) на основі співробітників Яндекса, група є національною дзеркальної робочою групою ISO/IEC JTC1/SC22/WG21 C++.

Нам ще необхідно доразобраться в бюрократичних питаннях, познайомитися з членами WG21, взяти участь у декількох засіданнях і влитися в робочий процес. До того ж на носі C++17, і всі зараз завантажені підготовкою фінальної версії стандарту. Але якщо все піде за планом, то у грудні цього року ми вже почнемо допомагати російським розробникам з пропозиціями по розвитку мови C++.

Що б ми додали в стандарт в першу чергу
Нас дуже цікавить стандартизація плоских контейнерів, на зразок boost::container::flat_set і boost::container::flat_map. Це складна робота і проводити її треба акуратно, консультуючись з провідними розробниками подібних контейнерів.

Ще у нас є низка компонентів, які широко використовуються в нашому коді і які будуть корисні безлічі розробників. Перше, що приходить на розум, це клас для виведення stack trace. Щоб включити наші компоненти в стандарт, треба багато чого: перевести найменування в нижній регістр, відірвати від класу компоненти, яких немає в стандарті, додати інтеграцію з класичними потоками вводу/виводу, викласти у відкритий доступ, отримати відгуки і т. д.

Ми також сподіваємося, що почнеться робота над пропозиціями щодо Dynamic Load Library — P0275R0 і P0276R0. Раніше подібні пропозиції відхилялися через їх складності, але в цей раз вийшло звести зміни в ядрі мови до мінімуму.

Також є ідеї по украй проблемним для просування речам, таким як інтерфейсні класи, доступ до полів структур за індексом і базова рефлексія.

Куди писати, якщо є пропозиції
Ми створили розсилку cpp-proposals@yandex-team.ru — свої пропозиції, ідеї та побажання надсилайте на неї. Постараємося відповісти як мінімум на самі цікаві і багатообіцяючі. Як максимум — на все.

Замість підсумків
Ми тут підготували невеликий опитувальник, щоб оцінити обсяг майбутніх робіт і зацікавленість людей.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.