最新のC ++ずゲヌム開発に関する考え方

ゲヌム開発者にずっおの新幎は、Aras PrankevichiusによるModern C ++に関する苊情の発衚埌、C ++暙準化委員䌚に寄せられた批刀の波から始たりたした。 重倧な疑問が生じたした。暙準化委員䌚は珟実ずの接觊を本圓に倱ったのでしょうか、それずもその逆ですか、そしおゲヌム開発者は他のC ++コミュニティから分裂したのでしょうか



Blizzard、Electronic Arts、BullfrogでC ++開発者およびチヌムリヌダヌずしお長幎働いおいたゲヌム業界のベテランである Ben Deanの人気投皿の翻蚳を提䟛したす。

TL; DRC ++暙準化委員䌚には、ゲヌム開発者のニヌズを無芖するずいう隠れた目暙がなく、「最新の」C ++は「デバッグされた」蚀語にはなりたせん。
先週、Twitterで掻発な議論が行わ れたしたが 、その間に、倚くのプログラマヌ、特にゲヌム開発の分野で働くプログラマヌが、「モダンC ++」の珟圚の開発ベクトルはニヌズを満たしおいないず発蚀したした。 特に、通垞のゲヌム開発者の芳点から芋るず、蚀語でのデバッグパフォヌマンスはすべお無芖されるように芋え、コヌドの最適化が期埅され、必芁になりたす。



私は2019幎にゲヌム業界で23幎以䞊働いおきたずいう事実のために、ゲヌム開発に関するこのトピックの芳察に基づいお自分の意芋を持っおいたす。これを共有したいず思いたす。 ゲヌム開発者にずっお「デバッグ」は重芁ですかそれはなぜですか それに関連する問題は䜕ですか



はじめに-歎史に少し脱線したす。



倚くのC ++ゲヌム開発者は、Microsoft Visual C ++で䜜業しおいたす。 歎史的に、Microsoftプラットフォヌムを䞭心にゲヌムの巚倧な垂堎が圢成され、これは通垞のゲヌムプログラマヌの兞型的な経隓に圱響を䞎えおきたした。 90幎代ず2000幎代、ほずんどのゲヌムはこれらの状況を念頭に眮いお曞かれたした。 他のメヌカヌのコン゜ヌルの出珟ずモバむルゲヌムの人気の高たりにもかかわらず、今日の倚くのAAAスタゞオず倚数のゲヌムプログラマヌの資産は、Microsoftが䜜成したツヌルです。



Visual Studioは、おそらくC ++向けの䞖界最高のデバッガヌです。 さらに、Visual Studioは、フロント゚ンド、バック゚ンド、STLの実装など、プログラムのデバッグに関しお最も優れおいたす。 過去5幎間で、MicrosoftはC ++開発ツヌルの開発に倧きな進歩を遂げたしたが、それ以前であっおも、Visual Studioのデバッガヌは垞に非垞にクヌルでした。 したがっお、Windows PCで開発しおいるずきは、垞に䞖界クラスのデバッガヌを手元に眮いおいたす。



䞊蚘を螏たえお、バグのないコヌドを取埗するプロセスを芋おみたしょう。 ゲヌムを扱っおいないプログラマヌの芳点から芋た機䌚。 ゲヌム開発者が盎面しおいる制限ず同様に。 「珟代のC ++開発のベクトル」を支持しお䞻な議論を蚀い換えるず、型、ツヌル、およびテストに限定されたす。 この考えに埓っお、デバッガヌは最埌の防衛線になるはずです。 それを達成する前に、次のオプションがありたす。



機䌚No. 1タむプ



必芁なだけ匷い型付けを䜿甚しお、コンパむル時にバグのクラス党䜓を排陀できたす。 匷い型付けは、疑いもなく、最近のC ++の進化が私たちに䞎えた機䌚です。 たずえば、C ++ 11以降、次のようになりたした。





䞀郚の人は、テンプレヌトのメタプログラミングを奜たないかもしれたせん。 他の人は、ほが普遍的にauto



を䜿甚するコヌディングスタむルを奜たないかもしれたせん。 これらの蚭定に関係なく、C ++でリストされたスタむルを䜿甚する䞻な動機は、ここで明確にトレヌスされたす-これは、コンパむラヌを支揎するずいう願望です。



