C ++に関する䌚話WP 21、ブヌスト、䌚議

みなさんこんにちは







最近、次のC ++ Siberia 2019がノボシビルスクで開催されたした。 ビデオレポヌトの公開準備䞭です。 この機䌚を利甚しお、頻繁に䌚議を欠垭するこずのない頻繁に講挔を行う2人のスピヌカヌず話をしたした。AntonPolukhin antoshkkaずPavel Filonovです。







アントンは、C ++暙準化ワヌキンググルヌプの囜際䌚議でISOのロシアを代衚しおおり、C ++蚀語暙準、Boostラむブラリ、Boost C ++ Application Development Cookbookのいく぀かの承認された提案の著者です。







Pavelは、Kaspersky Labの開発者および研究者です。サむバヌ物理システムのセキュリティを確保するための機械孊習法の適甚に携わり、教育に埓事しおいたす。 䌚議のビデオを埅っおいる間に、䌚話のトランスクリプトを読むこずをお勧めしたす。













セルゲむみなさん、こんにちは これがセルゲむプラトノフです。珟圚、C ++シベリア䌚議に参加しおいたす。 今日はアントン・ポルキンずパベル・フィロノフのレギュラヌスピヌカヌず話しおいたす。 お元気ですか







パベルすごい ノボシビルスクに戻りたした。







セルゲむ今、私たちはシベリアの森林に盎接盎面しおいたす。







Pavel玠晎らしい眺め、玠敵な人々、ずおも興味深いトピック。







アントンそしお、珟時点ではモスクワよりも暖かいです。







Sergey今日はC ++に぀いおお話したいず思いたすが、C ++カンファレンスでは奇劙に聞こえたす。 さたざたなこずに぀いお。 たずえば、モスクワからノボシビルスクたでの䌚議に参加する理由に興味がありたすが、これは初めおではありたせん。







Pavel私自身、䞻な理由があるず蚀えたす-誰かに䜕かを䌝えるのが本圓に奜きです。 私は自分でそれを保぀こずができたせん。 いく぀かの新しい興味深いこずを孊ぶずき、䞀方で、それが本圓に良い、面癜いかどうかを垞に疑いたす。人々に䌝えお、圌らがこれにどのように反応するかを芋る必芁がありたす-圌らが吐き出すか、再び来るように頌むかどうか。 そしお、圌らは唟を吐かないずいう事実から刀断しお、圌らはトマトを投げたせん、人々はおそらく私ず䞀緒に砎裂しおいるものが奜きです。 私はそれらを聞き、話し合いたいです。 さらに、ただ乗るこずは垞に喜びです。 ノボシビルスクに初めお行ったのはC ++シベリア䌚議で、2回目もノボシビルスクでした。 そのように、私はここに着かないでしょう。







アントン他の郜垂に旅行するのはい぀も面癜いです。 ノボシビルスクは玠晎らしいです。モスクワよりも暖かいです。 濡れた雪は銖の銖筋に流れたせん。 ワンプラス







セルゲむもちろん、私は䞍誠実で、この質問には理由がありたす。 私は、ワヌキンググルヌプ21の思い出ず、私の意芋では、それがどのように珟れたかを蚘憶しおいたす。 私は実際にそれをした人の話を聞くこずに興味がありたす。 ロシアが委員䌚の代衚になったのはどうしおですか







アントンサンクトペテルブルクのロシアのC ++で起こった。 劻のゎア・ニシャノフ ツむッタヌ がすでに立っおいたずきに゚レベヌタヌに入ったのを芚えおいたす。これは囜際暙準化委員䌚に参加する方法を芋぀けるのに最適な方法であるこずに気付きたした。 実際、私は圌にこれに぀いお尋ねたした。 そしお、ゎアは次のずおりです。「ご存知のように、今日、あなたは私にこの質問を思い付く最初からはほど遠いです。 Yandexの人々があなたに近づいおきたした。」 私はYandexで短期間働いおいるず答え、これらの人々がどのように芋えたのかを説明するように頌みたした。 ゎアは私にすべおを語った。 私は圌が説明した人々に行きたした。 そしお、YandexはC ++に埌れを取らず、囜際的な委員䌚でロシアの開発者の利益を代衚する䞀皮のワヌキンググルヌプを䜜成しようずしおいたこずが本圓に刀明したした。 グルヌプが䜜成されたした。 Yandexの埓業員だけでなく、他の䌚瀟の埓業員もいたす。







