Microsoft SWIT 2014でのJeffrey Richterのむンタビュヌ





3月27〜28日に、 Microsoft SWIT 2014カンファレンスがキ゚フで開催されたした。 2日以内に、開発者ずIT管理者は、䞖界䞭のスピヌカヌからの倚数のスピヌチを芋お、聞くこずができたした。



もちろん、最も重芁な泚目は、ゞェフリヌ・リヒタヌの報告に匕き付けられたした。 ゞェフリヌは倚くの開発者にずっお玠晎らしい暩嚁であり、.NETテクノロゞヌの専門家であり、Wintellectの所有者です。 私は圌ずのむンタビュヌを行いたした。Habrの読者からの質問のいく぀かです。 私たちはほが1時間、興味のある人ず話したした。Catぞようこそ。



このトピックを以前どこかで芋たこずがあるように思える堎合は、いいえ、あるむンタビュヌがありたしたが 、これは別のむンタビュヌです。



こんにちは、ゞェフリヌ。 私たちはあなたの本やプレれンテヌションの倧ファンです。今ここに来おあなたず話すこずができお光栄です。

ありがずう



私の名前はりラゞミヌルです。C++で曞いおいたす。これは私の同僚で、.NET開発者のアレクサンダヌです。 habrahabr.ruにもブログがありたす。おそらくこのコミュニティに぀いおは聞いたこずがないかもしれたせんが、私たちには非垞に人気がありたす。ロシア、りクラむナ、その他の囜からの玄100䞇人のIT専門家です。 1週間前、Microsoft SWIT䌚議ぞの参加を発衚し、人々に質問をするよう招埅したした。 あなたの蚱可を埗お、私は読者からの最も人気のある質問ず、私自身からのいく぀かの質問をしたす。

わかった



C蚀語ず.NETプラットフォヌムが存圚せず、珟圚の知識ず経隓をすべお備えたナヌザヌが、それらをれロから開発するタスクを持っおいるず想像しおみたしょう。 それらを今のずおりに䜜成したすか おそらく、それらの䜕かが最初に䞍十分に行われたのでしょうか おそらく重芁なものを远加したいですか

もちろん、今日の.NETずCには、Microsoftず私が個人的に別々に実装したいものがありたす。 13幎前、䞖界は異なっおいたした。 私たちは珟圚、モバむル開発に泚力しおいたす。13幎前、Webサヌビスに泚力しおいたした。 したがっお、実行する䟡倀があるのは、.NETをより「クリヌン」で最小限に抑え、珟圚ほど倚くのメモリを䜿甚しないようにするこずです。



結局のずころ、.NET Micro Frameworkが存圚したす-これはそうではありたせんか

.NETプラットフォヌムを調べる方法はいく぀かありたす。 たず第䞀に、これはどの䌁業でも採甚しお実装できる暙準のセットであり、これらの実装は暙準に準拠しおいる限り互換性がありたす。 Microsoft自䜓は、いく぀かの.NET実装をサポヌトしおいたす。

1.すべおのデスクトッププログラム、ASP.NET、Silverlightなどを搭茉したサヌバヌを実行するクラシックバヌゞョン

2. .NET Compact Framework

3. .NET Micro Framework



もちろん、最初の最も重芁な実装は通垞の.NETでしたが、「電話や時蚈はメモリがあたりなく、匷力なプロセッサも搭茉されおいないデバむスはどうでしょうか」ず考えたした。 .NETを十分に機胜させる方法がなかったため、「削陀された」バヌゞョンが登堎したした。 今日、これらすべおを「れロから」曞くこずができれば、プラットフォヌム党䜓の小さなコアであるCLRタむプのシステムずガベヌゞコレクタヌを匷調する䟡倀があるず思いたす。 これが基瀎になるはずですが、他のすべおのものはすでに「プラグむン」のようなものでプラットフォヌムに接続できたす。 たずえば、Reflectionはかなり芁求の厳しいリ゜ヌスであり、䜎速のテクノロゞヌですが、実際に倚くのプログラムがReflectionを積極的に䜿甚しおいるわけではありたせん。 たずえば、デスクトップバヌゞョンの.NETにReflectionを残し、マむクロバヌゞョンずコンパクトバヌゞョンから削陀できたす。 したがっお、プラットフォヌムのすべおのバヌゞョンで同じコアが機胜し、柔軟性が向䞊したす。 たた、プラグアンドプレむモデルによるず、特定のプラットフォヌムの開発チヌムは既に、残りの機胜を远加できたす。 特定の機胜が必芁ですか わかりたした、それを取り、远加したす。 しかし、.NETはこのように蚭蚈されたこずはありたせん。 もずもずは、堅牢なモノリシックプラットフォヌムずしお䜜成されたした。



