シアトルの声セルゲむ・テプリャコフず話す

私の最埌の2぀の蚘事は、過去の䌚議の講挔者ぞのむンタビュヌです。 「ある小さな家族事情のために」この䌚議で䞀床も話すこずを拒吊した男性ず話すこずは、私にずっお興味深いようでした。 この人物は、MVPのSergey SergeyT Teplyakovであり、デザむンパタヌンに関する優れた本の著者であり、TDDの熟達者であり、珟圚はMicrosoftの゜フトりェア゚ンゞニア向けツヌルの開発者であり、Code Contractsラむブラリのメンテナヌです。



猫の䞋には、䌚議、TDD、ペアプログラミング、アヌキテクチャコヌド契玄、Habrに関する倚くのテキストがありたす。



リスナヌの芳点からの䌚議に぀いお



セルゲむ、こんにちは。 なぜ人々は䌚議に出垭するのですか なぜ蚪問するのですか



正盎に蚀うず、もし私がそこで講挔をしおいなければ、私は本圓にカンファレンスに参加したせんでした。 しかし、そこに来るたびに、そこから匕き出された䞻なものはむンスピレヌションでした。 はい、それは高すぎるように聞こえるかもしれたせんが、䌚議ず賢い同僚ずのコミュニケヌションは、私にずっお垞に最高の動機でした新しいこずを孊ぶ、叀いものを共有する、たたはスペシャリストずしおそしお個人ずしお私の開発を続けるこずです。



倚くの本を読んでレビュヌしたした。 䌚議に関しお䜕をアドバむスできたすか



かなり䞀般的な質問に特定の質問をするこずはかなり困難です。 そこで必芁なものを正確に理解するこずが重芁ですバッテリヌを充電したすか 面癜い人ず知り合いになり、そしお/たたはチャットしたすか 特定の知識を補充したすか 埌者の堎合、䌚議の代わりに賢明な本を2、3枚取る必芁がありたすが、最初のポむントの1぀である堎合は、䌚議の質ず面癜さを確認し、行くかどうかを自分で決める必芁がありたす。



プログラムに関する䌚議の評䟡方法



䌚議はスピヌカヌによっお刀断される必芁があり、トピックではなく人に行く必芁がありたす。

アンドレむ・アキンシンが話すなら、圌が䜕を話しおいるのか、ストップりォッチに぀いお、たたはパフォヌマンスにたったく関係のないトピックに぀いお圌の話を聞きに行きたす。 私は品質が高いず確信しおいるので、それから倚くを孊びたす。



さお、スピヌカヌをどのように評䟡したすか



実に簡単です。 スピヌカヌが良いパフォヌマンスで知られおいる堎合-行っおください。 話し手が銎染みがなくおも、流zhなgooglezhでブログ、github、habrにアクセスできる堎合は、資料を評䟡しおください。 話し手が銎染みがなく、グヌグルに慣れおいない堎合は、別のものを探したほうがいいでしょう。



スピヌカヌの芳点からの䌚議に぀いお



蚪問すれば明らかです。 䌚議で人々が話す理由を教えおください。



これは、自己実珟たたは特定のレベルの開発の確認の問題だず思いたす。「はい、倚くの人に出かけ、経隓を共有するこずを恐れないずき、私は特定のレベルに成長したしたポゞティブずネガティブ。 共有するのが面癜い有甚なこずを十分に知っおいるので、知らないこずを恥ずかしく思いたせん。」 私にずっお、䞀般的に、特に䌚議で話すこずは、開発のそのような指暙でした。 それはすべお、コヌヒヌを飲みながら䌚話をするこず、たたは同僚ず自信を持っおコミュニケヌションを取り始め、経隓を共有し、意芋を䞻匵するようになったずきに、新しいチヌムに泚ぐ過皋で始たりたした。 その埌、あらゆる皮類の䌚議やナヌザヌグルヌプでロヌカルパフォヌマンスが行われ、その埌数癟人ず話すのが怖くなくなりたした。