Pavel珟圚、Kaspersky LabのAnton Bikineevもグルヌプの䞀員ずしお働いおいたす。 今日、残念ながら、圌は私たちず䞀緒ではありたせん。







アントンずころで、アントンは非垞にクヌルなこずをしおいたす-圌は腕ず脚でコンパむラに登り、私たちの提案の1぀を実装しようずしたす。 圌は、倚少なりずも動䜜するプロトタむプさえ持っおいたす。







Pavelずころで、圌はあなたが提案をコンパむラに実装するよりも速く提案を曞くずあなたに䞍平を蚀っおいたす。







アントンはい、そうです。







Sergey぀たり、ここのアントンビキネ゚フは、ワヌキングWGのコアグルヌプずしお機胜しおいたすか 䌚議がこれに関䞎したず聞いおうれしいです。 これがどれほど䟿利で面癜いかをみんなが理解しおくれるこずを期埅しおいたす。 ワヌキンググルヌプに参加するためにYandexで働く必芁はないこずがわかりたした。







アントン䞀般に、アむデアをC ++暙準化委員䌚に䌝えたり、プラスになったりするために、ワヌキンググルヌプに参加する必芁はありたせん。







Pavelただサむトに行っお提案を残すこずができるようです。







アントンはい、 https  //stdcpp.ruで 。 そこでアむデアを共有し、他の参加者のアむデアに぀いお話し合うこずができたす。 倚くのアむデアがありたすが、すべおを匕き受けるのに十分な手がありたせん。 したがっお、人が来お、アむデアの少なくずもいく぀かの提案の特定の草案を曞き始めるず、誰にずっおも簡単になり、これらのアむデアはすぐに委員䌚に届きたす。







パベルアントン、あなたはどう思いたすか







アントン私たちはプロのすべおの静的反射の方向性を決めたした。 今芚えおいるように、 constexpr_vector



-constexprコンテキストでのみ䜿甚できる別のクラスを䜜成する提案がありたした。 Davidが出おDavid Vandevoordeこのこずに぀いお話したす。 ホヌル党䜓がうれしそうに叫んでいたす。 そしお、圌は次のようなものです。「しかし、暙準ラむブラリのすべおのクラスをそのように耇補したいのですか 他に方法はありたせん。」 「おそらくconstexpr_new?



「」いいえ、機胜したせん。 そしお私はチャレンゞを受け入れたした。 そしお3か月埌、私ずSasha Zaitsevは、 std::vector



がconstexprコンテキストで動䜜できるようにするプロトタむプを䜜成したした。 clangで盎接動䜜したす。コンパむラヌでも、䜕もする必芁はありたせんでした。 私たちはそれをデビッドに芋せたした、ず圌は蚀いたす。 よくそうですか いいえ、ここでごたかしたした。」 同意したした。 圌は蚀い​​たす「いいえ、もちろん、できたす。 ちなみに、なぜだ。」 その埌、圌はconstexpr_vector



を䜿甚しお論文をconstexpr_vector



し、暙準ラむブラリのすべおのコンテナがconstexprコンテキストを䜿甚できるように䜜業を開始したした。 ワヌキンググルヌプの私たちは基本的にconstexprのすべおのアルゎリズムを芋逃し、Louis Dionはconstexprの芋逃したコンテナを䜜成し、Davidは蚀語のコアを䜕らかのconstexprを巧みに䜜成したす。







Sergeyこれはアロケヌタヌに぀いおですか







アントンはい。 アロケヌタヌに問題がありたした。







セルゲむすごい これらは倧きな倉化のようです。







アントンさらに6幎、圌らは暙準に衚瀺されたす;-)







Pavelいいえ、おそらく、すぐに指先で觊る時間はないでしょう。







アントン constexprコンテナヌは20番目の暙準にある必芁がありたす。 constexprアルゎリズムは間違いなくヒットしたす。







Pavelそれはほんの数幎ですか







Sergey 2019幎が始たった堎合、20番目の暙準は2020幎のどこかになりたす。 たあ、はい、おそらく数幎。







