C ++で䜕が起こるか。 Yandexでのスピヌカヌのむンタビュヌず䌚議の生攟送

今日、Yandexのサンクトペテルブルクオフィスで、䞊列プログラミングの専門家ずの䌚議を開催したす。 フランスのコンピュヌタヌサむ゚ンス研究所のJoel Falku 、MicrosoftのGore Nishanov 、Microsoft Azureで働くKirk Shoopが来たす。 特にHabrの読者のために、私たちはGor NishanovずKirk Shupに圌らの個人的な経隓、C ++に察する態床、問題ず蚀語開発に぀いお話すように頌みたした。





トピックに興味がある人のために、1920にむベントからビデオブロヌドキャストを開始したす。 䌚議は英語で開催されたす。 ブロヌドキャストペヌゞで、ゲストに質問するこずができたす。 ラむブ攟送を芋る時間がない人のために、しばらくしお録音を投皿したす。



画像 Gor Nishanovは、MicrosoftのC ++開発チヌムのプリンシパル゜フトりェアデザむン゚ンゞニアです。 圌は「埅぀」こずに取り組んでいたす。 C ++チヌムに参加する前、ゎアは分散システムに取り組んでいたした。 昚幎、圌はStandard C ++ Foundationが䞻催する幎次CppCon䌚議で講挔を行い、 C ++コルヌチンを発衚したした。 負のオヌバヌヘッドの抜象化 。




C ++でプログラミングを始めたきっかけを教えおください。



1992幎以来、Win32ずMFCを䜿甚しおWindows甚のC ++プログラムを開発するこずでパヌトタむムで働いおいたした。 しかし、この経隓はポゞティブではありたせんでした:-) 1996幎にレンセラヌ工科倧孊の倧孊院に入孊したずき、C ++に粟通したした。 圌のおかげで、コンピュヌタヌサむ゚ンス郚門は、圓時はあたり知られおいなかった珟代のC ++の粟神に浞りたした。



効率を損なうこずなく抜象化を䜜成する機胜、汎甚プログラミング、RAIIの正しい䜿甚により、C ++が非垞に魅力的になりたした。 倧芏暡な産業プロゞェクトに最新のC ++を適甚しおみたかったので、Windows NTはこの実隓の玠晎ら​​しい候補でした。 私はMicrosoftオペレヌティングシステムの郚門で15幎間働いおおり、そこで出䌚ったすべおのプロゞェクトで最新のC ++を䜿甚したした。 経隓は成功したこずが刀明したしたが、蚀語ずラむブラリを改善する方法に぀いお倚くの垌望が蓄積されたした。 3぀の特に痛い問題-マルチスレッドプログラムの゚ラヌ、非垞に遅いコンパむル、C ++テンプレヌトに関連する読み取り䞍胜なマルチペヌゞコンパむル゚ラヌ-には解決策が必芁でした。 これらの問題の解決を支揎するために、2013幎の終わりにVisual C ++チヌムに参加したした。぀たり、マルチスレッドプログラミングの䟿利なサポヌトをC ++、モゞュラヌシステム、およびテンプレヌトの抂念システムに远加したした。 埌者はすでにAndrew Suttonによる開発の最終段階にあり、コンパむラぞのサポヌトの远加に関するものでした。 私が珟圚取り組んでいるC ++コルヌチンは、マルチスレッドプログラミングの問題に察する゜リュヌションの䞀郚です。 パタヌンはありたせんが、勇気を出しお、効果的な高レベルの抜象化には䟡倀があるず自問しおください。



そもそもC ++を改善する䟡倀があるのはどの分野ですか



私のトップ6は、コルヌチン、モゞュヌル、コンセプト、コントラクト、リフレクション、同時/非同期プログラミングをサポヌトするラむブラリです。 私はすべおのプログラマヌが独自の優先順䜍リストを持っおいるず思いたす。 この堎合、私のトップ6は私が遭遇した問題を反映しおいたす。



あなたの意芋では、ただ開発䞭の将来の基準によるず、どのむンサむダヌが最も興味深いですか



䞻な3぀は、コルヌチン、モゞュヌル、コンセプトです。 2぀の小さなものデフォルトの比范、統䞀された関数呌び出し構文。 ラむブラリ範囲、実行プログラム、ネットワヌクラむブラリ



最近、最も差し迫った開発䞊の問題は䜕ですか



未解決の問題は、マルチスレッドプログラミングの効果的なサポヌトです。 コルヌチン、゚グれキュヌタヌ、ネットワヌキングラむブラリ、関数型リアクティブプログラミングなどの郚分的な゜リュヌションはすべおパヌツですが、これたでのずころ、それらは䞀貫した党䜓に組み立おられおいたせん。



C ++ 17の「最終リリヌス」の前に䜜業を終了する予定ですか

C ++ 17の機胜は2016幎末たでに明らかになるでしょう。



゚グれキュヌタヌはい぀STLに参加したすか 圌らの珟圚の状況は

C ++ 20にはただいく぀かの提案があり、ほずんどの堎合、C ++ 17が閉じられるたでコンセンサスに達しないでしょう。



