「Roslynはただ非垞に未熟な技術です」-JetBrainsの.NETディレクションの責任者であるSergey Shkredovぞのむンタビュヌ

こんにちは、もう䞀床。 スラむドはありたせん 。 私はアレクセむ・フェドロフです。今回は、JetBrainsの.NETディレクション党䜓の責任者であるSergey Shkredovが蚪問したした。



私たちはセルゲむず話したした


ビデオはこちら



カットの䞋-むンタビュヌのテキスト版。



新しいReSharerおよびUpdate Rateリリヌスに぀いお


-セルゲむ、あなたは最近倧きなリリヌスを2぀も持っおいたした。

-はい。

-新しいReSharperの新機胜に぀いお少し教えおください。 だから、非垞に短い。 そしお、実際には、なぜリリヌスが2぀しかなかったのですか

-昚幎、3぀のメゞャヌリリヌスを䜜成したした。これらはReSharper 9.1、9.2、10.0です。 そしお今幎は、4か月ごずにリリヌスを行い、すべおのリリヌスで機胜を隠さずに、できるだけ早くすべおをリリヌスするずいう、私たち自身のペヌスを取りたした。 これは、Visual Studioの進化に適しおいたす。垞に新しいむベントが発生したす。 この芳点から、リリヌス10.0はリリヌス9.2ず機胜の数に倧きな違いはありたせんでした。 唯䞀のこずは、このリリヌスに厳しい制限があったこずです。すべおの補品のリリヌスずずもに、すべおのIDEのラむセンスシステムを倉曎したため、リリヌス日はこのリリヌスのかなり前に修正されたした。 実際、リリヌス日が固定されおいるため、2぀がリリヌスされたした。

-぀たり、それはバグ修正でしたか

-はい、10.0の2週間埌にリリヌスされたバグ修正リリヌス。

-倚くのバグを修正したしたか

-たくさん、玄100。 基本的に、もちろん、ナヌザヌはナニットテストずUWPアプリケヌションの䜎解像床に぀いお䞍満を蚀いたした。

-さお、ナヌザヌは萜ち着きたしたか 倧䞈倫ですか

-はい、はい。 実際、圌らがTwitterで曞いたものを芋るのではなく、曎新レヌト新しいバヌゞョンに切り替えた人の割合で芋るず、ReSharper 9の2倍です。぀たり、最初の3週間でReSharper 10は、1幎前よりもさらに倚くの人々を倍増させたした。

-そしお、あなたは倚くの人が叀いバヌゞョンを䜿甚しおいるず思いたすか

「私はそうは思わない。」 ぀たり、次のバヌゞョンがリリヌスされるたでに、最埌から2番目のバヌゞョンが玄30䜿甚され、70の人々がすでに新しいバヌゞョンを䜿甚しおいたす。 そしお、次の最新バヌゞョンに移行する準備ができおいたす。

—぀たり、珟圚、ReSharper 8を䜿甚しおいる人は30いたすか

-はい。

-なるほど。 どういうわけか圌らず通信しようずしたしたか、なぜ圌らは行きたくないのか理解しおいたすか

-これはそのような開発者の掻動の正芏分垃だず思いたす。 そしお、これはいく぀かの内郚的な補品の理由ずはほずんど関係ありたせん。

サブスクリプションずラむセンスのcなスキヌムに぀いお


-叀いラむセンス-期限内でしたか、それずもバヌゞョン䞊でしたか そのラむセンスを持っおいれば、無料でアップグレヌドできたすか

-箄2、3幎前のどこかで、サブスクリプションの販売を開始したした。これにより、幎間を通じお任意のバヌゞョンに曎新できたした。 あなたが賌入し、あなたは私たちがそれらをどのように呌ぶかに関係なく、幎間を通しおリリヌスするすべおのバヌゞョンを持っおいたす。 したがっお、バヌゞョン管理を廃止したした。これにより、メゞャヌバヌゞョンで十分なアップグレヌドレヌトが埗られないこずを恐れるこずなく、より頻繁なリリヌスを発行できるようになりたした。 商甚ナヌザヌの堎合、曎新のサブスクリプションなしの氞久ラむセンスがただありたした。 珟圚、そのようなラむセンスはすでになくなっおいたす。 もちろん、新しいサブスクリプションスキヌムに぀いおコメントできたす。

-はい、教えおください。 すべおが再び倉わったので、これに぀いお倚くのこずを曞いお話したした。 最埌に䜕が起こったかを簡単に芁玄できたす。 これは私たちの芖聎者にずっおおかしくないこずだず思いたす。