Pavelさらに、私が正しく芚えおいれば、コンパむラは垞に暙準蚘述子ず比范しお遅れおいたした。今では、コンパむラを介しお実隓ずしお䜕かを最初に実行しようずするこずがよくありたす-アントンがしおいるこずはあなたが䌝えおいるこずです。 そしお、それだけで暙準の圢でそれを取る。







セルゲむ以前、私は芚えおいる、ただTRがあった。







アントンしかし、圌らはTSを支持しお投げられたした。 たくさん倉曎されたした、はい:-)







Sergey぀たり、珟圚の最新のコンパむラでは、名前空間ts



接続するこずもできたすか







Anton珟圚、コンパむラの拡匵機胜を備えたチェックボックスで凊理が行われおいたす。぀たり、Coroutines TSがあり、ClangずVisual Studioで詊すこずができたす。 TSモゞュヌルがあり、どこでも同じではありたせん。 ラむブラリヌ、マルチスレッド、ネットワヌキングに関するTSがありたす。







Sergeyこれはただアロケヌタヌを備えた蚀語の䞭栞ですが、これも特定の個別のフラグによっお蚭定されおいたすか







アントン別のフラグは䞎えられたせん。 DavidDavid Vandevoorde-コンパむラ開発者の1人、EDGフロント゚ンド開発者の1人、圌はちょうどそれを実装したした。 これは倧䞈倫、䜕も壊さない、他の新しいものが欲しくない、ここで実隓するのは意味がない、すべおがうたくいくず信じられおいたす。 いいですね、匕っ匵りたす。







Sergeyずおもクヌルです。







Pavelずころで、䌚議のトピックに戻りたす。 アントン、あなたはC ++ロシアだけでなく、CPP Con、Meeting CPP、CPP Nowなど、倚分他にも頻繁に講挔しおいたす。 どういうわけか、あなたは違いを芋るものを比范しお蚀うこずができたすか これらは同じ人ですか、同じトピックですか、それずも、あなたがどのように動いおいるかによっお、䌚議の䞻題や䜿甚蚀語が倉わるず感じたすか







アントン原則ずしお、ロシアでの䌚議には非垞に匷力な開発者がいるず感じおいたす。 非垞に耇雑なトピックを䌝えるこずができたす。 私は別の䌚議のどこかで非垞に難しいトピックであるmagic_getを話そうずしたしたが、私が話したように、倖郚刺激に反応しなくなった男を思い出したす。 圌はただ座っお点滅したせん。 冗談を挿入できるかもしれないず思った-私はそれを挿入し、冗談を蚀った-圌はたばたきさえしなかった。 それから圌は回りたした。 しかし、おそらくどこかでこのようなハヌドコアを䌝える方が良いでしょう。







セルゲむそしおアントンビキネ゚フだけに。 それは、䌚議の1぀でmagic_getに぀いお話しおいた倕食の時に話を思い出しただけです。







Pavelアントンはこの䌚議に出垭し、あなたが非垞に難しい質問をしたので、圌はあなたが蚀ったこずを明らかに超えたした。 タむプのリストでの怜玢は線圢ではなく、バむナリ怜玢を䜿甚しおいるようです。 あなたは圌に答えお、圌がどうやっおそれを知っおいるのか尋ねたした。 アントンは、レポヌトの前倜、GitHubにあるmagic_getの゜ヌスを読んでいお、その仕組みを理解しようずしおいたず述べたした。







アントンアントンビキネ゚フずの叀い奇劙な話がありたす。 私たちがお互いを知る前であっおも、Boostで圌がどのようにコミットしたかを芋たした。 その埌、圌がClangずconstexprの䞡方でプルリク゚ストを行ったこずがわかりたした。 私はこのプルリク゚ストを芋お、䜕らかの理由でその名前を思い出したした。 おそらく、ClangにコミットするBoostの男が玠晎らしいからです その埌、C ++でシベリアで17番目のプラスに぀いお、constexprに぀いお、そしお男が聎衆から叫びたす。「はい、私はこれを少しClangでやりたした。」 「あなたはアントンビキネ゚フです」







Sergey C ++ Siberiaが接続したす。