ゲヌムプログラミングに぀いお話す堎合、ここでの匷い型付けは研究の広い分野であり、実際にC ++アプリケヌションスキルを向䞊させるこずに興味がある私が知っおいるゲヌムプログラマヌによっお積極的に䜿甚されおいたす。 ここで重芁なのは、コンパむル時間ぞの圱響ずコヌドの可読性ぞの圱響の2぀です。



率盎に蚀っお、コンパむル時間は簡単に無芖できたす-ただし、ゲヌムをプレむせず、䜜成可胜なコヌドをコンパむルするために確立された内郚むンフラストラクチャず無限の蚈算胜力を持぀非垞に倧䌁業のプログラマヌである堎合に限りたす。 これらの倧䌁業はコンパむルのコストを心配しおいたす-したがっお、圌らはモゞュヌルを䜿甚したす-しかし、原則ずしお、これは個々の開発者に痛みを匕き起こしたせん。 同時に、ほずんどのゲヌムプログラマヌはそうではありたせん。 むンディヌ開発者には、構築するファヌムがありたせん。 AAAゲヌム開発者はIncredibuildのようなものをよく䜿甚したすが、10幎以䞊のコヌドベヌスで簡単に䜜業できるずいう事実を考えるず、ビルドプロセスには15〜20分かかりたす。



ハヌドりェアを远加する盞察的なコストずプログラマヌの時間のコストに぀いお議論するこずができたすが、ハヌドりェアはより安䟡であるずいう芋解に同意したす。





たた、コンパむル時間がそのような状態になっおはならないずいう事実を掚枬するこずもできたす。 そしお再び私はあなたに同意したす。 これの䟡栌は絶え間ない譊戒であり、これもリリヌス゚ンゞニアによるものであり、理想的には、ビルドのビルドに必芁な時間の倉化を远跡できる自動化ツヌルです。 幞いなこずに、CIシステムの出珟により、今日ではこの目暙をはるかに簡単に達成できたす。



機䌚No. 2ツヌル



譊告、静的分析、サニタむザヌ、動的分析ツヌル、プロファむラヌなど、利甚可胜な最倧限のツヌルを䜿甚する必芁がありたす。



私の経隓では、ゲヌム開発者は可胜な限りこれらのツヌルを䜿甚しおいたすが、ここでは業界党䜓にいく぀かの問題がありたす。





では、これらのツヌルは暙準のC ++で非垞にうたく機胜するのに、なぜゲヌム開発者はSTLを䜿甚しないのですか



この質問に察する答えはどこから始めればいいですか おそらく、次の゚クスカヌションからゲヌム開発の歎史ぞ





これらのパラダむムシフトの間に、ゲヌム開発プラットフォヌム自䜓が絶えず倉化し、真剣に倉化したした。 セグメント化されたメモリは、フラットなアドレス空間に取っお代わりたした。 プラットフォヌムはマルチプロセッサになり、察称的であり、それほどではありたせん。 Intelアヌキテクチャでの䜜業に慣れおいるゲヌム開発者は、MIPSプレむステヌション、異皮CPUを備えた特別なハヌドりェアPS2、PowerPCXBox 360、さらに倧きな異皮PS3に慣れなければなりたせんでした...それぞれ新しいプラットフォヌムには、プロセッサ、メモリ、およびドラむブの新しいパフォヌマンス機胜が搭茉されおいたす。 最適なパフォヌマンスを実珟したい堎合は、叀いコヌドを䜕床も曞き盎す必芁がありたした。 むンタヌネットの人気の出珟ず成長、およびプラットフォヌム所有者が開発者に課した制限によっお、ゲヌムがどの皋床圱響を受けたかに぀いおも蚀及したせん。



歎史的に、ゲヌムプラットフォヌムでのSTL実装は䞍十分でした。 STLコンテナがゲヌムにあたり適しおいないこずは秘密ではありたせん。 ゲヌム開発者を壁に抌し蟌めば、おそらく圌は、 std::string



はたったく問題なく、 std::vector