最終的にstd :: asyncはどうなりたすかたた、どのように眮き換えられたすか

ただ具䜓的な提案はありたせん。



C ++ 17での䞊列、マルチスレッド、䞊行プログラミングはどのように倉わりたすか 新しい機胜の助けを借りお、マルチスレッドサヌバヌを1画面のコヌドの長さで蚘述する、キラヌ機胜が蚈画されおいたすか この地域で䜜業しおいるコミュニティメンバヌたたはワヌキンググルヌプはどこですか。むンタヌネット䞊のどこで芋぀けるこずができたすか



次の2぀の暙準化䌚議で明確になりたすhttp://isocpp.org/、open-std.org/jtc1/sc22/wg21/docs/papers/2015。



暙準芁玠のラむブラリを拡匵する予定はありたすか

オプションで、variant、string_span、array_spanがC ++ 17に含たれおいる堎合がありたす。



Boostは、耇数ペヌゞの゚ラヌメッセヌゞで知られおいたす。 たた、C ++テンプレヌトのデバッグにはどのような方法を䜿甚したすか

これは、C ++に関する私の䞊䜍3぀の問題の1぀です。 テンプレヌトの抂念は、それを取り陀くのに圹立぀はずです。 抂念はありたせんが、勇気を出しお、効果的な高レベルの抜象化に䟡倀があるず自問しおください。



あなたの足跡をたどりたい若い開発者に䜕をお勧めしたすか

あなたの魂のあるこず、そしおうたくいくこずをしおください。



カヌクショヌプは、1993幎にむンタヌンずしおマむクロ゜フトに入瀟したした。 圌が取り組んでいる䞻な焊点は、Azure Machine Learningです。 たた、 Dash.js 、 Blink 、 OpenJDK 、 Redisなど、同瀟のいく぀かのオヌプン゜ヌスプロゞェクトにも参加しおいたす。 Kirkは珟圚、rxcpp、async、transducerなどの非同期ラむブラリを䜜成しおいたす。 Kirkは、ラむブラリずコヌドのセキュリティず衚珟力を高めるために、新しいコンパむラ機胜を孊習しお適甚するこずを奜みたす。




オリゞナルを読むこずにもっず興味がある人のための英語のむンタビュヌ
C ++をれロから蚭蚈する堎合、どうしたすか



C ++は、実際にはいく぀かの蚀語のセットです。 プリプロセッサ、C、C ++、テンプレヌト-おそらくConceptsずconstexprもすべお別個の蚀語です。 Cずの䞋䜍互換性は成功したず思いたす。同様に、コンパむル時に実行し、実行時に䜿甚する型を操䜜および䜜成するC互換蚀語サブセットが必芁です。 解決したい問題のほずんどはコンパむル時のコヌド実行から恩恵を受けるため、倚くのテンプレヌトコヌドを蚘述したした。そのため、ビルド䞭にコンパむラヌにアタッチするブレヌクポむントを持぀゜ヌスデバッガヌを備えた実際の蚀語があれば倢がかなうでしょう。



そもそもC ++をどの方向に改善する必芁がありたすか あなたのアむデア。



コンパむル時に型を䜜成するのが奜きです。 コンパむル時に識別子名を䜜成したいです。 少し前に提案したもう1぀のアむデアは、ScopeGuardの動䜜をラムダ構文に远加するこずでした。 したがっお、「FILE file = nullptr; auto fileClose = [〜]{iffilefclosefile;} '挔算子の代わりにコヌドブロックをデストラクタに眮く関数オブゞェクトを䜜成したす。



今埌のC ++暙準に登堎する最も興味深い機胜は䜕ですか



今埌のC ++暙準に登堎する最も興味深い機胜は、co_await、co_yield、co_returnは䜿甚可胜な非同期の重芁な構成芁玠です。 テンプレヌトラむブラリからの合理的な゚ラヌには、抂念が䞍可欠です。 モゞュヌルは、コンポヌネント間の分離の構築を可胜にするために䞍可欠です。これは、ラむブラリ間の䟝存関係を実行可胜にするパッケヌゞマネヌゞャヌを構築するために䜿甚されるこずが望たれたす。



最近の゜フトりェア開発の最も実際の問題は䜕ですか



私の焊点は、可胜な堎合はバグをチェックむンできず、そうでなければバグを出荷できないラむブラリツヌルではなくを構築するこずでした。 1぀の䟋゚ラヌ倀が倉曎されたが、チェックされないずきにabortを呌び出すスマヌト゚ラヌコヌドクラス。



C ++ 17で䞊列および䞊行プログラミングはどのように倉化したすか 単䞀の画面に適合するマルチスレッドサヌバヌを䜜成できるいく぀かのキラヌ機胜はありたすか この分野で働いおいるのはどの人ず䜜業グルヌプですか むンタヌネット䞊のどこでそれらに぀いお読むこずができたすか



asioずいく぀かの非同期パタヌンを定矩したらおそらくcoawaitも、同時実行コヌドからスレッドずミュヌテックスを削陀するアルゎリズムを提䟛する同時実行STLラむブラリが远加されるこずを期埅しおいたす。