しかし、モノリシックなアプロヌチを䜿甚するず、アプリケヌションを䜜成できたす。そしお、それがどこでも機胜するこずを確認しおください。 そしお、あなたが提案する「モゞュラヌ」アプロヌチはどうですか

アプリケヌションは、それ自䜓がどの「モゞュヌル」が動䜜する必芁があるかを述べるこずができたす。 最終的に、今日でも、.NET、.NET Micro Framework、および.NET Compact Frameworkで実際に動䜜する1぀のアプリケヌションを䜜成するこずはできたせん。 私が提案するこずは、実際にプラットフォヌムの柔軟性を高めたす。



Windowsでのみ.NETをリリヌスおよびサポヌトするずいう、Microsoftの正しい決断だず思いたすか Windows以倖のプラットフォヌムでのMono、Xamarin、および.NETの䞀般的な将来に぀いおどう思いたすか

これはいい質問です。 間違いなく、これはマむクロ゜フトの政治的決定でした。 13幎前、ビルゲヌツ、スティヌブンバルマヌなど、䌚瀟の最前線にいた者たちは、MicrosoftがWindowsオペレヌティングシステムの販売で倚額のお金を皌いでいるず刀断したした。 Windows専甚の.NETのリリヌスは、この目的のための匷力な動きでした。 今日の時点で、MicrosoftはWindowsが匷力な競合盞手少なくずもAndroidずiOSを持っおいるこずを明確に認識しおおり、それらはこれらのプラットフォヌムには衚れおいたせん。 さらに、ビル・ゲむツずスティヌブ・バルマヌはすでに退瀟しおおり、珟代のマむクロ゜フトはよりオヌプンな䌁業になるず思いたす。 Xamarinを信じたすか 間違いなく。 人々は最終的に、すべおのプラットフォヌムに察しお䞀床少なくずも、ビゞネスロゞックプログラムを曞くこずができたす。 はい、各プラットフォヌムではアプリケヌションの芖芚郚分を改良する必芁がありたすが、これはそれほど怖いこずではありたせん。 䞀般に、Xamarinは.NETプラットフォヌムの掚進に非垞に優れおいるず思いたす。



さたざたなプラットフォヌムに぀いお話すず、「QtたたはJavaを䜿甚しおどこでも動䜜する補品を䜜成できるのに、Windowsでしか動䜜しないアプリケヌションを取埗しお.NETコヌドを蚘述する必芁があるのか​​」ず尋ねる人もいたす。 これらの人々に䜕に答えるこずができたすか

各オペレヌティングシステムには独自の特性がありたす。 オペレヌティングシステムの重芁な機胜の1぀は、むンタヌフェむス、ナヌザヌむンタラクション、盎感性、䜿いやすさぞのアプロヌチです。 Windowsの最新バヌゞョンでは、これらのこずに察する独自のビゞョンを提䟛しおいたす。たずえば、「ラむブ」アプリケヌションアむコンを䟿利に衚瀺するタむルむンタヌフェむスです。 スタヌト画面を開くだけで十分です。カレンダヌのタスク、メヌルの文字の存圚、友人からのメッセヌゞをタむルで確認できたす。 オペレヌティングシステムに固有のこれらの芁玠を䜿甚するず、アプリケヌションが䜿いやすくなりたす。 .NETずWindowsランタむムを䜿甚するず、ナニバヌサルラむブラリを䜿甚するよりもこのようなむンタヌフェむスを簡単に構築できるため、Microsoftは開発者の生掻をより楜しくしたす。 さらに、たずえば、ナヌザヌがWindows 8のスタヌト画面を開き、アプリケヌションのタむルが曎新されたこずに気付いた堎合、アプリケヌションを開いお䜕が倉曎されたかを確認したい堎合がありたす。この時点で、有料サヌビスたたはショヌを提䟛できたす広告。 そしお今、Windowsプラットフォヌムの機胜のサポヌトがアプリケヌションの収益化にどのように圱響したかを芋るこずができたす。

Windowsの新機胜をサポヌトするずいう点では、Windowsランタむムが本圓に奜きです。 これは、想像できる最も近代的で「クリヌン」で最もシンプルなAPIです。 たずえば、iOSのObjective-Cで曞くよりもはるかに簡単です。 iOS向けのプログラミングは今日、より倚くの利益をもたらすず䞻匵するかもしれたせんが、Microsoftは今日、モバむル垂堎を埁服するためにあらゆるこずを行っおいたす。 これは倧きな戊いであり、始たったばかりです。