-IDEは、垂堎ずずもに、テクノロゞヌずずもに、ナヌザヌずずもに開発される補品です。 1぀の倧きな雪厩で発生したす。 もちろん、䌁業ずしお、すべおのナヌザヌが補品の最新バヌゞョンを䜿甚できるようにしたいず考えおおり、ラむセンスがこのパスを制限するものであっおはなりたせん。

したがっお、これを理解したずき、サブスクリプションを導入したした。 サブスクリプションは誰にずっおも良いものですが、サブスクリプションは自分で賌入しなければならないものです。 ぀たり、氞久ラむセンスずそのサブスクリプションを自分で賌入したす。 私たちはすぐにこれに来たせんでした。 実際に、1幎分のサブスクリプション料金ず氞久ラむセンス料金を分割したす。

サブスクリプションスキヌムの最初のバヌゞョンはこれでした。1幎間ラむセンスを賌入するず、1幎埌にすべおが取埗されたす。 そしおもちろん、私たちはこれに぀いお倚くの吊定的なフィヌドバックに䌚いたした。 これは、マヌケティング担圓者、CEOにずっお倧きなメリットだず思いたす。このフィヌドバックの䞭で、この状況でナヌザヌが䜕を興奮させおいるのかを正確に理解できたからです。 たた、ナヌザヌは、補品を匕き続き䜿甚できるずいう保蚌がないこずを懞念しおいたす。

たずえば、米囜議䌚などによっお予算が承認されおいるかどうかを明瀺的に蚘茉した䌚瀟がありたした。 そしお、もし圌がバヌゞョンを曎新するための予算を承認しなければ、私たちは来幎のために補品なしで攟眮されるでしょう。 これは、氞久ラむセンスが残されるべきであるずいうこずを理解するのに圹立った最も明らかな物語です。

今、あなたは私たちから1幎間のサブスクリプションを賌入しおいたす。 今幎䞭に、曎新する内容を決定できたす。 このサブスクリプションを曎新しお、1幎埌に曎新しお䜿甚し、支払いたす。 したがっお、バヌゞョンを賌入するずきは、次のバヌゞョンに曎新する可胜性なしに、ある時点でそれを賌入したす。 しかし、今幎䞭にリリヌスされるバヌゞョンのアップデヌトを延期しお賌入するこずができたす。

-賌入しない堎合はどうなりたすか

-1幎以内に賌入したバヌゞョンを䜿甚する必芁がありたす。

—぀たり、賌入時に最新であったバヌゞョンぞのロヌルバックはありたすか

-はい。 これをロヌルバックず芋なすこずも、1幎の間に「新しいものが欲しい」ず刀断したずいう事実ず芋なすこずもできたす。 この堎合、サブスクリプションを曎新するずきに1幎で支払いたす。

-聞いおください、このスキヌムはどういうわけか簡単ではありたせん。 誰かからそれを取りたしたか、それずも自分で考え出したしたか 垂堎にいる他の誰かがこの原則で働いおいたすか

-アドビ。 しかし、もちろん話はもっず簡単です。 私たちはナヌザヌの声をよく聞きたす。そのため、私たちの決定が時々難しくなるこずがありたす。

-さお、たあ、かなりナニヌクな話がありたす。

「さらに倚くの䟋を挙げるこずができたす。」 2日前、Microsoftは同じスキヌムに切り替えたした。

-面癜い。

「たったく同じ。」 そしお、このテヌマに぀いおは、むンタヌネット䞊に単䞀の倧きな投皿はありたせんでした。

-どうしたの なぜあなたの堎合には議論があったのですか

-私たちは、より倚くのコミュニティず協力する䌚瀟です。 たた、オプションで商甚ナヌザヌおよびオプションでパヌ゜ナラむザヌにサブスクリプションを導入した堎合でも、倚くのフィヌドバックを受け取りたした。

-それで、あなたの補品管理はフィヌドバックに基づいおいるず蚀えたすか

-はい、倧郚分。

マむクロ゜フトずの困難な関係に぀いお


-そしお、マむクロ゜フトずの䞀般的な関係は䜕ですか 私自身はJavaの䞖界の人であり、すでに10幎前の長い間、プラットフォヌムは倚かれ少なかれオヌプンになっおいたす。 JetBrainsのメンバヌず話をしたずころ、原則ずしお、Javaプラットフォヌム自䜓の内郚で䜕が起こっおいるのかをよく知っおおり、い぀でも耇雑なコヌドを確認したり、どこかにパッチを圓おたりするこずができたす。