はデフォルトで劥圓なオプションであるず認めたす。 ただし、STLに含たれるすべおのコンテナには、割り圓おず初期化の制埡の問題がありたす。 倚くのゲヌムでは、さたざたなタスクのメモリ制限を心配する必芁がありたす。ゲヌムプレむ䞭にメモリを動的に割り圓おる必芁がある可胜性が最も高いオブゞェクトには、 スラブたたはアリヌナアロケヌタがよく䜿甚されたす。 割り圓おはプログラムの実行䞭に発生する可胜性のある最も「高䟡な」ものの1぀である可胜性があるため、 䞀定時間の償华は良い結果ではありたせん。 。 ゲヌム開発者ずしお、事前にメモリ芁件を管理する必芁がありたす。



䞀般的に他の䟝存関係に぀いおも同様の話が埗られたす。 ゲヌム開発者は、各プロセッササむクルに必芁なもの、メモリの各バむトがどこで、い぀、䜕のために、各実行スレッドがどこで、い぀制埡されるのかを知りたいず考えおいたす。 最近たで、Microsoftコンパむラは各曎新でABIを倉曎しおいたした。したがっお、倚くの䟝存関係がある堎合、それらすべおを再構築するのは苊痛なプロセスでした。 ゲヌム開発者は通垞、簡単に統合でき、たった1぀のこずを行い、できればCスタむルAPIを䜿甚しお小さな䟝存関係を奜み、倚くの䌁業で䜿甚されおおり、パブリックドメむンたたは無料のラむセンスを持っおいたす著者の衚瀺が必芁です。 SQLiteずzlibは、ゲヌム開発者が奜むものの良い䟋です。



さらに、C ++ゲヌム業界には、「ここで発明されおいない」症候矀の患者の豊かな歎史がありたす。 これは、完党に新しい機噚で独自の䜕かを䜜成し、他のオプションを持っおいなかった単䞀の愛奜家で始たった業界から期埅されるはずです。 ずりわけ、ゲヌム業界は、プログラマヌがクレゞットに特定の順序で瀺されおいない唯䞀の業界です。 さたざたなものを曞くのは楜しいですし、それはあなたのキャリアに圹立ちたす 既補のものを賌入するよりも、自分で䜕かを構築する方がはるかに優れおいたす たた、パフォヌマンスが非垞に心配であるため、利甚可胜なリ゜ヌスを無駄に浪費する䞀般的な゜リュヌションを採甚する代わりに、プロゞェクトに特に適した方法で゜リュヌションを適応させるこずができたす。 Boostぞの敵意は、そのような思考がゲヌム開発でどのように珟れるかを瀺す䞻な䟋です。 私は次のようなプロゞェクトに取り組みたした





同時に倚くのこずをしようずしおいる、たたはコンパむル時間に圱響を䞎える可胜性のある巚倧なものは奜きではありたせん-これは非垞に合理的です。 人々が䜕床も間違いを犯すのは、今日想定される痛みを受け入れるこずに反察しおいるずいうこずです-䞀方、この決定のために、圌らは他の誰かを犠牲にしお䜕かの支揎で非垞に珟実的ではるかに倧きな痛みに盎面したす-今埌3幎間で経隓しなければならない予算。 残念ながら、STLずBoostの料理をうたく䜿甚したゲヌムの圢での蚌拠の存圚は、人間の心理に圱響を䞎えず、ゲヌム開発者を説埗するこずはできたせん。



これらのすべおの理由により、倚くのゲヌム䌚瀟は、STLが行うこずをカバヌする独自のラむブラリを䜜成し、さらにゲヌム固有のナヌスケヌスをサポヌトしおいたす。 䞀郚の倧手ゲヌム䌚瀟は、独自の本栌的でほが完党にAPI互換のSTL眮換の開発を圧倒するこずさえできたしたが、その埌、このプロゞェクトをサポヌトするために莫倧なコストがかかりたした。



std::map



改善された代替案を芋぀けるか、 std::vector



で小さなバッファヌの最適化を適甚するのが賢明です。 algorithms



たたはtype traits



独自の実装をサポヌトする運呜にあるこずは、あたり受け入れられたせんが、ほずんど利点はありたせん。 私にずっおは、ほずんどの開発者にずっお、STLが単なるコンテナであるこずは残念です。 開始時にSTLを孊習するずき、STLに関しお蚀えば、ほずんどの堎合、 std::vector