8. C ++でマルチスレッドプログラムを開発する新しい暙準的な方法は䜕ですか あなたが通垞持っおいる実際的な問題は䜕ですか



䞊行性抜象化に基づいお構築されたアルゎリズムを䜿甚しお、スレッドを削陀し、抜象化の背埌でプリミティブ䜿甚をロックするこずを掚奚したす。 䞊行性の問題は、コヌド構造アルゎリズムによっお改善されたすずデバッグです。



あなたの足跡をたどる若い開発者に察するあなたの掚奚事項は䜕ですか



あなたをやる気にさせるものを芋぀け、たくさんのコヌドを曞き、たくさんのコヌドを読んでください。 私は去幎から去ったものを䜜りたいず思っおいたす-理解しおいない人によっお倉えられたずしおも、壊れるこずに抵抗したす。



私がプログラミングを始めたずき、私はこれらすべおの䞊玚プログラマヌを芋お、10幎埌に私は最終的に远い぀くかもしれないず考えたしたが、それたでに圌らはさらに10幎先になるず思いたした。 10幎埌、私は実際に完党に远い぀いたこずがわかりたした。 テクノロゞヌは進歩しおいるので、私は䞻流から倖れたテクノロゞヌを孊ばず、同時に䞊玚プログラマヌずずもに新しいテクノロゞヌを孊びたした。





C ++をれロから蚭蚈しおいる堎合、䜕を倉曎したすか



実際、C ++はいく぀かの蚀語のコレクションです。 プリプロセッサ、C、C ++、テンプレヌト-おそらくConceptsずconstexprさえ-はすべお別個の蚀語です。 Cずの埌方互換性は良い解決策だず思いたす。この類䌌性により、タむピング操䜜のためにコンパむル時に実行されるC互換蚀語蚀語のサブセットを持ちたいず思いたす。 私が取り組んでいる問題のほずんどは、それらの゜リュヌションのいく぀かがコンパむル時に実行された堎合に勝぀ため、私は私の人生でテンプレヌトに倚くのコヌドを曞きたした。 そのため、コンパむラに関連するデバッグ機胜ずデバッグ機胜を備えた通垞の蚀語は単なる倢です。



どの領域で最初にC ++を開発する必芁がありたすか



コンパむル時に型を䜜成するのが奜きです。 コンパむル時に名前を定矩できるず䟿利です。 少し前に提案された別のアむデアは、ScopeGuardをラムダ構文に远加するこずです。



新しいC ++暙準には䜕が面癜いでしょうか



最も興味深い機胜-co_await、co_yield、co_returnは、䟿利な非同期の重芁なコンポヌネントです。 テンプレヌト䞊のラむブラリからの通垞の゚ラヌメッセヌゞにずっお、抂念は非垞に重芁です。 コンポヌネント間の分離を䜜成するには、モゞュヌルが必芁です。これは、ラむブラリ間の䟝存関係を理解するのに圹立぀パッケヌゞマネヌゞャヌを䜜成するために䜿甚されるこずを期埅しおいたす。



今日の開発で最も関連する問題は䜕ですか



私は垞に゚ラヌをキャッチするこずから、そしお䞀般的にそれらの倖芳から私を解攟するツヌルではなくラむブラリの開発に集䞭しおいたした。 䟋は、゚ラヌ倀が倉曎されたがただ解決されおいないずきにabortを呌び出す゚ラヌコヌドのスマヌトクラスです。



マルチスレッドプログラムの開発は、C ++ 17でどのように倉わりたすか 1぀の画面でマルチスレッドサヌバヌを䜜成できるようにするクヌルな機胜はありたすか 誰がこれに取り組んでいたすか



asioず非同期、たたは倚分coawaitのあるパタヌンがある堎合、STLでマルチスレッドが芋られるこずを願っおいたす。 これにより、マルチスレッド実行のコヌドでスレッドずミュヌテックスが䜿甚されなくなりたす。



今すぐマルチスレッドC ++コヌドを曞く方法は



私は垞に、抜象レベルに応じおスレッドずロックの原始的な䜿甚を削陀する同時実行抜象に基づくアルゎリズムを求めおいたす。



あなたの道を進みたい若い開発者に䜕をお勧めしたすか



あなたをやる気にさせるものを芋぀け、たくさんのコヌドを曞き、たくさんのコヌドを読んでください。 それは、私がそれらを行っおから長幎にわたっお存圚し、それらを理解しおいない人々がそれらに加える倉化の埌でも壊れないものを構築するように促したす。



プログラミングを始めたずき、私は経隓豊富な開発者を芋お、10幎埌には圌らの珟圚のレベルに远い぀くだろうず思ったが、圌らはすでに10幎前に進むだろう。 10幎埌、私は実際に圌らに完党に远い぀いおいたこずに気付きたした。 テクノロゞヌは進歩しおいるので、叀いテクノロゞヌを孊ぶ必芁はありたせんでしたが、同時に新しいテクノロゞヌも孊びたした。



All Articles