別のプラス準備プロセスにおける知識の怜蚌。 あなたはフレヌズを知っおいたす䜕かを孊びたいなら、別のものを教えおください。 パフォヌマンスの準備には、パフォヌマンス自䜓の10〜20倍の時間がかかる可胜性があり、この間、1぀のトピックを意図的に掘り䞋げたす。 もちろん、蚈画を立おずに興味深いこずを䌝えたり曞いたりする専門家もいたすが、圌らはほずんどいたせん。 CLRのアヌキテクトの1人であるChris Broomeのみを思い出すこずができたす。 圌はほずんどの投皿を自分の頭から盎接曞いおおり、 か぀お 「私は远加の研究を必芁ずしないトピックを取り䞊げおいたした。 「いく぀かの質問には答えがなかったため、この蚘事を予備的なレビュヌのために提䟛したした。」 したがっお、この䌚議は、知識を構造化するために、より詳现に䜕かを研究する動機ずなっおいたす。



しかし、「今、私は十分な有甚なこずを知っおおり、私は本圓に䌝えるべきこずを持っおいる」こずをどのように理解したすか



私が蚀ったように、「猫の䞊で」玠材を実行する最も簡単な方法。 コヌヒヌの集たり、䌁業のスピヌチ、ブログのメモなど、さたざたな方法がありたす。



誰かの知識を怜蚌するこずは非垞に重芁です。そうするこずで、知識が珟実ずあたり䞀臎しおいない、たたはそれほど深くない、たたはおもしろくないこずがわかりたせん。 GitHubやその他のオヌプン゜ヌスを䜿甚しお、゚クスペリ゚ンスを怜蚌するオプションがありたす。 Roslinのいく぀かのバグを修正し、プロゞェクトのベテランたたは他の参加者によっお承認された蚭蚈オプションを提案した堎合、これはあなたの経隓ず成熟床の十分な蚌拠になりたす。



぀たり、あなたは詳现に準備しおいたせんか キャンバスだけ



キャンバス、矩務的なむンタヌリニアパフォヌマンス䞭は芋おいたせんが、それだけです。 話すこずず投皿を曞くこずの違いはそれほど倧きくありたせん玹介、ストヌリヌ、結論。 あなたは考えを䞎える必芁があり、読者が䜕を知っおいるのか、どの堎所を説明する必芁があるのか​​、どの堎所に蚀及するのか疑問に思うでしょう。 確かに、投皿で䜕かを参照するこずはできたすが、䌚議では「みんな、最初にこれら3぀の蚘事を読んでから戻っおきおください」ず蚀っおも倱敗したす。



アメリカで挔奏したすか



ただです。 優先順䜍は異なりたす。 さらに、話されおいる英語のレベルでは、流speakに話すこずができたせん。 私が蚀ったように、私は通垞、事前にすべおを蚀うのではなく、単に蚈画を準備しおそれに぀いお話したす。そのようなこずにおいお、蚀語は非垞に重芁です。 準備ができおいる以䞊に䜕も蚀えないずき、冗談を蚀うこずができないずき、話すこずは困難です。 そしお自信が必芁です。 私たちにはMSの䌝統がありたす時々、昌食付きの郚屋にチヌムやプロゞェクトずしお集たり、そこで誰かが同僚に興味深い技術的なこずを話したす。 私はそこでしか話せたせんが。



MSの集たりの察象者は䜕ですか 䌚議ず比范しお



リスナヌの䞭には、パタヌンを枬定するために来る人もいたす。 これは通垞、同僚の間では起こりたせんが、䌚議で起こりたす。 あなたはそのような仲間ず働くこずができなければなりたせん。



私は認めるこずを恥じおいたすが、䞀床私はそのような同志ずしお行動した。 そのような䜜業方法は



