Yandexの従業員はC ++標準化委員会でロシアを代表します





私はあなたと良いニュースを共有したいと思います:これでC ++の開発に影響を与えることができます! 「私たち」とは、すべてのロシアのプログラマーがC ++で作業することを意味します。



しかし、まず最初に。



C ++標準化ワーキンググループ



C ++プログラミング言語は自発的に開発されていません。 その開発は、国際組織ISO / IEC、またはむしろこの組織ISO / IEC JTC1 / SC22 / WG21 C ++内のワーキンググループによって管理されています 。 彼女の責任には、言語および標準ライブラリを改善するための提案の検討、提案への投票、およびそれらに対する短いレビューの作成が含まれます(提案が投票に合格しなかった理由、提案でまったく気に入らなかった理由など)。 さらに、ほとんどの提案は通常、委員会メンバー自身によって行われます。



文章を書いてC ++をアップグレードする理由



名声とお金のために:)また、コードを書くために、それはより便利で、より速く働きました。



コードの書きやすさから始めましょう。 標準ライブラリ内に優れたソリューションがあればあるほど、典型的なタスクに必要な自転車の数は少なくなります。 以前は、 std :: threadはありませんでした。また、スレッドを使用したクロスプラットフォームの作業のために、全員がクラスを作成する必要がありました。 前にstd :: arrayはありませんでした-関数から配列を返す方法を知っている人はほとんどいませんでした。 std ::アトミックにより、人々はアセンブリコードを使用したり、コンパイラ固有の拡張機能を使用したりする必要がなくなりました。



スピードについて。 標準の最適なソリューションを修正するか、すぐにコードを高速化する新しい機能を追加できます。 たとえば、右辺値参照により、ユーザーコードを変更せずに一部のアプリケーションを高速化できます。 std :: stringは最近、動的メモリ割り当てなしで小さな文字列を保存する機能を獲得しました。これは、アプリケーションのパフォーマンスにもプラスの影響を与えました。



さて、今では名声とお金についてです。 求人ダイアログを想像してください:

-std ::標準ライブラリのコンポーネントを使用しましたか?

-はい、 std ::何かがありました。C++標準へのプロモーションに従事していました。

-あなたは受け入れられます!



Yandexはそれと何をするのか



C ++は、Yandexの主要な開発言語の1つです。 最近、私たちはこのような重要なツールをもっと制御できるといいと思いました。 そこで、C ++のワーキンググループの作成に向けて掘り始めました。 目標は野心的でした:C ++標準化委員会ですべてがどのように配置されているかを理解し、このトピックに近い人々のワーキンググループを作成し、ロシアの開発者に言語の開発に影響を与える機会を与え、成功した開発を標準に移す機会を得るなど



そのため、Yandexの従業員は掘り、掘り、偶然私の底に着きました。そのときすでにYandexで働いていました。



ご存知かもしれませんが、私は自由時間にBoostライブラリを開発し、世界中の人々が標準を改善するための提案を書くのを積極的に支援しています。C++標準を改善するためのいくつかの提案を検討中です。



-停止、停止、停止! -読者はここに気づくでしょう。 -YandexなしでC ++のオファーを受け入れることができる場合、なぜYandexが必要なのですか?




すべてが非常に簡単です。 C ++言語を改善するための提案を書くことができますが、いくつかのニュアンスがあります。





これらの問題について、私たちが支援する必要があります。 私に加えて、このグループは、検索を開発するチームの1つを率いるAlexander Fokinが率いて、コードベースの近代化と新しいC ++標準の機能の実務への導入を積極的に支援しています。



いつどのように機能するか



現時点では、私たちは旅のまさに始まりです。 Yandexの従業員に基づいてワーキンググループ(WG21)を作成しました。このグループは、 ISO / IEC JTC1 / SC22 / WG21 C ++の全国ミラーワーキンググループです



官僚的な問題を理解し、WG21のメンバーを知り、いくつかの会議に参加し、作業プロセスに参加する必要があります。 さらに、C ++ 17が登場し、標準の最終バージョンの準備に皆が忙しくなりました。 しかし、すべてが計画通りに進んだ場合、今年の12月にロシアの開発者がC ++言語の開発を提案するのを手伝います。



最初に標準に何を追加しますか



boost :: container :: flat_setおよびboost :: container :: flat_mapのようなフラットコンテナーの標準化に非常に興味があります。 これは困難な作業であり、そのようなコンテナの主要な開発者と相談して、慎重に実行する必要があります。



また、コードで広く使用され、多くの開発者に役立つ多くのコンポーネントがあります。 最初に思い浮かぶのは、スタックトレース出力クラスです。 コンポーネントを標準に含めるには、多くのことが必要です:名前を小文字に変換する、クラスから標準にないコンポーネントを切り離す、古典的な入力/出力ストリームとの統合を追加する、パブリックドメインに配置する、フィードバックを取得するなど



また、ダイナミックライブラリロードの提案-P0275R0およびP0276R0で作業が開始されることを期待しています。 以前は、そのような提案は複雑であったため拒否されましたが、今回は言語のコアの変更を最小限に抑えることが判明しました。



また、 インターフェイスクラス 、インデックスによる構造フィールドへのアクセス、基本的なリフレクションなど、プロモーションに非常に問題のあるものに関するアイデアもあります



提案がある場合はどこに書くか



cpp-proposals@yandex-team.ruニュースレターを作成しました-あなたの提案、アイデア、提案を送信してください。 少なくとも最も興味深く、有望なものには答えようとします。 せいぜい-すべてのために。



合計ではなく



ここでは、今後の作業量と人々の関心を評価するために、小さなアンケートを作成しました。



All Articles