Meeting Embedded および Meeting C++ 2018

先週、ベルリンで開催された Meeting Embedded と Meeting C++ という 2 つのカンファレンスに参加しました。両方の会議からの私の印象は次のとおりです。

C++ との出会いは、世界で最も重要な C++ カンファレンスである CppCon です。 2012年に始まり、今回は木曜日から土曜日まででした。その前日、Jens は新しい会議 Meeting Embedded を立ち上げました。

会議の埋め込み

この会議には 1 つのトラックがあり、基調講演を除いて、講演は 35 分間でした。

Dan Saks による基調講演:より良い組み込みソフトウェアの作成

Dan Saks は、C++ コミュニティでよく知られています。彼は 80 年代から C++ のコンサルタント兼トレーナーです。 Dan は、C++ 標準委員会の最初の書記であり、組み込みドメインの C++ に関する約 400 の記事を書いたことで特に知られています。

Dan は自身の経験から、C 開発者に C++ を教えることについて語っています。彼が最初に観察したことは、ほとんどの組み込みプログラマーはソフトウェアを持っておらず、電気技術者のバックグラウンドと C の知識を持っているということでした。これが、彼らの主な焦点がものを動かすことである理由かもしれません.その後、実際の作業であるデバッグを行うことができます。これは、コンパイルして実行するという C++ プログラマーの考え方とは異なります。つまり、C++ プログラマーは、可能なエラーがコンパイラーによって検出されるように、型安全なコードに焦点を当てています。

C プログラマーが C から C++ に切り替えるとき、彼の主な関心事は、得たもの (テンプレート、オブジェクト指向) ではなく、何を失ったかです。彼の経験により、彼は C++ を教えるためのアプローチを変更し、現在はゆっくりと進歩しています。たとえば、Dan は、ユーザー定義型の利点と、割り込みポインター テーブルからの関数へのタイプ セーフ ポインターについて説明しています。

これがダンからの最後の知恵の真珠です。組み込み開発者は、ハードウェアに大きな関心を持ち、リソースの制約を認識しています。ソフトウェアを改善するために、安定した穏やかな圧力をかける必要があります。主な目標は、実行時エラーをコンパイル時エラーに変換することです。

私にとって、これは非常に貴重な講演でした。なぜなら、私の日々の仕事は、組み込みの人々に C++ の使い方を教えることだからです。同様の環境で働いている場合、これは必見のトークです。

Meeting Embedded について理解を深めるために、残りの講演をご覧ください:

  • Diego Rodriguez-Losada と Daniel Manzaneque による、組み込みおよび IoT のための C/C++ と Jenkins、Docker、および Conan との継続的な統合
  • Wouter van Ooijen による C の教育をやめました
  • Rainer Grimm による安全なコードのためのコア ガイドライン
  • std::map myMCU{?} by Daniel Penning
  • Rust の Remoteprocs by Jonathan Pallant
  • ポール・タルゴスによる 21 世紀のあざけり方
  • IoT への愛を広める - Dafna Mordechai による終日 IoT ワークショップの作成方法
  • オーディン・ホームズによる組み込みソフトウェア開発の可能性のある未来
  • Maurice Kalinowski による MQTT v5 の裏返し

ミーティング C++

初めに。 C++ とのミーティングは木曜日から土曜日まで行われました。 Andrei Alexandrescu、Lisa Lippincott、Nicolai Josuttis による 3 つの基調講演が行われ、44 のトラック トークが行われました。 Nicolai は、最新の C++ テンプレート プログラミングに関するカンファレンス前のワークショップも行いました。正確なスケジュールは次のとおりです:C++2018 ミーティングのスケジュール

対談の感想をいくつか紹介します。

まず、アンドレイの基調講演について書かなければなりません。 Andrei は、Modern C++ Design の著者として (C++) コミュニティでよく知られています。この本は 2001 年に出版され、C++ でのポリシーベースの設計の出発点でした。