ここでは、リスナヌが䜕を望んでいるかを理解する必芁がありたす。 たぶん、質問をしおいる人は本圓に䜕かを理解しようずしおいたす。たずえば、圌は特別な䞋請け業者であるか、別の蚀語の豊富な経隓を持぀同僚です。 あなたは質問に答えるこずができるず思うが、それは長くお難しいです-スピヌチの埌に議論するこずを申し出たす。 「わからない」ずいう答えが衚瀺されたら、「わからない、グヌグル、埌で連絡したす」ず蚀っおください。 リヒタヌに぀いお蚀及する堎合があり、「リヒタヌはそう蚀わなかった...」、「これはそうではなかった...」などの論争があなたから始たる堎合がありたす。



TDD



叀兞的なスキヌムテストコヌドのリファクタリング。 あなたの蚘事から私が理解しおいる限り、あなたはそれに埓っおいたす。 それに埓うべき時ずそうでない時を決定する方法は 「たあ、プロゞェクト党䜓が既にテストなしであり、この機胜に぀いおは䜕も曞かない」に転がらないようにするにはどうすればよいですか



正盎なずころ、私はその叀兞的なプレれンテヌションでTDDをほずんど䜿甚しおいたせん。 私は倚くのテストを曞きたすが、コヌドの前にそれらを曞きたせん。 私のルヌプは次のようになりたす。





テストファヌストはたったくありたせんが、コヌド内のデザむンを「確認」し、テストを䜿甚しおその正圓性を怜蚌する方が䟿利です。 テストの助けを借りおデザむンを「成長」させるこずは私にずっお䞍䟿です;私にずっお、「テスト」から「コヌド」ぞの切り替えは非垞に気が散りたす。



次に、2番目の質問「ロヌリングに抵抗する方法」に移りたしょう。 ここではすべおが簡単です。



数幎前、私は顧客に単䜓テストを促進「販売」しおいたした。 そしお、圓時も今も、回垰コンポヌネントやデザむンの品質などに焊点を合わせたせんでした。 ここで、そしお今、テストがどのように圹立぀かを芋せようずしたした。「OK、新しい機胜を远加する必芁がありたす。 しかし、サヌバヌを展開しお健党性を確認し、UIの73ポむントをクリックする代わりに、最も耇雑な機胜をテストする単玔な単䜓テストを远加しおみたせんか はい、この機胜を個別のコンポヌネントに分離する方法に぀いお少し考える必芁がありたすが、手動テストではこのすべおのかすよりも高速です。



蚀い換えれば、自明でない耇雑さを最小限に抑えお远加する必芁がある堎合、新しいロゞックを別のクラス/メ゜ッドに配眮しお、簡単にテストできるようにする方法を考えたす。 すべおが非垞に実行されおいるずき、それは垞に簡単であるずは限らず、垞に機胜するずは限りたせんが、奇劙ではないので、私にずっおはほずんどの堎合に機胜したす。



既存のクラスのグルヌプに倉曎が加えられるず、すべおが頻繁に起動され、新しい機胜が叀いバヌゞョンのバリ゚ヌションになるこずがありたす。 この堎合、これらすべおを統合テストでカバヌする方法を怜蚎し、既存のコヌドの修正が正圓化されるかどうかを決定したす。これらの郚分に倧きな倉曎があるかどうかを刀断したす。 私たちが積極的に開発しようずしおいる悪いコヌドに぀いお話しおいるなら、重芁な機胜の倉曎を行う前に、より健党な倉曎を正圓化しようずしたす。 コヌドが死んでいお実際に開発されない堎合は、ペンでテストする必芁がありたす。



い぀テストを曞く必芁がありたすか たたは、PSスクリプトに至るたで、すべおをテストしおいたすか



意味のないテストでカバヌするこずはたくさんありたす。 PSスクリプトもその1぀です。 PowerShellはその性質䞊、環境ず密接に連携するため、スクリプトを単独でテストするこずは非垞に困難です。 さらに、PowerShellはちょっず倉わったものであり、実際のデヌタがないず、PowerShellに䜕を期埅するのか、スクリプトが機胜するかどうかがわかりたせん。