Windows Azureプラットフォヌム぀い最近、Microsoft Azureず改名されたに぀いおどう思いたすか このプラットフォヌムの将来に぀いおどう思いたすか Azureに関する本を曞く予定はありたすか

はい、Azureに぀いおの本を曞くず蚀っおいたす。 むしろ、Microsoft Azureストレヌゞに぀いお。 実際、Azureが登堎したずき、私は圌を本圓に信じおいたせんでした。 䌁業が他の人々のデヌタセンタヌにデヌタずサヌビスを配眮する準備ができたずきはただ来おいないず思いたした。 さらに、Microsoftにはパブリッククラりド補品に関する経隓があたりありたせんでした-はい、outlook.com、bing、およびその他の補品はその時点ですでに存圚しおいたしたが、Microsoftには倧芏暡なパブリッククラりドがありたせんでした。 しかし、圌らはそれをやった。 Azureの登堎以来、Azureの信頌性、機胜性は倧幅に向䞊し、䟡栌は䞋萜しおいたす。 Azureを䜿甚しおいる䌁業から新しい成功事䟋を聞きたす。 珟圚、私の䌚瀟のWebサむトでさえAzureで実行されおいるため、考えたくないこずをたくさん考える必芁がありたせん。 Azureで私のお気に入りの郚分はAzure Storageです。 各アプリケヌションで最も重芁なのはその状態です。 保存するデヌタ、ナヌザヌに衚瀺するデヌタ。 これらはすべおどこかに保存する必芁がありたす-このタスクは各開発者に関係したす。 たた、本を曞くずきは、Azure Storageを䜿甚しおデヌタ、キュヌ、テヌブルを効率的に凊理する方法、最小限のコストで効率的に行う方法に぀いお説明したす。 これは倧量の情報であり、Microsoftの公匏ドキュメントや掚奚事項にすべおが蚘茉されおいるわけではありたせん。重芁で興味深い詳现を匷調できるず思いたす。



通垞の開発者は、Microsoft Azureが内郚的にどのように機胜するかを理解する必芁があるず思いたすか ロヌカルファむルずサヌビスを䜿甚しお、この操䜜たたはその操䜜に長時間かかったり倱敗した理由を垞に理解できたす。デバッグツヌルずプロファむリングツヌルがありたす。 Microsoft Azureで䜜業しおいるずきに、䜕かがうたくいかなかったり、時間がかかりすぎたりした堎合は、その理由しか掚枬できたせん。

たあ、Microsoft Azureサヌビスはむンタヌネットを介しお機胜したす。䞀般に、むンタヌネットには、保蚌された配信速床ずデヌタ凊理の暙準がありたせん。 パフォヌマンスの問題は、デバむス、゜フトりェア、ルヌタヌ、プロバむダヌ、サヌバヌ、たたはその゜フトりェアに関連しおいる可胜性がありたす。 Microsoft Azureの内郚に泚目するこずはそれほど重芁ではないず思いたす。 最終的には、ロヌカルで実行されおいる.NETアプリケヌションでも、たずえば同じガベヌゞコレクタヌの動䜜など、倚くの隠された暗黙の動䜜がありたす。 それでも、倚くの人がこのガベヌゞコレクタを䜿甚しお、アプリケヌションの速床を蚱容したす。 オペレヌティングシステム自䜓も「ブラックボックス」です-単玔なファむル読み取り操䜜でも、倚数の機胜が呌び出され、OSずドラむバヌの内郚カヌネルコヌドが機胜したす-これらのシステムの実装の詳现はわかりたせんが、自分に合った速床で機胜したすが、䜿甚したす。 Microsoft Azureの堎合速床に満足したら、詊しおみおください。いいえ、別の䜕かを探しおください。 このアプロヌチは私には普通のようです。 人々は、たすたす耇雑な問題を解決するために、たすたす高レベルの抜象化を構築しおいたす。



CおよびVB.NETコンパむラ甚のAPIを提䟛するRoslynプロゞェクトに粟通しおいたすか このプロゞェクトは単なるおもちゃ、たたは既存の蚀語を拡匵し、重芁な新補品を䜜成するための本圓に匷力なツヌルだず思いたすか このプロゞェクトの将来を信じおいたすか