Pavelたた、正しく芚えおいれば、マスタヌクラスで最初の実隓を蚭定し始めたのはシベリアでした。 最初に圌らは詊しおみお、このフォヌマットがうたくいくかどうかを確かめたした。 最埌の3〜4回の䌚議の実践が瀺すように、C ++ロシアを数えるず、新しい圢匏が非垞にうたくいったように思えたす。 たずえば、40分ではなく、いく぀かのトピックを突き出そうずする機䌚がありたすが、6時間は萜ち着いお、必芁だず思うすべおを䌝えるこずができたす。 人々が準備ができおいれば、私はできる限り、6時間以䞊も話したす。







アントンワヌクショップは楜しいです。 時々、圌らはあなたがそのような質問をしたす「くそ、なぜそうなの」そしお数日間、この特定のコンパむラ、この特定の悲惚なラップトップでなぜこれが機胜しないのかを理解しようずしたす。 そしお、コンパむラなどに䜕らかの゚ラヌがありたす。 䜕かを䌝えるためだけにマスタヌクラスに来るように芋えたすが、代わりに、どこかを修正し、䜕かを改善するのに圹立぀有益なフィヌドバックが埗られたす。







セルゲむ䌚議の䞻催者ずコミュニティキュレヌタヌの芳点から、ワヌクショップは私にずっお非垞に䟿利だず思いたす。なぜなら、時々人々はそこに行き、基本的な知識を埗お、それをさらに発展させ、それを応甚し、それに぀いおの報告曞ずずもに戻っおくるからです。 数人の人が私のずころに来お、あなたの1人にマスタヌクラスに行った、圌らはそのトピックに非垞に興味があり、自分で報告したず蚀った。







Pavelアントン、あなたはBoostの本の著者でもあるこずを芚えおいたす。今では第2版がすでに出おいたす。 あなたがそれを曞くこずにした方法を教えおください たずえば、私の考えでは、このような耇雑な圢匏で自分の考えを衚珟するこずはただできたせん。







アントン Boostで忙しい月でした。私はそこで誰かず議論し、誰かず呪い、䜕が間違っおいるべきかを蚀っおいたした。 圌らは私を玍埗させたようです。 出版瀟は、Boostに関する本を曞く人を探しおいたした。 圌らはBoostメヌリングリストを芋お、他の誰よりも自信を持っお話した最も掻発な参加者を芋お、私を遞んだようです。







PavelどのようにしおBoostぞの貢献を始めたしたか 仕事ですか、それずも趣味ですか







Antonこれは、Boostの仕組みが理解できなかったためです。 職堎でBoostを䜿甚したした。 Boostは私の最初の䜜品の1぀であり、そこでどのように配眮されおいるのか、なぜそのように機胜するのかたったくわかりたせんでした。







Paul今のずころBoostはちょっずした魔法のラむブラリです。







アントンそしお、私は芋お、理解し始め、ある時点で、ここlexical_cast



もっず良くできるこずに突然気付きたした。 次に、そのメンテナヌであるlexical_cast



Alexeiにこのパッチを適甚しおみたしたが、圌は私に答えたせんでした。 私は圌にさらに2぀たたは3぀のパッチを曞きたした。







Pavel私の蚘憶が正しければ、パッチを積極的に宣䌝する必芁がありたす。







アントンもちろん。 垞にオヌプン゜ヌスで。 その結果、メンテナは完党にlexical_cast



いるlexical_cast



蚀い、やるべきこずがたくさんあり、私にlexical_cast



メンテナlexical_cast



なるこずを申し出たした。 私は喜んで同意したした。 そしお、Boost.Any、Boost.Variantゆっくりず電話を切りたした。 その瞬間、圌は自分のラむブラリヌ、Boost.TypeIndex、Boost.Stacktraceをいく぀か䜜成したした。これは珟圚暙準ずしお受け入れられおいたす。







Pavel既補ラむブラリの新機胜のアむデアはどこで入手できたすか







アントンいく぀かのこず、たずえばBoost.DLL-この人はBoostのメヌリングリストに曞いた、圌らは私が持っおいるクヌルなラむブラリを芋お、ずおも怖くお耇雑で面癜いこずをたくさんしおいるず蚀っおいたす。 私は圌女を芋お、「そう、はい、はい、はい、ああ、私はそれが欲しい」ず蚀いたした。私はこの男に連絡し、プラグむンを個別に扱うための䜜品を取り出すよう提案したした。 圌らはそれを別々に取り出し、この䜜品が男性自身が行うよりもはるかに早くBoostに入ったこずが刀明したした。 Stacktraceでは、ある時点でStacktraceを取埗するメカニズムがないこずに気付きたした。 はい、時々ゆっくりず届きたす。 そしおこれは、プラスにはStacktraceを取埗する方法がないこずに気づいた瞬間です。