私が盎接テストしないものはかなりありたす。 レガシヌコヌドが倧量にある堎合は、いく぀かの統合テストが必芁です。新しいコンポヌネントに぀いおは、カバレッゞの高い単䜓テストを既に䜜成する必芁がありたす。 テストでカバヌされるべきものがありたすが、これらは単䜓テストではなく、統合テストであり、基本的な劥圓性をチェックする可胜性が高いです。 これには、デヌタベヌスおよびWCFなどの通信に関するテストが含たれたす。



他の倚くのものず同様に、テストはツヌルであり、それ自䜓が目的ではないこずを理解する必芁がありたす。 この堎合、プロセスのツヌルに察する態床を倉曎する必芁がありたす。 倚数のテストがあり、それらが䞀定の回垰をキャッチする堎合-それは良いこずです。 倚くのテストがあり、それらが絶えず故障しおいる堎合、これは悪いこずです。 しかし、ここでは、極端なものから別の極端なものに急ぐこずはせず、すべおのテストを無意味だず考えお、䞀挙にすべおのテストを釘付けにしないこずが重芁です。 ここで、テストの方法、テストの内容、デザむンが良いかどうかを考える必芁がありたすか 通垞、脆匱なテストは、より䞀般的な問題の症状です-蚭蚈、接続性の問題、および抜象化動䜜ではなく実装の詳现をチェックするテストの問題。



ペアプログラミング



テストの䜜成はペアプログラミングずどのように組み合わされたすか ペアプログラミングに関する蚘事がいく぀かありたしたが、テストずの盎接的な぀ながりに気付きたせんでした。



理論的には、ペアで䜜業するこずは、䞀方がテストで、もう䞀方がロゞックである堎合、圹割の分離を意味したす。 残念ながら、私はこの原理に埓う叀兞的なペアプログラミングの経隓があたりありたせん。



その結果、私は垞にペアで仕事をしたので、䞡方にずっお快適でした。 これは、テストが必芁ず思われるように䜜成されたこずを意味したす。 倚くの堎合、これらはかなり倧きなチャンクをカバヌする統合テストであり、その埌、実装に協力したした。 次に、完党なテストを1぀ず぀远加したした。



しかし、ここで、TDDがある皋床個人的な問題である堎合、ペアのTDDはこのペアの問題であるずいうこずを理解する必芁がありたす。 カップルは効果的になる方法を決定する必芁がありたす。 私の仕事では、今やる䟡倀のあるこずずそうではないこずに぀いお話すこずをheしたせんでした。 ドグマはないはずです。



恥ずかしがり屋のように、積極的なパヌトナヌず亀枉する方法は



私はあたり経隓がありたせんが、ペアプログラミングは、米囜でもりクラむナでも、業界ではかなり珍しいアプロヌチです。 プロゞェクトには倚くの優秀な人がいたすが、「倩井から」パヌトナヌず逃す準備ができおいたせん。 私の意芋では、ペアプログラミングは、ある人がコヌドに぀いお正確である堎合、他の人が正確でない堎合、たたは他の人がすばやく曞く堎合、他の人が思慮深い堎合、たたは他の人が恥ずかしがり屋である堎合は効果がありたせん。 私がそのようなペアにいた堎合-私はこれを避けようずしたす。 玔粋に心理的にアプロヌチする人はほずんどいたせん。 ペアプログラミングに぀いお話しおいたす。 メンタヌが必芁な堎合-90が私に合っおいるず思うので、圌らぞのアプロヌチを芋぀けたす。



どのようにしおペアでコヌディングを始めたしたか



私はハッカ゜ンに参加し、同僚の1人ず協力しお次のバヌゞョンのコヌド怜玢を䜜成したした。これはreferencesource.microsoft.comの怜玢゚ンゞンです。以前のバヌゞョンでは、倚くの䜙分なデヌタが蚘憶されおいたした。 Elastic Searchに適した経隓があり、぀たずいた。 あなたはハッカ゜ンを知っおいたす時間は短く、あなたは倚くのこずをしなければなりたせん、仕事を分ける時間ず機䌚がありたせんでした、そしお私たちは同じコンピュヌタヌに1぀のコヌドを入力したした。 うたくいきたした。それから、いく぀かのタスクは数回コヌディングされたした。数か月埌、同じプロゞェクトになりたした。 しかし、これもたた珍しいこずです。 りクラむナでは、これに぀いおはたったく聞いおいたせんでした。MSでは、あるチヌムが通垞のペアプログラミングを緎習しおいるこずを聞きたしたが、これはほんの䞀瞬です。



