CppCon 2019 旅行レポート

なんと1週間でした! CppCon 2019 は、私が今まで参加した中で最高の CppCon です。時間帯ごとに気になる内容があり、どちらの話に行こうか迷ってしまうほど長い時間葛藤があります。

会議前後のクラス

    <リ>

    Arthur O'Dwyer のゼロからの標準ライブラリ タイプが消去されたコンテナーの実装を教えてくれます (anyfunction )、同期プリミティブ、スマート ポインター、および一連のメタプログラミング ユーティリティです。このコースにより、型消去、スモール オブジェクトの最適化、およびメタプログラミングについて自信が持てるようになりました。

    <リ>

    Gordon Brown と Micheal Wong の最新の C++ における並列処理:CPU から GPU へ 一般的な並列プログラミングの原則と SYCL プログラミングについて説明します。私は GPGPU の経験があまりなく、SYCL に触れたこともありませんでしたが、多くの概念が Vulkan Graphics API にうまく対応していることに気づきました。

基調講演

今年の CppCon では、毎日 1 つの基調講演があり、すべての基調講演は高品質です。

    <リ>

    Bjarne Stroustrup の C++20:C++ at 40 [ビデオ] では、作成者の視点から C++ の現在の状況について説明しています。この講演には特に驚くべきことは何もありませんが、モジュールや概念などの C++ 機能の組み合わせにより、この言語はすでに完全に新しい高みへと変化しています。 Bjarne は、将来の C++ のビジョンについても話しました。

    <リ>

    Andrei Alexandrescu のスピードは人の心にある [ビデオ] 面白くて刺激的です。アルゴリズムと最適化について再考させられます。

    <リ>

    Ben Smith - Applied WebAssembly:Web ブラウザでの C++ のコンパイルと実行 [ビデオ]。 C++ コードベースを使用した Web アセンブリ製品を持っている会社でインターンをしていて、人々がこの慣行を広めていることを嬉しく思います.

    <リ>

    Sean Parent の Better Code:Relationships [ビデオ] は、彼の「Better Code」シリーズの続きです。今回は、オブジェクト間の関係の理論と、それらがソフトウェアの設計にどのように役立つかについて話していました.

    <リ>

    Herb Sutter の C++ の断片化解消:例外と RTTI を手頃な価格で使いやすくする 【動画】自然とみんなの注目を集める。コミュニティの大部分は、例外と RTTI の現状に満足していないため、Herb の一連の提案は非常に役立ちます。 Herb は 3 月に私のユーザー グループで同じ話をします。

パーソナル ハイライト

今年の CppCon には非常に多くの素晴らしい講演があるので、私が参加して最も印象に残った講演をいくつか挙げることができます.

    <リ>

    Bryce Lelbach の C++20 同期ライブラリ [ビデオ] はおそらく、今年の CppCon で聞いた同時実行に関する最高の講演です。 C++20 同期プリミティブだけでなく、それらを使用してタスク システムを構築する方法についても説明しました。すべての内容を吸収するまで、何度か見る予定です。

    <リ>

    Alisdair Meredith と Pablo Halpern のGetting Allocators out of our way [スライド] 現在の pmr の上にアロケータを認識するクラスの記述を簡素化するための興味深い言語拡張を提案しました モデル。基本的な考え方は、アロケーターはもはや通常のパラメーターではなく、オプションで別の構文で提供できる特別なパラメーターであるということです。拡張機能は Scala の暗黙のパラメーターのように機能し、エグゼキューターなどの他の構造に使用できる可能性があります。

    <リ>

    Jason Turner の C++ コードの匂い [スライド] 最終的に const だと確信しました 関数パラメータは非常に単純な例で利点がありますが、昨年彼がそれについて話したとき、私はそれを疑っていました.

    <リ>

    Mathieu Ropert のこのビデオゲーム プログラマーは STL を使用し、次に何が起こったかは推測できません [スライド] 「デバッグ パフォーマンス」に関する一般的な懸念など、C++ 標準ライブラリに対する一般的な神話をわかりやすく説明します。また、いつ STL を使用すべきか (すべきでないか) についても説明します。

本当に、この名前は長すぎます。

  • Matt Godbolt の「Path Tracing Three Ways」[スライド] では、オブジェクト指向、関数型、データ指向の 3 つの C++ スタイルで同じプリミティブ パス トレーサーを実装しています。彼はパフォーマンスを分析し、長所と短所を比較します。興味深い回り道の 1 つは、動的ポリモーフィズムのない素朴に設計されたデータ指向コードは、分岐の予測ミス (DOD が回避しようとしている) のために、オブジェクト指向のコードよりもさらに遅くなる可能性があることです。彼が適用した修正により、データ指向バージョンが改善されただけでなく、機能バージョンの速度も大幅に向上しました。私が疑問に思っていることの 1 つは、パス トレーシングの特定のケースで、アクセラレーション データ構造を追加するときに、データ指向設計のパフォーマンス上の利点をどれだけ維持できるかということです。

私の照明の話

水曜日の夜、不可能な状態を表現不可能にするというライトニング トークを行いました 型付き関数型言語コミュニティに触発されました。ライティングの講演では、C++ でデータと型を設計して静的型システムを活用し、場合によっては不変条件を破ることが不可能になる方法について説明しました。

この講演は、大学やミートアップの場ではなく、一般の人の前で行う初めてのプレゼンテーションです。緊張しましたが、無事に終えることができました。また、作成した元のスライドの半分以上をカットしたため、コンテンツを 5 分に収めるのは非常に難しいこともわかりました。この機会を与えてくれた CppCon に感謝します。また、照明に関する講演をうまくまとめてくれた Phil Nash に感謝します!

結論

学生として、学校の時間に会議に出席することは、学業の期間中、常に私に大きなプレッシャーを与えます.ただし、CppCon は常に価値があります。 C++ コミュニティの非常に多くの並外れた人々、そして普段はオンラインでしか見ることのできない "C++ のヒーロー" に囲まれていることを嬉しく思います。 1 週間ずっと素晴らしい時間を過ごしてくれて、出会ったすべての人に感謝します。 CppCon に参加して、来年皆さんにお会いできるのが待ちきれません!