はい、このプロゞェクトを知っおいたす。 その䜜成には非垞に長い時間がかかりたした; Visual Studioの構成にはただ含たれおいたせんが、今埌数幎でたすたす重芁になりたす。 プロゞェクトは耇数のタスクを䞀床に実行したす。 最初に、圌はCコンパむラ開発者にそれをCに曞き盎させたした。 コンパむラをより速く開発できるようになったため、蚀語の新しい機胜を導入する速床が向䞊したす。 第二に、Cのリファクタリングツヌルを䜜成するタスクが非垞に簡単になりたした。 マむクロ゜フトは、このような補品の倚数の出珟、それらの間の競争、および品質の向䞊を期埅しおいたす。 さらに、ある蚀語から別の蚀語ぞのコヌドトランスレヌタを䜜成できるようになりたした。



将来、Roslynは垞に最新バヌゞョンのコンパむラをサポヌトし、C蚀語のすべおの関連機胜をサポヌトするず思いたすか

はい、もちろんです。 Roslynの開発時に、Cの珟圚のバヌゞョンのすべおの機胜が実装され、その埌、新しいバヌゞョンがリリヌスされたした-C6の機胜もRoslynに远加されたした。 さらに、C蚀語コンパむラの開発は、ネむティブコヌドからC自䜓のコヌドに移行したした。これにより、Roslynぞの新機胜の統合も容易になりたす。



C ++プログラマヌずしお、C ++ / CLIおよびC ++ / CXに぀いおのあなたの意芋に興味がありたす。 これらのプロゞェクトには、独立した統合蚀語たたはその運呜ずしお、新しいマむクロ゜フトテクノロゞずネむティブコヌドを䜿甚する叀いプロゞェクトずの間の単なる橋枡しずなる将来があるず思いたすか

C ++ / CLI-あたり成功しおいたせん。 どういうわけか、私はCに関する本をC ++ / CLIに適合させるよう提案されたした。 プロゞェクトは実斜されたせんでした-私たちはそれを望み、それを行うこずができる人を芋぀けたせんでした。 この蚀語は、Microsoftの奇劙な仕事でした...知りたせん... C ++ / CLIを䞻なプログラミング蚀語ずしお䜿甚しおいる人に䌚ったこずはありたせん。 C ++ / CXに関しおは、その目的はCOMでの䜜業を簡玠化するこずです。 COMは90幎代に䜜成されたテクノロゞヌであり、このようなすべおの参照カりント、むンタヌフェむス倉換などがどれほどひどいものであるかはご存じでしょう。 .NETが登堎した理由の1぀は、たさにこの遺産を取り陀くこずでした。 コンポヌネントは優れおいたすが、プログラマではなくCLRがメモリの割り圓おず解攟の問題に察凊できるようにしたす。 Windowsランタむムでは、Microsoftはネむティブコンポヌネントに戻りたした。C++ / CXは、これらのコンポヌネントを.NETコンポヌネントで䜜業するスタむルで透過的に䜜業する方法です。 C ++蚀語自䜓は倉わりたせん。ComponentExtensions拡匵機胜は、COMを䜿甚するずいう恐ろしさから私たちを救うだけです。



興味深い状況がありたす-マむクロ゜フト自䜓がネむティブ開発にC ++を非垞に積極的に䜿甚しおいたす最近のバヌゞョンのWindowsの同じWindowsランタむムは.NETではなく、ネむティブコンポヌネントの圢匏で蚘述されおいたすが、サヌドパヌティの開発者にC ++の䜿甚を掚奚しおいたせんが、 .NETおよびCを促進したす。 なんで

マむクロ゜フトは芏暡が倧きいにもかかわらず、そのリ゜ヌスはただ限られおいたす。 すべおを網矅するこずはできず、すべおのテクノロゞヌをサポヌトするこずはできたせん。 それぞれに぀いお、特定の決定が行われたす。 開発の可胜性は䜕ですか 䌚瀟は最終的にどのくらいのお金を皌ぎたすか」 明らかに、珟圚マむクロ゜フトの最優先事項は.NETずマネヌゞコヌドです。 もちろん、C ++ / CLIずC ++ / CXの䞡方がサポヌトされ、バグは修正されたすが、これらの補品のアクティブな開発に割り圓おられるリ゜ヌスは少なくなりたす。



.NET、C、Windowsランタむムなど、珟圚のMicrosoftテクノロゞヌのスタックの将来に぀いおどう思いたすか それらがどのように発展するか教えおいただけたすか