Pavel秋にスタックトレヌスを印刷するために、2぀の異なる䜜品で同様のラむブラリを2回䜜成したようです。







アントンそれで、私はそれを取っお詊し、ブヌストの人々にそれを投げたした、圌らはノヌ、それはしないず蚀いたした。 それから私はさらに2回詊みたした、そしお、ここにバヌゞョンの1぀がありたす、圌女はすべおを敎えお、根を匵りたした。







Pavelでも、どういうわけかあなたの仕事で䜿っおいたすか







Antonはい、Yandex.TaxiはBoost.Stacktraceを非垞に積極的に䜿甚しおいたす。たずえば、同じアクションで非垞に優れおいたす。 共通点はありたすか-JSONで䜜業しおください。 ある時点で、ナヌザヌはそこにないJSONフィヌルドにアクセスしたす。 䟋倖を投げるだけですか たあ、その䞊のどこかでキャッチしたす。 䞀般的に、このナヌザヌはどこを呌び出したしたか JSONを操䜜するためのすべおのコヌドにナヌザヌがいたすか圌が到達しおいない正確なフィヌルドはどこですか どの時点で圌はそれを芁求したしたか たた、Stacktraceは、䜕がどこで間違っおいるのか、ナヌザヌがどこで混乱したのかを完党に理解するのに圹立ちたす。







Pavel倚くの堎合、職堎で䜿甚しおいるバヌゞョンは、オヌプン゜ヌスのものず䞀緒に分散し始めたすか たたは、機胜を垞にやり取りしようずしおいたすか







アントン機胜をやり取りしたす。 もちろん、リヌダヌシップの蚱可を埗お。 そしお、これは非垞に有甚な盞互䜜甚であるず蚀えたす。 たずえば、Yandex.Taxiでは、StacktraceのtoString関数が欠萜しおいるこずに気付きたした。 それは暙準化提案にあり、どこでも説明されおいたすが、Boostにはありたせん。 圌女がそこにいるように芋えたずいう事実にもかかわらず、私はBoostからの暙準化提案党䜓を匕き裂きたした。 Boostに远加されたした。 誰もが幞せです。







Pavelずころで、ワヌキンググルヌプに戻りたす。 おそらく、C ++シベリアの埌、すぐに次の䌚議に行きたすか







アントンはい、明日の朝、40時間のフラむトで飛行機に乗り、その同じ日にコナに飛びたす。 䌚議の議題では、委員䌚党䜓がC ++ 20の倖芳を決定する必芁がありたす。 C ++ 20の前の最埌の停止は、バグ修正のみです。 モゞュヌルずコルヌチンは珟圚アゞェンダにありたす。







Pavel長く熱心な議論がある2぀の重芁な機胜。







アントンモゞュヌルに぀いおは、すべおが倚かれ少なかれ明確で、受け入れられおいるように芋えたすが、コルヌチンでは完党に理解できたせん。この䌚議で、コルヌチンに関する3番目の競合する提案が登堎したからです。 これは、Coroutines TSにあるものずは完党に異なっおおり、長所がありたす。 もちろん匱いものもありたす。 それがどうなるかは䞍明です。 そしお、どのくらい䞀般的に人々はコルヌチンにチュヌニングされたす。







Pavel次のC ++ロシアの蚈画は あなたからの報告が必芁ですか







アントンはい、間違いなく。 私は䜕かを思い぀きたす。 おそらくピラロマに぀いお。







セルゲむたあ、友人たち、どうもありがずう もう遠慮したせん みなさんさようなら C ++ロシアでお䌚いしたしょう。







C ++ Russiaカンファレンスでのトレヌニングに぀いお䞀蚀



Pavelがこのむンタビュヌで正しく述べたように、トレヌニングずマスタヌクラスには玛れもない利点がありたす。モデレヌタヌは、通垞のレポヌトのように50分以内に維持しようずするのではなく、数時間以内にトピック党䜓を玹介する機䌚がありたす。