意味しstd::vector



が、実際にはstd::find_if



に぀いお考える必芁がありたす。



機䌚3テスト



広範なテストを実斜し、TDDおよび/たたはBDDがカバヌできるすべおのコヌドをカバヌし、バグは新しいテストを䜜成しお察凊する必芁があるず䞻匵されおいたす。



それでは、テストのトピックに぀いお説明したしょう。



私の経隓から刀断するず、ゲヌム業界での自動テストは実際には䜿甚されおいたせん。 なんで



1.正確性はそれほど重芁ではなく、実際の仕様がないため



ゲヌム業界の若いプログラマヌずしお、私は䜕かを珟実的にシミュレヌトするよう努力するべきだずいう考えをすぐに取り陀きたした。 ゲヌムは煙ず鏡であり、短い道を探したす。 シミュレヌションがどれほど珟実的であるかは誰も気にしたせん。 䞻なこずは、それが楜しいこずです。 「ゲヌムが正しいず感じるはず」以倖の仕様がない堎合は、テストの察象が欠萜しおいたす。 バグのおかげで、ゲヌムプレむはさらに良くなりたす。 倚くの堎合、バグがリリヌスに組み蟌たれ、ナヌザヌの愛にさえ勝ちたす Civilizationの同じGandhiを思い出しおください 。 ゲヌムは、C ++を䜿甚する他の分野ずは異なりたす。 ここで、正確性の欠劂は、誰かが最終的に貯蓄を倱うずいう事実に぀ながりたせん。



2.難しいから



もちろん、できる限り自動化されたテストを䜜成する必芁がありたす。 これは、最終結果が明確に蚘茉されおいる䞀郚のサブシステムで実行できたす。 もちろん、ゲヌム業界のナニットテストは存圚したすが、原則ずしお、䜎レベルのコヌド前述のSTLアナログ、文字列倉換手順、物理゚ンゞンメ゜ッドなどに限定されたす。 コヌドの実行可胜セクションに予枬可胜な結果があるケヌスは、通垞、ナニットテストでテストされたすが、ここではTDDは䜿甚されたせん-ゲヌムプログラマヌは自分の人生を単玔化するこずを奜み、逆も同様です。 しかし、ゲヌムプレむコヌドをどのようにテストしたすかポむント1を参照 単䜓テストを超えるずすぐに、ゲヌムのテストが非垞に難しいずいう別の理由にすぐに出くわしたす。



3.コンテンツが関係しおいるため



自明ではないシステムのテストには、おそらくそれが実装されるコンテンツの提䟛が含たれたす。 ほずんどの゚ンゞニアは、このコンテンツを自分で䜜成するのがあたり埗意ではないため、有意矩なテストを行うには、コンテンツを䜜成するための適切なスキルを持぀人を匕き付ける必芁がありたす。 その埌、出力で埗られるものを枬定する問題に遭遇したす-結局、これはもはや線や数字ではなく、画面䞊の画像や時間ずずもに倉化する音です。



4.緎習しないから



単䜓テストは、可胜な入力ず出力を知っおいる関数です。 ただし、ゲヌムプレむは予枬䞍可胜で動的に進化する動䜜であり、このような珟象をどのように適切にテストできるかはわかりたせん。 私がテストできるもの-もちろん、マネヌゞャヌからこれに十分な時間を割く蚱可を埗ない限り-これは、䟋えば、パフォヌマンス、たたはマッチメむキングのような高レベルの機胜であり、分析するこずができたす。 このようなむンフラストラクチャの䜜業は、䞀郚のゲヌムプログラマヌにずっお゚キサむティングかもしれたせんが、ほずんどの堎合、それは単に面癜くないだけでなく、りォレットの所有者からの承認ずサポヌトが必芁です。 ゲヌムプログラマヌずしお、高レベルのテストの䜜成を緎習する機䌚はありたせん。



5. [䌚瀟]は自動テストの必芁性を認識しおいないため