-ベンダヌず通信する必芁はありたせん。

-たさに。 そしお、あなたの.NETの䞖界では、これはどのように起こりたすか

「私たちの䜜業方法、リリヌスの蚈画方法は、過去数幎で倧きく倉わりたした。」 そしお、マむクロ゜フトが゚コシステムに察する姿勢を倉え、パヌトナヌず協力し、䌚瀟の開攟性のレベルに倉わったずいう事実のために倉化したした。 3幎前、状況は次のずおりでした。パヌトナヌのみに発行されたVisual Studioのプラむベヌトビルドがありたした。マむクロ゜フトず緊密に連絡を取ったアフィリ゚むトプログラムがありたした。 優先床の高いバグをVisual Studioに提出する暩利がありたした。

぀たり、MicrosoftはVisual Studioの拡匵機胜の厳遞されたメヌカヌ、玄100〜200瀟を意図的にサポヌトしおおり、そのためにあらゆる皮類のプラむベヌトプログラムがありたした。 珟圚、ほずんどのフィヌドバック、ほずんどの倉曎ずビルドは、オヌプン゜ヌスを介しお完党に合法的に入手でき、私たちが連絡するほずんどのチヌムはオヌプン゜ヌスで開発されおいたす。 珟圚、Visual Studioは、フィヌドバックを提䟛したり、䜕かを倉えたり、䜕か新しいこずを孊ぶためにMicrosoftをノックする必芁のあるクロヌズド補品になり぀぀ありたす。

「自分で倚くのこずを始めたこずがわかりたしたか」

-Visual Studio Industry PartnerVSIPプログラムは、私たちにずっおある皮の倧きなメリットではなくなったず蚀えたす。 チヌムずチャットできるむベントに行きたすが、これはほずんどVSIPプログラムからのリク゚ストです。

「なぜ圌らはアプロヌチを倧きく倉えたのですか、あなたはどう思いたすか」

-圌らは開発者を倱い始めたした。 Microsoftは長い間、すべおのシナリオのすべおのニヌズをカバヌする開発者ツヌルを導入したベンダヌでした。 モバむルプラットフォヌムの出珟により、すべおが倉わりたした。 Microsoftのツヌルキットでは、Microsoftのお客様がAndroid甚、iOS甚のプログラムを䜜成するのに十分ではありたせんでした。 これが、このシフトを匕き起こした最初の理由です。

おそらく、オヌプン性に圱響を䞎えた2番目の芁因は、おそらくAzureです。 .NETだけでなく、Java、Python、PHP、Ruby-すべおの開発者をクラりドにできるだけ倚くの開発者をドラッグするには、それらにツヌルを導入する必芁がありたす。 明確なポリシヌがありたす-開発者向けのツヌルMicrosoftは珟圚シェアりェアを提䟛しおいたす。 無料ではない堎合Visual Studioなどがありたすが、無料ではない堎合Visual Studio Enterpriseなどもありたす。 6,000ドルは1幎前に䟡倀があったので14,000ドルではありたせんが。

-1幎前、ルヌブルは異なっおいたした。 しかし、1幎前に新しいCEOがマむクロ゜フトに到着したこずが状況に圱響したずしたしょう。

-圌は倚くの圱響を䞎えたず思いたす。この意味で圌は継続し、開発者向けのツヌルをよりオヌプンにしたした。 そしお、マむクロ゜フトはクラりドプロバむダヌであり、この地䜍を匷化するずいう事実に向かっお進みたす。 マむクロ゜フトのツヌルに基づいた゚コシステム、すべおのプラットフォヌムの開発の゚コシステムを開発する。

-クロスプラットフォヌムに関連する非垞に興味深い話がただありたした。 Linuxの䞋にあるMonoがありたす。Microsoftのこの堎所には、どういうわけか競合するものがありたす。 これに぀いお䜕か知っおいたすか

-Monoの堎合、これは私が話しおいたMicrosoftテクノロゞヌスタックの穎ずたったく同じであるずいうこずです。 物事がそうであるように、クラむアントはVisual Studioの3千のラむセンスを持っおマむクロ゜フトに来お、次のように蚀いたす。「iOS甚のプログラムを曞く必芁がありたす。 私はあなたの楜噚に10幎間座っおいたすが、どうすればいいのでしょうか」圌はマむクロ゜フトのコンサルタントになり、答えを出す必芁がありたす。 したがっお、Microsoftには、iOSの開発を提䟛するずいうビゞネスタスクがありたす。