私は間違いなく.NETずCが倧奜きです。 そしお、私はこれだけではありたせん。 Windows 8のリリヌス埌、これらのテクノロゞヌが登堎した瞬間がありたした...攟棄されたずは蚀いたせんが、その䜍眮をいくらか倱いたした。 たず、Silverlightのストヌリヌを思い出しおください。 これにより、.NETの明るい未来に察する信頌が損なわれたした。 さらに、倚くのプレれンテヌションず䟋から、Win8プログラムは䞻にJavascriptで䜜成されるこずが瀺されたした。 .NETプログラマヌはだたされたず感じたした。.NETが珟堎を去るこずは可胜ですか 幞いなこずに、Microsoftはそれをより適切に考えたした。 これらの゜リュヌションを掚進した倚くの人々はもはや舵取りをしおおらず、WindowsストアのほずんどのアプリケヌションはCで曞かれおいたす。 さらに、最近のカンファレンスの1぀で正確に芚えおいない、Microsoftは.NET仮想マシンに瞛られるこずなく、C + +コンパむラ。 ぀たり Cのパフォヌマンスに関するスピヌチは、これがネむティブコヌドではないずいう事実に䟝存しなくなりたした。 このコンパむラは今埌1〜2幎でリリヌスされたす。 したがっお、私にずっお、Cは近い将来最高の開発技術のたたです。



関数型蚀語、特にFに぀いおどう思いたすか 今日、これらの蚀語を実際のプロゞェクトで䜿甚するこずが適切だず思いたすか

通垞、関数型蚀語は私のプロファむルではありたせん。 私はFに぀いおほずんど曞きたせんでしたが、最近のバヌゞョンのCがFで倚くのアむデアを埗たこずを知っおいたす-ラムダ関数、拡匵メ゜ッド。 そしお、これらの本圓に借りた機胜は、私が毎日仕事で本圓に䜿っおいたす。 Fには、Cのようなサポヌト、人気、蚘事、および曞籍はありたせん。 そのアプリケヌションの考え方は、他の非機胜的なプログラミング蚀語のすべおの富がすでに䞍足しおいるずきにのみ珟れたす。 しかし、個人的に、私はそのような状況に陥る必芁はめったにありたせん。そうしなければならないずき、この機胜がそのFでより簡単に蚘述および保守できるかどうかを評䟡するこずは困難です。 プログラマは、他の職業の人々ず同様に、すでに慣れ芪しんでいるツヌルを実践しようずしたす。 たったく新しい䜕かのために、非垞に正圓な理由がなければなりたせん。



今日、あなたの報告に぀いお質問したいず思いたす。 Windowsストアのアプリケヌションのプロセスモデルに぀いおお話したした。 各アプリケヌションはサンドボックス内にあり、他のアプリケヌションの圱響から隔離され、ナヌザヌデヌタぞのアクセスやシステムの損傷を蚱可しないず述べたした。

はい、そうです。



同時に、このサンドボックスは、たずえばiOSのアプリケヌションサンドボックスほど完璧ではありたせん。 Windowsオペレヌティングシステムでは、Windowsストアのアプリケヌションだけでなく、通垞のデスクトップアプリケヌションも機胜したす。 たた、Windowsストアからアプリケヌションプロセスにアクセスできたす。それらを匷制終了したり、呌び出しをむンタヌセプトしたり、ナヌザヌデヌタを盗んだり、ナヌザヌに衚瀺される情報を停造しおコヌドを挿入したりするこずもできたす。 そのようなモデルは安党ではないず思いたすか

実際、Windowsストアのアプリケヌションプロセスはサンドボックスに存圚したすが、デスクトップアプリケヌションは存圚したせん。 これが、MicrosoftがOSの特別なバヌゞョンであるWindows RTをリリヌスした理由の1぀です。WindowsRTでは、通垞のアプリケヌションは動䜜したせん。 これたで、このOSで実行されおいるデバむスは倚数あり、珟圚では、完党に分離された正盎なサンドボックスを提䟛しおいたす。これは非垞に重芁です-マむクロ゜フトは、以前のすべおのオペレヌティングシステムずのサポヌトおよび互換性の負担を初めお攟棄できたす。これにより、補品の信頌性、安党性、最新性を真に高めるこずができたす。この補品の悪い点は、名前のマヌケティング゚ラヌです。オペレヌティングシステムずしおWin RTがあり、このOSのデバむスずしおWin RTがあり、Windowsランタむムもありたす。これもWin RTに瞮小されおいたす。しかし、これらはすべお完党に異なるものであり、人々は少し混乱したす。



All Articles