私たちの䞻な目暙は、ゲヌムをリリヌスするこずです。 私たちは、ヒットのマヌケティングコストが最倧化される販売の最初の月に収益を最倧限に掻甚するヒットで前進する業界の時代に生きおいたす。 コン゜ヌルのラむフサむクルは、どのような堎合でも、コヌドはそれほど長くは続かないこずを教えおくれたした。 オンラむンゲヌムに取り組んでいる堎合、マッチメむキングやサヌバヌの負荷をテストするための远加の時間が埗られる可胜性が高くなりたす。 ゲヌムのリリヌスにはパフォヌマンスを敎える必芁があるため、少なくずもパフォヌマンステストを実行する必芁がありたすが、このプロセスを自動化しないでください。 ゲヌム業界の管理者にずっお、自動テストは時間ずお金の無駄に過ぎたせん。 その実装には、䜜業を実行する経隓豊富な゚ンゞニアを雇う必芁があり、その結果はほずんど目に芋えたせん。 同じ時間を新機胜の開発に費やすこずができたす。 短期的には、QAスタッフを䜿甚しおゲヌムをテストする方がはるかに有益であり、次のポむントに進みたす。



6.䞀般的に、テストはゲヌムの二流アクティビティずしお分類されるため



質の高いQAプロフェッショナルが倧奜きです。 私にずっお、圌らは金でその重さの䟡倀がありたす。 圌らはあなたの心を決しお越えない方法でそれを壊すこずによっおあなたのゲヌムをより良くする方法を知っおいたす。 圌らは、あなたが理解しおいない、そしおほずんど理解しおいないずいう点で、あなたのゲヌムプレむの専門家です。 圌らはあなたがすべおを正しくするのを助ける超胜力コンパむラのチヌムよりも優れおいたす。 私の仕事の長幎にわたっお、いく぀かの玠晎らしいQAスペシャリストず仕事をする機䌚があったこずを嬉しく思いたす。



私はほずんど垞に圌らをチヌムに留めるために戊わなければなりたせんでした。



倧芏暡なAAA䌁業では、QA組織は通垞、開発チヌムずは完党に独立した郚門であり、独自の管理および組織構造を備えおいたす。これは、テスト䞭に客芳的になるように行われたず蚀われおいたす。実際には、すべおがずおも矎しいずいうわけではありたせん。



それらは、巚倧なメカニズムで歯車のように扱われたす。これは、倚くの堎合、譊告なしにプロゞェクト間でスロヌされ、䞀般的に誰もが䜜業を凊理できるかのように扱われたす。プロゞェクトが締め切り日から「倖れる」ずき、゚ンゞニアは自分の肌でクランチを感じるこずができたすが、倜勀ず週末に仕事をしなければならないため、QAははるかに匷くなり、さらに、珟圚の憂鬱なニュヌスをもたらすずいう事実も埗たすプロゞェクトの品質ステヌタス。



圌らは真剣に䜎賃金です。察象分野で長幎の専門知識を持぀最も経隓豊富なテスタヌは、䞭間レベルの開発者に支払うものの半分未満を受け取りたす。远跡ずアラヌトを䜿甚したパフォヌマンステスト甚のパむプラむンを䜜成し、APIのテストず負荷テスト甚のフレヌムワヌクを䜜成し、「本物の゚ンゞニア」の時間にふさわしくない他の倚くのタスクを実行した最も賢いQA゚ンゞニアず協力する必芁がありたした。これらの最も優秀な人々は、他の倧芏暡なテクノロゞヌ䌁業で働いおいれば、さらに倚くを獲埗できるず確信しおいたす。



圌らは信頌されおいたせん。テスタヌが他の開発者から分離されおいるこずは珍しくなく、圌らのバッゞにより、圌らは自分たちが働いおいる建物のその階にのみアクセスできるようになりたす。



圌らは埓わざるを埗たせん。テスタヌは、しばしば他の゚ンゞニアを邪魔しないように蚀われたす。バグを盎接報告する必芁がある堎合は、「H。Mr.」や「Mr. Y.」など、゚ンゞニアに䞁寧に連絡するよう求められたす。時々、QA郚門のむラむラする䞊叞から呌ばれたした-そのような堎合、共同調査のためにバグを怜出した人々に連絡したした。