䜕らかの理由で、必芁以䞊に長く、䞍安定すぎるず䞻匵するこずが同僚に起こりたした。 そのような議論はPPず考えるこずができたすか



これは、特に誰かがチヌムを初めお䜿甚する堎合に垞に圓おはたりたす。 慣れるず空腹になりたす-ペアリングを詊みるこずができたす。 誰が䜕の䟡倀があるかがすでにわかっおいるずき、「たあ、頑固な人ですが、賢明な考え、たあ、私も莈り物ではありたせんが、利益をもたらしたす」ず気づいたら、詊しおみおください。 それ以前は、コミュニケヌションが非垞に難しく、ほずんど利益がありたせん。 非垞に迅速に適応するペアプログラミングプロフェッショナルず䞀緒に仕事をした堎合、詊しおみるこずができたすが、この珟象は通垞の「枩宀」よりもさらにたれです。



ペアプログラミングの準備はどのようにしおいたすか



たさか。 䞀般的に。 䜜業を開始する前にコンテキストを調べる䟡倀がある堎合を陀き、䜕も必芁ありたせん。



蚀語障壁はどのように干枉したすか



通垞、干枉したせん。 䞀般的なプロゞェクト、共通のプログラミング蚀語、䞀般的な䞻題分野。 最も極端な堎合、玙を取り、その䞊に䜕かを描くこずができたす。



機噚の障壁



はい、これは叀兞です。 私の盞棒Rは嫌いです。むしろ反察です。 時々それで笑いたす。 ぀たり、そのようなコヌドを䜜成し、䞭括匧を付けるず、すべおの配眮が習慣から飛び出し、「停止、トむレ、調理しない、Ctrl + Z、すべおがキャンセルされたす...」のようになりたす。 ささいなこず、他のハむフネヌション、かっこ、ホットキヌのようですが、プロセスを芋るのは楜しいです。 䞀方、ツヌルを䜿甚するスキルを孊ぶには良い方法です。 最近、「認めたくないが、このR機胜は気に入っおいる」ずいうフレヌズを聞いたこずがありたす。 ぀たり、最初は、倧芏暡なプロゞェクトのブレヌキが原因でRが奜きではありたせんでしたが、今では高く評䟡され始めおいたす。 さらに、diff-mergeのツヌルに違いがありたした。アナログを芋るのは面癜かったです。 䞀般に、私は、アプロヌチから蚭蚈たで、䜿甚するツヌルたで、プロセスのすべおを芳察するのが奜きです。 ぀たり、マニュアルを読むのではなく、生きおいる人が「オンザフラむ」でタスクにどのように察凊するかを芋おください。 ずおも快適です。



コヌド契玄



あなたはコヌド契玄の開発者の䞀人です。 このプロゞェクトをどのように始めたしたか



私は契玄プログラミングの長幎のファンです。 私の愛は、バヌトランドマむダヌの著曞「オブゞェクト指向の゜フトりェアシステムの構築」に粟通しおから始たりたした。 責任の芳点から蚭蚈を考えるず、開発を倧幅に簡玠化でき、よりクリヌンにするこずができたす。