したがっお、オプションは䜕ですか 完党に機胜するXamarin、Apache Cordova、さたざたなデバむス甚のネむティブC ++コンパむルがありたす。 このシナリオをカバヌするために開発する3぀のツヌルを次に瀺したす。 ぀たり、クロスプラットフォヌム開発は、倖郚パヌトナヌの助けを借りお穎を塞ぐようなものです。

通垞マむクロ゜フトでは、倖郚パヌトナヌを䜿甚しお最初に穎を塞いでから補品をリリヌスし、この堎所をずるようにしおいたす。 しかし、今ではそのような傟向は芋られず、Microsoftはクロスプラットフォヌム開発をそれ自䜓に匕き蟌もうずしおいるのを芋おいたせん。 圌らが協力の段階にある間。 Monoで曞かれたラむブラリは、自分自身に匕き寄せられたす。 コアCLR、仮想マシン、フレヌムワヌクの䞀郚の芁玠...

「これは盞互のプロセスですか」

-はい、これは非垞に盞互的なプロセスです。 もちろん、ある時点で統䞀されるこずを願っおいたす。

—珟圚、Linuxでの.NET仮想マシンの独自の実装がありたす。 かなり生でしょ

-圌女は通垞の補品になるチャンスがありたす。

-しかし、Microsoftはそれを既補品の゚コシステムず呌んでおり、たるで完成品であるかのように、それを利甚しお䜿甚しおいたす。 どうやら、これは完党に真実ではありたせんか

-ナヌザヌをその䞊にドラッグするには、このように配眮する必芁がありたす。 Core .NETに基づいた埓来のASP.NETからASP.NETぞのナヌザヌの流れは芋られたせん。 ただ準備ができおいたせん。 これは起こるず思いたすが、今はそうではありたせん。 珟圚、コヌドのドラッグアンドドロップには問題がありたす。

実際には、DNX、.NET Coreの䞋でコヌドをドラッグする方法に重倧な問題がありたす。 それらは、クラシックASP、フル.NETフレヌムワヌク、およびCore CLRの䞡方で動䜜するように、ラむブラリを察象ずするこずができるリリヌスバヌゞョンのフレヌムワヌクの欠劂ず関連しおいたす。 このため、Microsoftには倚くのバヌゞョンの.NETがありたす。ブラりザヌにはSilverlightがあり、Windows Phoneがあり、デスクトップアプリケヌションがあり、「完党な」.NET Frameworkがありたす。

珟圚、別のスタックがありたす-コアCLR。 そしお、原則ずしお、別個の実装ずしお、他のすべおの人ず違いはありたせん。 Microsoftには、さたざたなスタックのコヌドを蚘述する゜リュヌションがありたす。 これらのプラットフォヌムの組み合わせのバヌゞョンごずに、そのうちの3぀たたは2぀で動䜜するコヌドを生成できるハッキングの䞀皮。

このような組み合わせの数は、おおたかに蚀っお指数関数的に増加しおいるため、これはあたり有効なシナリオではありたせん。 珟圚、マむクロ゜フトはこの出展者を排陀し、タヌゲットにできるプラットフォヌムを䜜成するために積極的に取り組んでいたす。 そのため、この共通プラットフォヌムをタヌゲットずするコヌドはどこでも機胜したす。 その埌、NuGetパッケヌゞの曎新バヌゞョンがあり、どこでも䜿甚でき、同じラむブラリを䜿甚しおすべおのパッケヌゞをコンパむルできたす。

「圌らはそれをしたすが、明らかにそれほど速くありたせん。」 え

-倚くの蚭蚈゜リュヌションが目の前で倉化しおいたす。 珟圚のバヌゞョンは、最終的なものではなく、Microsoftはすでに別のバヌゞョンに取り組んでいたす。



ランタむムおよび蚀語開発に぀いお


-.NETはレガシヌテクノロゞヌであり、リビングテクノロゞヌであるず思いたすか。 ここで私の質問を説明したす。 特定の瞬間、おそらく2008幎の1幎前たで、蚀語の非垞に匷力な開発がありたした。 ランタむムに぀いおは蚀えたせん。十分な専門知識がありたせん。 ランタむムはそれほど高床ではないようです。 しかし、その圓時の蚀語は非垞に発達したした。 C Javaは正反察であり、蚀語は非垞に長い間鈍いものであり、Runtimeは激しいペヌスで開発されおきたした。 私の意芋では、最近Cでもグロヌバルに䜕も起きおいないのは興味深いこずです。 倉曎は以前より目立ちたした。 どう思いたすか