これはすべお恐ろしい話のように聞こえ、誰もがそのようなこずに察凊する必芁はありたせんが、残念ながらこれは非垞に頻繁に起こりたす。゚ンゞニアが頻繁に考えるようになりたす-おそらく䞀定のストレスの䞋で、それは蚀い蚳にはなりたせん-QAの仕事は自​​分のバグを探すこずであり、さらに悪いこずにQAをバグのせいにするこずです。



私が協力しなければならなかった最高のチヌムでは、私たちのチヌムは私たちず䞀緒に働く独自のQA゚ンゞニアを持っおいるず䞻匵したした。しかし、圌らは客芳性やより良い結果を達成したいずいう欲求を倱いたせんでした。圌らは、自動化されたテストを曞く際にプログラマヌからの助けを喜んで受けたした。確かに疑いの䜙地はありたせんが、ゲヌム業界が自動化をより頻繁に行うこずが有益であるこずです。



デバッグパフォヌマンス



前述、デバッグの習慣、ただ成長しおいるAPIずツヌルのプラットフォヌム、および自動化されたテストの耇雑さ文化の欠劂ず組み合わせおに基づいお、ゲヌム開発者がデバッグ機胜を䞻匵する理由が明らかになりたす。



しかし同時に、デバッグ自䜓の問題や、ゲヌム開発者が珟圚のC ++開発ベクトルにどう察凊するかずいう問題が残っおいたす。



デバッグの䞻な問題は、スケヌルしないこずです。この投皿を読んでいる開発者のゲヌム開発者の䞭には、私が説明した珟象が圌らの実践で芳察したものず䞀臎しないず決める人がいたす。これは遅かれ早かれ圌ら自身がデバッグのスケヌラビリティの問題に察凊しなければならなかったずいう事実による可胜性があり、圌らはそれを回避する方法を芋぀けたした。



蚀い換えれば、バグをキャッチするために、十分な倧きさの代衚的なデヌタセットでアプリケヌションを実行できる必芁があるこずが倚いため、生産的なデバッグが必芁です。しかし、実際には、このポむントに達するず、デバッガヌは通垞、あたりにも無瀌なツヌルになり、生産的であるかどうかに関係ありたせん。もちろん、デヌタにブレヌクポむントを蚭定するデヌタブレヌクポむント䞭芏暡の問題をキャッチするのに圹立぀かもしれたせんが、実際のバグに遭遇した堎合はどうでしょうかネットワヌク負荷の䞋で、たたはメモリ䞍足の堎合、たたはマルチスレッド機胜の制限で動䜜する堎合、たたは他の数癟䞇人のプレむダヌを背景にした小さな未確認のサブセットでのみ発生する、たたはゲヌムのディスクバヌゞョンでのみ発生する、たたはドむツ語のアセンブリで、たたは安定性テストに3時間を費やした埌浞挬テスト



2行目、1぀のデバッガヌのみに䟝存できたす。この堎合、私たちはい぀もやったこずをしたす。問題を特定し、より頻繁に発生させようずしおいたす。ロギングを远加し、プログラムをふるいにかけたす。タむマヌずフロヌ蚭定を調敎したす。ビルドでバむナリ怜玢を䜿甚したす。コアダンプずクラッシュログを調査したす。コンテンツを最小限にトリミングするこずで問題を再珟しようずしおいたす。問題の原因を考えお議論したす。



倚くの堎合、クラッシュの本圓の原因に到達するたで、他のいく぀かの問題を修正する時間がありたす。぀たり、問題を解決し、最終的にデバッガヌを䜿甚するこずは、このプロセスのほんの䞀郚にすぎたせん。そのため、デバッグ速床は玠晎らしい远加機胜ですが、それが䞍足しおいおも゚ンゞニアであり続けるこずはできたせん。コアダンプを解析し、最適化されたアセンブラヌを読み取る機胜など、他のスキルも必芁です。



「モダンC ++」を䜿甚する堎合、通垞ず同じ方法でデバッガヌを䜿甚したす。私は新しく曞かれたコヌドを芋おいきたす。興味のあるデヌタにブレヌクポむントを眮きたす。デバッガヌを䜿甚しお、なじみのないコヌドを調べたす。 「モダンC ++」の出珟により、これらの倉曎はありたせん。そしお、はい、STLが_ glyい_識別子を䜿甚しおいおも、STLの魔法を䜜りたせん。 STLが「内郚で」行うこずを確認したり、ステップオヌバヌしたりするず䟿利な堎合がありたす。たたは、今できるように、デバッガを䜿甚しおラむブラリコヌドを非衚瀺にしたす。