CodeContractsラむブラリは、これらの目的のために.NETプラットフォヌムに長く存圚しおおり、私はそれを長い間䜿甚しおいたす。 MSに移行する玄1幎前に、Rのプラグむンを䜜成しお、契玄プログラミングを簡玠化し、これを䜿甚したした。 プラグむンは、兞型的なコヌドコントラクト゚ラヌをキャッチし、Contract.Requiresarg= Nullコントラクトを远加できるようにし、他の倚くの䟿利なこずを行いたす。 MSでの最初の1幎で、Applications Insights甚の小さなツヌルを䜜成したした。 Code Contractsの䜜成者の1人であるMike Barnetにずっお有甚であるこずが刀明したした。 その埌、別のチヌムに移りたしたが、このチヌムはMightずMainでCode Contractsを䜿甚しおいるこずがわかりたした。これはMSのCode Contractsの最倧のナヌザヌの1人です。 VS 2015のリリヌス埌、コヌドコントラクトを攟棄するか、ラむブラリを修正しおC6.0をサポヌトできるようにしたした。 その結果、私はコヌドコントラクトの最終決定に1か月半から2か月間積極的に取り組みたした。 私がgithubで最も掻発だったのはこの期間でした。 新機胜の远加に加えお、コヌドコントラクトでは通垞サポヌトされなかった倚くの機胜、特に非同期メ゜ッドの事埌条件が修正されたした。 その埌、私は図曞通のメンテナヌの䞀人になりたした。 今、私は自由な時間にプロゞェクトをしおいたすが、私は望んでいるよりはるかに少ないです。



なんで



その他の優先事項。



新しいプロゞェクト



新芏ですが、コヌド契玄に関連しおいたす。



わかりたせん。



コヌド契玄には、開発を困難にする重倧な問題がいく぀かありたす。 プロゞェクトは、コヌドが混乱する堎所にある倧芏暡で耇雑な数十䞇行です。 さらに、このラむブラリは、特定の.NET蚀語たたはコンパむラに瞛られるこずなく、ILコヌドを分析および倉曎するように蚭蚈されおいたす。



ラむブラリには3぀の䞻芁なコンポヌネントが含たれおいたす。





このアプロヌチには重芁な機胜がありたす。異なるコンパむラヌおよび同じコンパむラヌの異なるバヌゞョンでさえ、同じ構文構成に察しお異なるILコヌドを生成したす。 たた、CCIはILのシンラッパヌのみを提䟛したす。ラムダ匏、反埩子、たたは非同期メ゜ッドはありたせん。 特定のクラスのオブゞェクトを䜜成しおいるこずがわかりたすが、これがプログラマヌによっお䜜成された実際のクラスであるか、ラムダ匏を䜿甚した結果ずしおコンパむラヌによっお生成されたクラスであるかはわかりたせん。 より正確には、コンパむラはコヌドを生成するために特別なパタヌンを䜿甚するため、これに぀いお知るこずができたす。 したがっお、ccrewriteはコヌドを分析し、型名を調べお、それがクロヌゞャヌクラスか、むテレヌタヌたたは非同期メ゜ッドのクラスか、たたは他の䜕かかを刀別したす。



この堎合、パタヌンはコンパむラの異なるバヌゞョンで倉曎されたす。 同じラムダに察しお、C5.0はデリゲヌトを持぀静的フィヌルドを生成し、新しいタむプのクロヌゞャヌクラスがC6.0に登堎したした。C開発者は、むンスタンスメ゜ッドが静的メ゜ッドよりも安䟡であるこずを発芋したため、静的倉数の代わりに「非キャッチ」ラムダ匏のシングルトンが生成されるようになりたした。



非同期メ゜ッドに぀いおは、完党にクレむゞヌな䟋を挙げるこずができたす。 C6.0コンパむラヌは、メ゜ッド内のawaitステヌトメントの数に応じお異なるコヌドを生成したす。awaitがない堎合は、1぀のコヌドが取埗され、awaitが1぀だけの堎合は、他のコヌドが取埗されたす。



そしお、これらすべおの詳现を考慮する必芁がありたす。コンパむラが蚀語構造の凊理を開始するたびに、怜蚌者ずリラむタの䞡方を倉曎する必芁がありたす。蚀語の倉曎はそれぞれ倧きくお深刻な䜜業です。新しい蚀語構成のサポヌトを远加するだけでなく、すべおの叀い構成が匕き続き機胜するこずを確認し、䞋䜍互換性も維持する必芁がありたす。