-そうです。 ランタむムはJVMにはるかに遅れおいるず思いたす。 .NET仮想マシンのガベヌゞコレクタヌは非垞に貧匱で、JITコンパむラヌは非垞に脆匱です。 その結果、コヌドの実行が遅くなり、䞍芁な割り圓おを回避し、自動的にむンラむン化されない機胜に察凊するために、gagにgagを挿入する必芁がありたす。 コヌドは自動的に適切に最適化されたせん。 Javaにはこのような問題はありたせん。

-そしお、蚀語は

-C6のリリヌス前に、蚀語があたり開発されなかった期間がありたした。新しいRoslynコンパむラぞの移行に関連しおおり、数幎遅れたした。 感芚によるず、2幎。

-぀たり、蚀語は3番目たたは4番目のバヌゞョンを䞭心に開発されおいたせんか

-5番目。 5番目のバヌゞョンがリリヌスされた埌、新しいコンパむラの䜜成を開始したした。 圌らはそれを長い間苊劎しお曞いた。 基本的に、圌らはすべおのアヌキテクチャの改善を前提ずしお、ネむティブコンパむラず同じパフォヌマンスを達成しようずしたした。

その結果、蚭定された目暙はコンパむルモヌドで達成されたした。 ぀たり、C6ずC5を䜿甚するず、速床の違いは目立ちたせん。 残りのビルド手順ず比范しお、コンパむルに時間がかかりたせんでした。

しかし、IDEでのサポヌトに関しおは、倧芏暡な障害がありたす。 Visual Studio 2015でのC6サポヌトに関しおは、これは完党な倱敗です。 ReSharperなしで2015リリヌスのReSharper Visual Studioプロゞェクトを線集するこずはできたせん。 それはすべおの蚘憶を食い぀ぶし、ハングし、それだけです。 そのような状況。

-はい、ずおも面癜いです。 特に最初の段階では、最初のビルドを芋たずきに、おそらく嵐のような感情がありたした。 どうやっおこれず䞀緒に暮らしたしたか

-髪の毛が逆立ちしたした。

-はい。 ある時点で明らかにすべおの䞻芁な問題を修正し、どういうわけかこれで少なくずもはっきりず生きるこずができたのは明らかですか

-目を閉じお、おおたかに蚀っおVisual Studio 2015をサポヌトしたす。 私たちは自分では䜿いたせん。 私たちは圌女にゆっくりず移動するこずを蚈画しおいたすが、アップデヌトで改善されたした。 ReSharperをカットしお、その䞀郚を実行できるようにしたす。 このすべおの䜿甚を開始できるように、より小さな゜リュヌションを䜜成したす。

-IntelliJ IDEAは、ツヌルずしおそれを認識するずいう芳点から、Core 2 Duoプロセッサの導入盎埌に2007幎に倧きな進歩を遂げたした。 非垞に匷力なPentium Dず比范しおパフォヌマンスの急䞊昇がありたした。 したがっお、IntelliJ IDEAは「IDEA slow」の䜍眮から「ああ、IDEAは玠晎らしいツヌルです」に移動したした。 仕事ができるようになりたした」IDEAは、鉄が急激に良くなったずいう理由だけで、より早く働き始めたした。 それで十分でした。 それ以来、人々は特にIDEAのパフォヌマンスに぀いお文句を蚀っおいたせん。 .NETスタックではIDEのパフォヌマンスが䟝然ずしお頭痛の皮であるこずを正しく理解できたすか

-残念ながら、はい。 私たちはかなり難しい状況にありたす。 Visual Studioの動䜜に起因するパフォヌマンスバグの玄半分ず、私たちに起因する埌半がありたす。 非垞に倚くの堎合、䞀方を他方ず区別するこずはできたせん。 ReSharperではタむピングが遅いかもしれたせん。これは、珟圚バックグラりンドでRoslynがファむルを分析し、1秒あたり数癟メガバむトを割り圓おるため、なぜGCが停止するのですか

「コヌド内にいるかのように」いる堎合、MicrosoftはIntelliSenseでの入力がバックグラりンドコヌドアナラむザヌずどのように盞互䜜甚するかを考慮した特別な最適化を行いたした。 したがっお、オヌトコンプリヌトおよびタむプアシストアクティビティを起動するずき、Roslynバックグラりンドスレッドの動䜜に圱響はありたせん。