ゆっくりず、マスタヌクラスが䌝統になり぀぀ありたす。 最初にそれらを2017幎に開催しおから、C ++ Siberiaでテストしたした。 今幎は3぀のマスタヌクラスがありたす。 このむンタビュヌでは、すでに2人のリヌダヌに䌚っおいたす。







マスタヌクラスは6時間で、理論情報ず実践的な挔習を組み合わせたす。 少数の参加者がそれぞれに個別の䜜業を提䟛したす。 これは、たず第䞀に、もちろん実践です。 そのため、すべおのマスタヌクラスには、最新のC ++コンパむラがむンストヌルされたラップトップが必芁です。







「C ++での関数型プログラミングの適甚」はIvanČukićによっお行われ、「C ++開発者向けの継続的な統合」ず「スマヌトでモダンなC ++」は開発者のPavel FilonovずAnton Polukhinによっお行われたす。







Ivanのマスタヌクラスぱントリヌレベルではなく、知芚の扉をより広く開けたいミドルに適しおいたす。 Ivanはベオグラヌド倧孊の研究者であり、KActivities、Contourデヌモン、LancelotなどのKDEプロゞェクトのメンテナヌです。 理解できるように、関数型プログラミングに぀いおです。 念のため、参加者は最新バヌゞョンのGCCおよびClangを入手するこずをお勧めしたす。 少し埌で、必芁なものすべおを含むVirtualBoxむメヌゞをレむアりトしたす。 マスタヌクラスでは、次のトピックに぀いお説明したす。関数型プログラミングずはほど遠いSTL、関数型オブゞェクト、std :: invokeおよびmonads、monads、monadsです。 そしお、さらにいく぀かのモナド。







Kaspersky Lab Pavel Filonovのこの開発者研究者にはすでに粟通しおいたす。 圌は、コナンずトラビスでCIを構築するよう参加者を招埅したす。 たた、Pavelは継続的むンテグレヌションの方法に぀いおも説明したす。実際の郚分では、ホヌムプロゞェクト/オヌプン゜ヌスでの䜜業ずクロヌズド゜ヌスコヌドを䜿甚した䜜業プロゞェクトの䟋を䜿甚しお問題を解決する方法を教えたす。







圓然、C ++でプログラムを䜜成し、任意のOS、メむンコンパむラの1぀、新鮮なcmakeCMakeLists.txtの構文を理解する必芁がありたす、git、python 3、pip3、および倚数のアカりントを備えたラップトップを持ち蟌むこずができるはずです。 これに぀いおの詳现は、サむトの説明にありたす 。







最埌に、 antoshkkaのマスタヌクラスは適切な最適化スキルに専念しおいたす。 念のため、圌はYandex.Taxiサヌビスのシニア開発者、C ++暙準化委員䌚の囜際䌚議でのWP 21の代衚者、蚀語暙準の承認された提案の著者、Boostの開発者などです。 アントンは、時期尚早な最適化の゚ラヌが頻繁に発生する䟋を怜蚎し、参加者は、暙準ラむブラリのアルゎリズムず耇雑さ、機胜を備えたコンテナ、Moveセマンティクスずその予期しない動䜜、マルチスレッドを怜蚎したす。 このコヌスは実甚的であるため、Googleベンチマヌクベンチマヌク甚のC ++ラむブラリを䜿甚しお、すべおのトピックが実隓的に調査されたす。 このコヌスでは、基本的なC ++の知識ず、C ++ 11をサポヌトする最新バヌゞョンのコンパむラのみが必芁です。







䞊蚘のすべおはもちろん、参照甚の簡単な参照にすぎたせん。 真実の唯䞀の真の源は、すべおが詳现で明確に述べられおいる䌚議サむトです。 たずえば、ラップトップに必芁な゜フトりェアずそのバヌゞョンが明確にリストされたす。







C ++ロシア䌚議は、2019幎4月19〜20日にモスクワで開催されたす。 チケットは公匏りェブサむトで賌入できたす。 重芁 3月1日から、チケットの䟡栌が䞊がりたす。 2月の䟡栌で賌入する堎合は、今すぐ賌入する必芁がありたす。



All Articles