別の問題バグを修正するのは非垞に困難です。 2行の修正のために8時間座るこずができたす。したがっお、䞀般化されたクラス内で生成された䞀般化されたメ゜ッドで、特定の堎合、匕数の型がTではなくTであったずきに、バグの1぀に苊劎したしたこれは、䞀般化されたメ゜ッドパラメヌタヌではなく、䞀般化されたタむプパラメヌタヌが䜿甚されたこずを意味したす。



䞀般に、CCIによっお生成されるASTは䜎すぎるため、サポヌトが耇雑すぎたす。蚀語\コンパむラの新しいバヌゞョンごずに、たすたす困難で感謝のない䜜業を行う必芁がありたす。



別の問題ビルド時間に察するCC Rewriteの悪圱響。CC Rewriterは非決定的です。぀たり、1぀のDLLを取埗し、CC Rewriterを2回呌び出したす。2぀の異なるバむナリを確実に取埗できたす。最新のビルドシステムでは、これは非垞に倧きな問題です。実際、キャッシュおよびむンクリメンタルビルドの機胜は倱われたす。぀たり、CC Rewriteを䜿甚しお1぀のファむルに倉曎を加えた堎合、゜リュヌション党䜓を再構築する必芁がありたす。CC Rewriteを䜿甚しない堎合は、1぀のプロゞェクトずそのすべおの盎接クラむアントのみを再構築できたす。数癟のプロゞェクトでCC Rewriteを䜿甚するず、ビルド時間が倧幅に増加したす。



さらに、CC Rewriterは曞き換え時にpdbをダりンロヌドしたすが、垞に正しく実行するずは限らず、デバッグに悪圱響を及がしたす。最近のものから、私の同僚はCCリラむタを無効にしないずデバッグに埓事できず、コヌルスタックがポップアップし、ロヌカル倉数が正しく衚瀺されず、デバッグ䜓隓党䜓が倱われたした。



これらの問題のため、同僚ず私は珟圚゜ヌスレベルリラむタSLリラむタに取り組んでいたす。぀たり、ILを操䜜せず、高レベルのコヌドを倉曎したす。欠点のうち、これはC専甚のナヌティリティです。



぀たり、Roslynツリヌを取埗しお倉曎し、コンパむラに枡したすかい぀もの定着剀



たさに。Roslynは、必芁なメカニズムを正確に提䟛したす。ワヌクスペヌスを取埗し、コントラクトぞのすべおの呌び出しを探し、必芁なフラグメントを挿入したす。



Roslynを䜿甚する堎合、C6.0に制限されおいたすか



ほが。実際、コンパむラヌずの統合に関心がありたすが、これは別の議論のトピックです。



゜ヌスレベルリラむタはどこにありたすか



これは、2人が芋おいる内郚補品です。圌はただ準備ができおいたせんが、私たちのチヌムで正しく働くようになり次第、共有したす。



パフォヌマンスに関する予枬はありたすか珟圚、コヌドコントラクトは「スロヌダりン」されおいるずscられるこずがよくありたす。



CC Checkは非垞に遅いです。正しく動䜜させるには、倧量の泚釈を配眮する必芁があり、10䞇行のコヌドのビルドには数分、堎合によっおは数十分かかりたす。その埌、結論を分析する必芁がありたす。぀たり、開発者の芳点から芋るず、遅くお非効率的なツヌルです。より正確には、アむデアは良いですが、タスクは非垞に難しく、ゆっくりず解決されおいたす。私はそれを積極的に䜿甚しおいる少数のチヌムを知っおいたす。私のチヌムは2幎前にそれを攟棄し、誰も再びそれを䜿いたがりたせん。



今CCリラむト。私が蚀ったように、それはビルドプロセスに倧きく圱響したす。たずえば、ロヌカルで無効にしおビルドマシンでのみ䜿甚するなど、有限のトリックがありたすが、それでも速床は䜎䞋したす。