「圌らは意図的にそうしたしたか」

「圌らは問題を解決しおいたず思いたす。」 もちろん、圌らは私たちのこずを考えたせんでした。 これは自然なこずです。

ロズリンによる状況の倉化に぀いお


-そしお、ロズリン出口はどのように状況を倉えたしたか これはあなたにずっお頭痛ですか

-簡単になりたした。 実際、Roslynが蚀語サヌビスずしお䜿甚されおいるさたざたなタむプのプロゞェクトをよりよく理解し始めたずいうこずです。 そこからコンパむルに行くコンパむルモデル、ファむル、および参照を匕き出したす。 Visual Studioの以前のバヌゞョンでは、Roslynが存圚しなかったため、ビルドの呌び出しに関連する時間がかかり、Visual Studioから参照を盎接取埗しおいたした。 バグで困難でした。 これは、はるかに盎接的なプロセスです。 Roslynを䜿甚しおモゞュヌルを䜜成し、それらがコンパむラずどのように察話するかを瀺したす。

-そしお、Visual Studioはどのようにコンパむラず察話したすか スタゞオはコンパむラヌ自䜓を䜿甚しお独自のコヌドモデルを構築しおいたすか

-Visual Studio-はい。 凊理䞭にRoslynをダりンロヌドしたす。

-そしお、叀いケヌスでは

-叀いケヌスでは、ネむティブC ++コヌドでのみ同じでした。 圌が䜕をしおいたのか、どこでしか掚枬できたせんでした。 しかし、圌はガベヌゞコレクタヌに圱響を䞎えたせんでした。プロファむラヌで圌を芋たこずはありたせん。 圌はそこにいたかもしれないが、圌は非垞に速かった。

-これは、Roslynがただ未加工の技術であるずいう事実によるものですか それずも、それが䜕らかの圢で根本的に誀っお蚭蚈されおいるずいう事実によるものですか

「はい、もちろん。」 ずおも生。 Roslynで最も単玔な名前倉曎機胜のために䜿甚されるデヌタデザむナヌの最適化の芳点から、たたは゜リュヌション党䜓で゚ラヌを怜出する堎合、これらは愚かな働きをする盎接的なアルゎリズムです。 しかし、もちろん、最終的にパフォヌマンスに圱響したす。

-぀たり、原則ずしお、Microsoft開発者がRoslynを加速する可胜性はありたすか

-もちろんチャンスがありたす。 しかし、Microsoftには問題があり、そのような必芁性は適切なレベルで実珟されない可胜性がありたす。 そしお、時間は割り圓おられず、お金もかかりたせん。

-なるほど。 そしお、珟圚起こっおいるオヌプン゜ヌスずは䜕ですか、「芋るこずができる」たたは「コピヌするこずができる」ずいう点でのみオヌプン゜ヌスですか

-私は非垞に少ない収瞮を芋たした。 さお、基本的にはCore CLRです。これは衚瀺されおいるすべおの゜ヌスコヌドであり、コンパむルしたり、衚瀺したり、読んだりできたす。 誰もがそれらをたずめお受け入れたずは聞いおいたせん。

-それは、原則ずしお、あなたが来お圌らを助けるチャンス、パフォヌマンスに関するすべおの問題を修正するチャンス、そしお明らかにそう倚くはありたせんか

-これらのパフォヌマンスの問題は、倚くの堎合、Roslynを䜿甚したスタゞオコンパむルの領域にありたす。 もちろん、私たちが来お、Roslynで䜕かを倉えるチャンスがありたす。 私たちは䜕がどのように起こっおいるかを芋お分析したす。 アヌキテクチャに぀いお、アヌキテクチャの問題に぀いおのアむデアを持っおいたす。

ReSharperがさらに発展する方法


「それで、ロズリンは圌自身のモデル、圌自身のツリヌを構築しおいたすよね」 これは、明らかに、コンクリヌト構文ツリヌのようなものです。

-はい。 非垞に具䜓的、スペヌス付き、コメント付き...特定の構文、゚ディタで蚘述されおいるため。 IDEが䜿甚するのは、ASTではなく、非垞に具䜓的な構文ツリヌです。

-あなたはコヌドモデルを構築しおいたす。 このツリヌはありたすか

-はい。

-そしお、ロズリンは圌自身を持っおいたす。 どうやら、スタゞオはそれを䜿甚しおいたす-これは論理的です。 実際、これずどのように䜏んでいたすか これでどのように生き続けたすか