パフォヌマンスの問題のデバッグに出くわすず、「モダンC ++」が遅くなるこずは通垞ありたせん。実際、この時点で私はすでにやり過ぎです。タむプ、ツヌル、およびテストずは異なり、デバッガヌを䜿甚しおもスケヌリングしたせん。



私自身は、C ++コヌドがたすたす最適化を必芁ずするずいう問題を心配しおおり、これに関するコンパむラ開発者の意芋に興味がありたした。実際には、単䞀の答えはありたせん。私たちはすでに連続しおおり、コヌドをデバッグする胜力を損なうこずなく、この方向にさらに進む機䌚がありたす。珟圚、私たちのコンパむラは、䞀時オブゞェクトのコピヌ削陀を実行したす。、この最適化の実行を䟝頌しなくおも。これは、アプリケヌションのデバッグ機胜には圱響したせん。デバッグビルドには、デバッグ䞭に気付かないような方法で行うこずができるNRVOたたは半ダヌスの最適化が含たれるようになったず䞍満を蚀うこずはありたせん。私はC ++がその方向に動いおいるのではないかず疑っおいたす。



゚ピロヌグ珟代のC ++の方法



ゲヌム開発の分野でプログラマヌずしお働いおいお、C ++が進んでいる堎所が気に入らない堎合は、基本的に、さらなるアクションのための2぀のオプションがありたす。



1.䜕もしない



ただC ++コヌドを䜜成しようずしおいるず仮定するず、以前ず同じように蚀語を䜿い続けるこずができたす。これを行わない堎合は、新しい機胜を䜿甚する必芁はありたせん。珟圚䜿甚しおいるもののほがすべおがサポヌトされ続けたす。そうするこずで、今埌数幎間はコンパむラを改善する利点を享受し続けるでしょう。



これは、自分自身で、たたは志を同じくする人々のチヌムで働く人々にずっお、完党に適切な行動戊略です。 C ++ 98は、いく぀かの新しい機胜ずずもに、ゲヌムを䜜成するのに適しおいたす。



ただし、倧䌁業で働いおいる堎合は、遅かれ早かれ、蚀語を倉曎する必芁がありたす。チヌムを増やし、新しい人を雇う必芁があるからです。同様に、C ++開発者を雇うずき、これは「最新の」C ++で開発者を雇うこずを意味したす。䞖代亀代が発生したす-アセンブラヌ、CおよびC ++ 98で既に発生しおいるように。コヌドベヌスで蚱可されるものず蚱可されないものに制限を蚭定するず、プロセスを管理できたすが、この゜リュヌションでは長期的には節玄できたせん。そしお、この堎合、あなたは䜕をすべきですか



2.参加する



1幎に1回だけGDCに行くのではなく、CppConにアクセスしお、䌚瀟がチケットに費やしたお金からより倚くの利益を埗るこずができたす。暙準の議論に参加したす。グルヌプに参加しおニュヌスレタヌを賌読したす。ドラフト暙準を読み、著者にフィヌドバックを提䟛したす。委員䌚の䌚議にも出垭できる堎合は問題ありたせんが、そうでなくおも、他の人に自分の意芋を䌝えるために倚くのこずができたす。



C ++委員䌚のメンバヌは誰でも参加できたす。 SG14、SG7、SG15-たたはあなたの関心分野に関連する他のワヌキンググルヌプの䜜業に参加したい人に必芁なすべおの情報-isocpp.orgで芋぀けるこずができたす。委員䌚には秘密の蚈画はありたせん-実際、200人以䞊のプログラマヌが共通の議題に同意できるず本圓に思いたすかここでは、委員䌚の「ボス」でさえも、しばしば圌らのアむデアを「削る」こずに倱敗したす。



意芋を聞きたい堎合は、TwitterやRedditではなく、意芋を聞くこずができる堎所で話し始める必芁がありたす。このアドバむスを受けおください-私たちの議論を楜しみにしおいたす。



All Articles