さらに重芁なのは、ランタむムぞの圱響です。契玄では、远加の小切手を非垞に簡単に䜜成できたす。そのため、クラスに重い䞍倉匏がある堎合、各オヌプンメ゜ッドの最初ず最埌にチェックが远加されたす。たたはコレクション契玄-あなたはコレクション党䜓を繰り返す必芁がありたす。これは、コレクションで実行される5぀のメ゜ッドのチェヌンがある堎合に特に顕著になりたす。たたは、再垰チェックを呌び出しお、呌び出し芏玄を詳现に制限したす。スレッドをロヌカルに呌び出すこずにより、ブレヌキが远加されたす。このチェックを無効にするだけで、゚ンドツヌ゚ンドのパフォヌマンスが15向䞊したした。そのような詳现はあたりありたせんが、それらに぀いお知っおおく必芁がありたす。



䞀方、ビルド゚ンゞンを芋おいたす。これはシステム゜フトりェアであり、かなりのコヌドベヌスです。実行時のパフォヌマンスぞの圱響を最小限に抑えるために契玄を調敎する必芁がありたすが、契玄を拒吊したくありたせん。受信したクラッシュダンプ内の契玄からのメッセヌゞは倚くの有甚な情報を提䟛したす。



さらに、ほずんどのアプリケヌションでは、実行時のオヌバヌヘッドが最小になるず蚀わなければなりたせん。



぀たり、小芏暡プロゞェクトの堎合、蚭定なしでツヌルを䜿甚できたすか



小さいものに぀いおは、はい。媒䜓の堎合、前提条件ずオヌプンメ゜ッドのチェックのみを行うこずができ、その圱響は最小限になりたす。テストで慎重にカバヌされおいる䞻芁な機胜は、ランタむムからすべおのコントラクトを削陀するように構成できたす。このツヌルはカスタマむズ可胜です-䜿甚するこずはかなり可胜ですそしお䟡倀がありたす。倧芏暡なプロゞェクトでのみ調敎する必芁がありたす。



Habraに関する質問。









どうしお圌女のずころに来たの

うわヌ...それは長い時間でした。私は2010幎にrsdnがすでに死に、dou.uaはすでに死んでいたが、あたり人気がなかったので、Habrに来たした。圓時のHabrは、倚くの深い技術的ポスト、そしお最も重芁なこずずしお、高レベルのS / Nで積極的に開発を進めおいたした。読むのが面癜かった、曞くのが面癜かった。そこの出版物-それはある皮の技術的な問題を議論する最も簡単な方法でした。はい、すべおのコメントが同等に有甚ずいうわけではありたせんでしたが、その時点でそれは私にずっお興味深いものでした。



どうしおHabrを離れたのですか



たず第䞀に、私は倉わりたした;私の興味は倉わりたした。私はブログに曞き続け、しばしばより哲孊的なトピックを遞択したす。そしお、私ず私の興味を知っおいる興味深い聎衆をすでに開発しおいたす。ブログずHabréで䞊行しお曞くこず-絶察に「正しく」ではありたせん。私の最埌の「䞊行」投皿がブログでより倚くのコメントを収集した埌、私は実質的にHabrぞの曞き蟌みを停止したした。



私はただHabrを読んでいたすが、゜ヌシャルネットワヌクやその他の方法のおかげで頻繁に読んでいたす。 RSS経由で読むこずによるノむズレベルは私にずっおは高すぎたす。明らかに、Habrの芖聎者にずっお興味深いものすべおに興味があるわけではありたせん。同時に、思慮深く、深く、興味深い優れた蚘事をよく目にしたす。



さらに、Habrは倚くの有甚な情報を匕き出すこずができる最倧のITポヌタルです。特定のトピックを勉匷しおいたすが、ロシア語のセグメントを調べおいるず、ただそこにいるこずがよくありたす。






著者からSergeyずの䌚話はやや混oticずしおおり、すぐにいく぀かの無関係なトピックに觊れたした。私が䜕かを芋逃した堎合-セルゲむは午埌ずコメントで利甚可胜です。答えは通垞よりも倚くなる可胜性がありたす。タむムゟヌンを考慮しおください。シアトルの時間はモスクワず11時間異なりたす。



All Articles