-珟圚、いく぀かの指瀺がありたす。 1぀目は、Visual Studioを䜿甚しないこずです。 2぀目はVisual Studioを䜿甚するこずですが、ReSharperを別のプロセスずしお実行したす。 ReSharperのすべおのコヌドモデル、すべおの構文ツリヌ、むンデックス、キャッシュ、およびセマンティックモデルに関連するすべおが別のプロセスに栌玍されるずいうビゞョン、蚭蚈、゜リュヌションがありたす。

-ReSharperが32ビットVisual Studioのメモリ制限に匷く䟝存しおいるず圌が蚀ったずき、Kirill Skryganず私はこれに぀いお議論したした。 ReSharperをアりトプロセスで実行するこずは明らかであるず圌に蚀いたした。それに察しお、圌はそうだず答えたしたが、それはメモリトラフィックに満ちおいたした。

-実際には、蚭蚈゜リュヌションはこのメモリトラフィックを最小限に抑えるこずです。 これは次のように機胜したす。スタゞオをUIアプリケヌションずしお認識するこずができたす。 ぀たり、 MVVMを実行したす。 ReSharperバック゚ンドは、スタゞオであるViewのようなViewModelであるず考えるこずができたす。 それらの間のトラフィックを考慮するず、これはUIの倉曎を衚瀺するのに十分なデヌタのトラフィックになりたす。 UIレベルで倧量のデヌタ転送を芋぀けるこずはありたせん。 垞に2぀の文字、2぀のハむラむトを䜿甚する必芁がありたす...

すべおはスタゞオ偎、UI偎にありたす。 UIを衚瀺するために送信する必芁があるデヌタはほずんどありたせん。 䜕千ものオブゞェクトを送信したす-それは瞬時です。 チッピング䞭にドキュメントに倉曎を転送したす-即座に。 この考えに基づいお、UIを衚瀺するのに十分なデヌタのみが同期されるようにコヌドを構築できたす。

-Visual Studioはどれくらいうたく蚭蚈されおいたすか

-これは専らコヌドの問題です。぀たり、スタゞオずの統合は䞀切倉曎されたせん。

「すべおを非垞に矎しく説明したした。」 しかし、実際には機胜したすか Visual Studioでは、UIを䜿甚しおすべおの䜜業をどこかで行うこずができたすか

-これは、UI芁玠を䜜成する際の問題です。 䟋を挙げたしょう。 ここでは、たずえば、「bulbs」ず衚瀺されたす。 これを衚瀺するために、PSI、構文ツリヌ、ドキュメント、プロゞェクトモデル党䜓が䜿甚されるようになりたした。 持っおいるものを残しお、これらの構文ツリヌ党䜓を送信する堎合、もちろんこれはうたくいきたせん。 しかし、䞀般に、「電球」を描くには、アむコン、テキストが必芁です。

Alt + Enterを抌すず、テキストずアむコンの圢でアむテムを枡し、「䜕らかの電球を適甚する」を抌すず、アりトプロセスで動䜜するコマンドをバック゚ンドに送信したした。 構文ツリヌずドキュメントのすべおのデヌタ倉曎-それらはすべおアりトプロセスで発生したした。 これで、フロント゚ンドで、結果ずしお、新しいカヌ゜ル䜍眮を返し、゚ディタヌで開かれたドキュメントを倉曎する必芁がありたす。 それだけです。

-タスクは、ReSharperずナヌザヌがUIで芋るものずの間のデヌタ亀換プロトコル、および最小トラフィックを開発するこずです。

-プロトコルに埓っお開発を行っおいたす。 プロトコルは非垞に興味深く、反応的です。 䞡偎で機胜する同じデヌタ構造を同期したす。 これは倧きな倉曎です。ReSharperの゜ヌスコヌド党䜓を倉曎する必芁がありたす。

この倉曎は、ViewModelを曞き換えお、セマティックコヌドモデルぞの参照が含たれないようにする必芁があるこずです。 これは倧きな倉曎であるため、埐々に倉曎する必芁がありたす。 私たちはゆっくりず補品をこのように機胜させ始めたす。 そしお、UIがセマンティックモデルに䟝存しないずいう事実にアヌキテクチャを導きたす。 そしお、これも䟝存関係の逆です。

ナヌザヌがどのように倉化を感じるかに぀いお
-ナヌザヌにずっおどの皋床透明になりたすか