Andrei Alexandrescu による次なる大物

免責事項:C++ でのプログラミングの将来について彼が行った予測に完全に同意するわけではありませんが、私たちのプログラミング方法について考える彼のやり方を楽しんでいます.

さて、あなたはそれを知っています。 Andrei は、特に C++ に関して将来の予測を行いました。

彼が最初に気付いたのは、コードのサイズがどんどん大きくなっているということでした。しかし、コードサイズに問題があります。使用するプログラミング言語に関係なく、コード 1000 行あたり 10 ~ 15 のエラーが予想されます。したがって、大きなコードサイズは良くありません。ここで問題は、コード サイズとどのように戦うことができるかということです。 3 つの答えが間近に迫っています。

<オール>
  • コンセプト
  • メタクラス
  • 内省
  • Andrei の観察によると、概念もメタクラスもコード サイズを縮小しません。どちらもソリューションの一部ではなく、問題の一部です。イントロスペクション、または彼が呼んだように、Design by Introspection (DbI) が唯一の実行可能な方法です。 Design by Introspection は、適応可能なコンポーネントによってシステム全体を組み立てる手法です。これは、組み合わせることができる任意の組み合わせコンポーネントによって、世界の組み合わせの複雑さと戦うことを意味します。

    内省による設計には歴史があります。

    <オール>
  • オブジェクト指向で使用されるインターフェースは、組み合わせ爆発と戦うのに役立ちますが、再利用することはできません。デザイン パターンはこのアイデアをカプセル化しています。
  • Andrei が前述の著書 Modern C++ Design で発明したポリシーベースの設計。これらは一種の半自動設計パターンであり、コンパイル時にテンプレートから組み立てられます。コードの再利用を提供します。
  • Andrei が質問に答えました:DbI の前提条件は何ですか?

    • 入力:
      • オブジェクトのメソッドとは?または:オブジェクトはメソッド xyz をサポートしていますか?
      • このコードはコンパイルできますか?
    • 処理中:
      • コンパイル時に任意の式を評価します。
    • 出力:
      • コンパイル時に任意のコードを生成する

    最後に、Andrei はプログラミング言語 D で書かれたチェック積分を提示しました。

    もう一度強調したい。 Andrei の話は私のお気に入りの話でした。第一に、とても楽しく、第二に、とても啓発的でした.

    必見

    これからは手短にします。以下は、オンラインで入手できる場合に聞くべき講演です。 Meeting Embedded および Meeting C++ からのすべての講演は記録されており、こちらで公開されます:Meeting Cpp - YouTube.

    • レギュラー タイプとその理由by Victor Ciura:私の次の投稿は、レギュラー型とセミレギュラー型についてです。したがって、1 週間は我慢する必要があります。
    • Taming Dynamic Memory - Andreas Weis によるカスタム アロケーターの紹介:Andreas は、さまざまなアロケーターについて知りたいことをすべてうまく説明しました。これには、特に、それらの長所と短所が含まれます。正直なところ、アロケータについては多くのことを学びました。
    • コルーチン TS:Andreas Reischuck による新しい考え方:Andreas は、非常に素晴らしく、簡単にコルーチンを紹介してくれました。彼の紹介は、ジェネレーター、ステート マシン、および非同期呼び出しに基づいていました。
    • 基調講演:Nicolai Josuttis による C++ の 50 の色合い:C++ は、ボランティアのコミュニティによって 40 年以上にわたって成功を収めてきたプログラミング言語です。 Nicolai は、このコンステレーションからどのような課題が生じるかを非常によく説明しました。

    これが私の講演です:同時実行のベスト プラクティス (または:私のクラスで過去 10 年間に何がうまくいかなかったのか)

    最後の言葉

    いつものように、Meeting C++ はハグでしたが、驚くほど親しみやすいカンファレンスでした。 Jens と彼のチームに感謝します。

    次は?

    あなたはすでに知っていると思います。次回はレギュラーとセミレギュラーについてです。