-最終的には、同じナヌザヌ゚クスペリ゚ンスである必芁がありたす。

-ナヌザヌは、このストヌリヌ党䜓でバック゚ンドが異なるず感じおはいけたせんか

— . - . それだけです。

— - , , . , , ?

— . ReSharper , , - — 10%.

— c Visual Studio, , IDE?

— Visual Studio, , , . , , Microsoft. Microsoft. — .

, Visual Studio Microsoft. , , Universal Windows Platform, , , , , 
 .



ReSharper C++, Microsoft


— Microsoft, , ReSharper?

— . , - , , .

— , Microsoft , ReSharper . , — .

— ReSharper C++ — .

— , , .

— ReSharper ++ 3-4 . . , C++ . , ReSharper C++ — 2/3 ReSharper, ReSharper C++ ReSharper Ultimate.

— , C++ Windows, Visual Studio?

— , Visual Studio ++ .

— Managed ++ ?

— Managed ++ — Microsoft, Managed -Managed .

— ,- - ++, -

— , . header, ++, Managed ++ — . , interop, COM, Implicit PInvoke. Managed C++ — .

, Visual Studio Managed C++, ++ — , , .. — , , C++ .

— , C++ Windows Visual Studio — ?

— . Windows. , Linux, Visual Studio — . .

++


— , ++, CLion — /C++. AppCode Objective-C. ReSharper IDE? - ? IDE?

— . -, C++, - — Microsoft. CLion AppCode . c . -, CLion ReSharper. ReSharper C++ — ReSharper C++ CLion.
, ++ AppCode . Objective C, - , header-, Objective C ++. - define' ++, , , . - ++ , Objective C. ++ AppCode.

CLion AppCode , ?

— , , .

— ?

— . ReSharper ++ , , ++ AppCode. ReSharper ++ , .

— «» ? , , ?

-はい。 , IDE.

— Microsoft C++?

— .

— , .

— # , . , , , , . - , — , , c.

— , — ?

— Use Case. , , , , , , - -, . ぀たり - .

— ReSharper JetBrains?

— : ReSharper 2007 3 4-. ReSharper , Eclipse. , , : - , IDE Java – .

— , -?

— , .

— JetBrains , Eclipse?

— , .


— ReSharper? , , , C#: , DevExpress CodeRush, Roslyn . , ?

— , DevExpress - , . CodeRush — -: 2000- , ReSharper .

— , . ? ?

— Roslyn , Roslyn. , , . ReSharper Roslyn , Roslyn. , . - , . Visual Studio , , , , . , , . , , , , , , « var». .

— Roslyn. .

— , .

— ?

-いいえ。

— . . Roslyn .

— . , completion' .

— , .

— . Microsoft'. , , . , , , .

. , . . . – Visual Studio.



.NET-


— ReSharper, , .NET- . ?

— , dotTrace. dotTrace , ReSharper ++. - . ReSharper' , UI, , , Application- .. dotTrace , : dotTrace ReSharper.

— , , «», ?

— , , . . . , , . , .NET , , , Solution, . , , , .

dotTrace : ReSharper Extension'a Visual Studio, , Visual Studio, , , package – Visual Studio . , Visual Studio, . ReSharper — , Extension, Visual Studio. Extension . , . , Runtime side-by-side.

, . , , , ReSharper, Command Line Inspect Code Tool ( -), dotPeek, dotTrace, dotCover, dotMemory, — , . , , .

- DotNext , Application-, , . , . . . : « dotCover ReSharper?» ReSharper C++ , ReSharper, ReSharper , .

— ?

— , — dotTrace .

— -.

— - , , . , , . , ReSharper, dotTrace, , . . , , – , 
 , .


— Performance. ReSharper' , , . , .NETe, , workload, , - . - . ? ?

— . – Profile Visual Studio. , , , ReSharper , , , - . , . , , . 
 .

, ? Find Usage, , , , - . , . Find Usage 10 , . , , . - , , Code Completion, - , Foreground .

, - - , , , , ReSharper, , – typing, , — , - .

— ?

— . . , , . typing 10- , — .

— , , .

— , . Code Completion', - , -, , , output. .

— , , ? — , , – ?

— , . : , - , , , . , . , , .

— ?

— . , ReSharper, - ReSharper', Visual Studio Visual Studio. -, .

— Microsoft , ReSharper?

— Microsoft , . Microsoft - , . , Microsoft, . , , , Microsoft . .




« » Youtube- , — , .

Source: https://habr.com/ru/post/J274091/


All Articles