「1、2幎埌、.NET Coreぱンタヌプラむズ゜リュヌション垂堎でJavaに取っお代わりたす」-Googleゞョンスキヌトむンタビュヌ

確かに、ゞョンスキヌトが誰であるかを知っおいたす Stack Overflowで第1 䜍、Cin Depthの著者、最高の.NETブックの1぀、Google開発者、14x MVP。 この芏暡の開発者はそれほど倚くありたせん。それらをすべおリストするには2぀の泚文で十分です。 5月19〜20日に、ゞョンはサンクトペテルブルクに到着し、 DotNext 2017 Piterで挔奏したす。



私はゞョンず話をしお、圌に.NET、.NET Coreの運呜、C7の革新、そしお2017幎の平均的な開発者の䞀般的な開発レベルに぀いお倚くのこずをむンタビュヌしたした。







具䜓的には、次の問題に぀いお説明したした。





むンタビュヌは非垞に倧芏暡であるこずが刀明したしたが、1分ごずに費やす䟡倀があるように思えたす。



プラットフォヌムずしおの.NETの開発に぀いお



「あいさ぀、ゞョン、簡単な質問から始めたしょう。」 最近、.NET CoreずASP.NET Coreは非垞に迅速に開発され、絶えず倉化しおいたす。 開発者ずしお、プラットフォヌムは適切なコヌスを取っおいるず思いたすか



-この質問は2぀の異なる偎面に関係しおいるず思いたす。 1぀目はプラットフォヌムの開発の方向であり、2぀目はこの方向を怜玢するプロセスです。Microsoftは.NETに関連するすべおの点ではるかにオヌプンになっおいたす。 今ではほずんどすべおがオヌプン゜ヌスになっおおり、それは玠晎らしいこずです。 䞀方、これには倚くの倉曎が必芁です。たずえば、意思決定プロセスなどです。 project.jsonプロゞェクトやKVMなどの䞭間ステップを芳察したす。 「叀い」マむクロ゜フトの時代には、゜フトりェアを開発する埓来の䌁業の方法では、これは起こりたせんでした。おそらく、珟圚の圢匏の.NETツヌルをすぐに芋おいたでしょう。 はい、コミュニティには完党な混乱があり、個人的にはあたり理解しおいたせんでしたが、時間が経぀に぀れお状況は明らかになりたした。 今週、.NET暙準ラむブラリずは䜕か、そしお状況は改善し぀぀あるずいうこずに぀いお、スタックオヌバヌフロヌに関する質問をしたした。



しかし、私の意芋では、コミュニティずしお、私たちは、起こっおいるこずを蚈画し、芋、圱響を䞎えるずいう圢でのオヌプンプラットフォヌムの利点には、1぀の欠点が䌎うこずを理解する必芁がありたすこれらの倉曎がロヌルバックするず、時間を倱うこずになりたす。 どうやら、これはほずんどの堎合に適しおおり、オヌプンであるこずは有益ですが、.NETコミュニティにずっおは、これは䞀皮の文化的ショックです。



これをすべお念頭に眮いお、いく぀かの蚀い方に泚意するしかありたせん...簡単に理解できるコミュニケヌションの䞍発䜕かの根本的に新しいバヌゞョンを䜜成するずきに間違いを犯しやすいです。 もちろん、リリヌス日を遞択したり、準備状況を決定したりするバヌゞョン番号付けにはただ゚ラヌがありたした。 䞀般に、すべおが私たちが望むほどスムヌズに進みたせんでしたが、それは怖くはありたせん。結局、誰も完璧ではなく、私たちはコミュニティずしおそれを受け入れなければなりたせん。 芋れば芋るほど、より倚くの欠陥に気づきたす。 これは、プラットフォヌムの開発プロセスに適甚されたす。



動きの方向に぀いお話せば、NET、ここで私は非垞に、非垞に楜芳的です。 プラットフォヌムずしおの.NETの積極的な開発、モバむルプラットフォヌムぞの拡匵、Xamarinがストヌリヌ党䜓にどのように適合するかを芋るのは玠晎らしいこずです。 これらはすべお耇雑ですが、刺激的であり、蚀語やツヌルでも倧きな進歩がありたした。 私の意芋では、党䜓的な状況は玠晎らしいです。 私にずっお、GCPをC開発者にずっお玠晎らしい環境にしようずしお、GoogleでGoogle Cloud Platformに取り組んでいる間、これはただ起こっおいたす。そしおもちろん、.NET Coreはこの重芁な郚分です。



最近、Google Cloud Next 2017カンファレンスで、マネヌゞャヌず私は、App Engineフレキシブル環境ずコンテナヌの䞡方でGCP䞊で実行されるASP.NET Coreアプリケヌションの可胜性に぀いお議論したした。 そしお、これはほんの数幎前にばかげおいるず考えられるものの䞀぀です。 私たちの偎で䜜業を行う必芁がありたしたGoogleには、VSから䞡方の環境に盎接展開できるVisual Studioの拡匵機胜がありたすが、これはMicrosoftが.NET Coreで行ったこずなしでは意味がありたせん。 正盎なずころ、誰にずっおも勝利の状況があるように思えたす。



-珟圚、MS Azureの盎接の競争盞手であるGoogle Cloud Platformに参加しおいるこずを正しく理解できたすか



-それだけです、GCPはMS AzureおよびAmazon AWSず競合したす。 䞀般に、プラットフォヌムの「ガッツ」の開発には盎接関䞎しおいたせん。 Cloud Spanner、BigQuery、Datastore、たたはさたざたな機械孊習APIなど、同僚が䜜成する玠晎らしいものはすべお玠晎らしいですが、C開発者がそれを䜿甚できない堎合は機胜したせん。 そこで、私はブリッゞを䜜成しおいたす。プロセス党䜓を簡玠化するために、自動生成されたクラスラむブラリずいく぀かの新しい皮類のコヌドゞェネレヌタがありたす。 そしお、そこに小さな手曞きコヌドを接着剀たたはラッパヌずしお远加しお、すべおを可胜な限りシヌムレスで゚レガントにしたす。



倚くの堎合、自動生成されたコヌドを芋るず、あたり良くないので、それが生成されおいるこずを理解できたす。 私の仕事の䞀郚は、コヌド生成を可胜な限り自然に芋せるこずです。 いく぀かのリ゜ヌスのリストを取埗する必芁があり、最埌にリモヌトプロシヌゞャぞの呌び出しに察しお20の答えを取埗する必芁があるず想像しおください。それらを反埩するだけで、このような状況がシヌムレスに解決され、そのようなコヌドを曞くこずを確認したす-小さい最埌の仕䞊げ。党䜓的な写真は完党に異なっお芋えたす。



-぀たり、あなたの仕事は、実際には、自動生成されたコヌドをチュヌリングテストに合栌させるこずですか :)



「母、それは玠晎らしいこずだ」 私たちはこれに近いずは思いたせんが、圌は別のテストに合栌したす。コヌドゞェネレヌタヌを䜿甚するず、気たぐれに埓属しおいるず感じるか、圌があなたのために働いおいるず感じたす。 私たちのケヌスでは、開発者がプロ​​セスを制埡しおいるず確信しおいたす。



-.NETプラットフォヌムに戻る.NET開発者が近い将来に予想する最も野心的な倉曎は䜕ですか これから䜕幎も先を行くのは難しいですが、おそらく今埌数か月間の期埅を共有しおください。



「すべおはあなたがどこにいるかに䟝存したす。」 プロゞェクトがproject.jsonの時代に停滞しおいる堎合、たたは「すべおに぀いお気にしなかったので、私はただVS2013を䜿甚しおいたす」、぀たり最新リリヌスに远い぀くものです。 VS2017が登堎し、.NET Core SDKが登堎し、すべおがリリヌスされ、ベヌタ版ではなくなりたした。これが䜕を意味するのかを理解するこずを皆さんにお願いしたす。 はい、時間がかかりたすが、ドキュメントは匕き続き積極的に改善されおいたす。 しかし、これは珟圚の状況に远い぀くためにたどらなければならない道に぀いおです。



そしお未来に぀いお蚀えば、私たちを埅っおいる次のグロヌバルなものは.NET Standard 2.0です。 既に.NET Standard 1.0、1.2、1.3などがありたした。 -これは、ポヌタブルクラスラむブラリに関するクロスプラットフォヌム開発を促進する最初の詊みではありたせん。 しかし、.NET Standard 2.0は、.NETデスクトップで䜿甚しおいたよりもはるかに倚くのプラットフォヌムにたたがる勇敢な新しい䞖界です。 .NET 4.5専甚に䜜成されたクラスラむブラリを䜿甚できるようにする非垞にスマヌトなツヌルがありたす。䜜成者はもうサポヌトしおいたせんが、.NET Standard 2.0で実行しおも害はありたせん。 さらに、ツヌルキットはたすたす䜎レベルになっおいるず思いたす。 䞻なこずは、WPFずWinFormsを䜿甚しおいないこずを確認するこずです。すべおが正垞に動䜜し、そのようなラむブラリは.NET Standard 2.0のコンテキストで䜿甚できたす。



たさにこのような開発方法が玄束されおおり、珟圚の.NET Core SDKは単に良いだけでなく、本圓に良いものであり、以前ず比范しお倧きな前進です。 そしお、マむクロ゜フトはそこで止たらないず思いたす。 したがっお、ナヌザヌアプリケヌションを䜜成しない堎合明らかにUIは重芁であり、倚くはプラットフォヌムに䟝存したす、. NETが.NETであり、クロスプラットフォヌムを最倧限に掻甚しおいるずいう事実に頌るこずができたす。 Xamarin for AndroidおよびiOSからの展開のコンテキストでこれが意味するこずはただ明確ではありたせんが、どのように機胜するかを芋るのは非垞に興味深いでしょう。



「すでに安定しおいるため、誰でもできるだけ早く.NET Coreの最新バヌゞョンにアップグレヌドするこずをお勧めしたす。」 そしお、叀代の.NET 4.0レガシヌプロゞェクトをどうするか



-この堎合、.NET Coreにアップグレヌドする必芁はありたせん。 叀いSDKで.NET Coreを䜿甚し、 project.jsonを䜿甚する堎合、できるだけ早く新しいツヌルキットに移行する䟡倀がありたす。 急ぐ必芁はありたせんが、ロヌドマップに远加する䟡倀がありたす。



たた、.NET 4でのみ動䜜するレガシヌアプリケヌションのみを䜿甚しおいる堎合...すべおは特定のケヌスに䟝存したす長期的な将来がある堎合は、.NET Coreぞの曎新に時間をかけるこずが理にかなっおいたす。 TargetFrameworkが.NET 4.0であり、疑わしいラむブラリを䜿甚しない堎合、ほずんどの堎合、.NET Coreに移怍するだけで、展開環境の遞択肢が倧幅に拡倧しおいるこずがわかりたす。



既にWindows Serverで倚数のサヌビスを実行しおおり、Linuxコンテナヌに぀いお倚くの良いこずを聞いおいるずしたしょうWinコンテナヌがあるこずは知っおいたすが、Linuxの堎合、遞択の幅ははるかに広いです。 それらを.NET Coreに移怍する堎合ASP.NETアプリケヌションがあるず仮定するず、ASP.NET Coreは少し異なりたす、チュヌニングずプラットフォヌムの遞択幅が改善されたす。 継続的むンテグレヌションに関しお蚀えば、WindowsでサポヌトされおいないTravisを䜿甚できたす。「ねえ、これは問題ではありたせん。通垞のCIの䞀郚ずしおTravisでテストを実行できたす。」 これらすべおが人生をより良くしたす。



もちろん、これはすべおの人に圓おはたるわけではありたせん。 倧きな倉曎が期埅されおおらず、理想的には近い将来に眮き換えられる叀いアプリケヌションがある堎合、すべおの移怍䜜業は無意味です。 しかし、私たちはプロゞェクトが実皌働する時間ず、倉曎の数を過小評䟡する傟向があるず思いたす。 「䜕もありたせん、ここで終わりたす。叀いVSなどに基づいおビルドをビルドしたす。最終的には、このような倉曎はありたせん」 時代遅れの環境での展開に幎々費やしお、このような20の倉曎を行う必芁があるず、ようやく「以前に詊しおみお、より珟代的なものに進むべきだ」ずいう考えにたどり着きたす。



クロスプラットフォヌムの.NETずサヌバヌの゚ンタヌプラむズ垂堎の競争



-なるほど。 クロスプラットフォヌムの.NETに぀いおはただ疑問がありたす。倚くのプラットフォヌムをサポヌトするのは良い考えだず本圓に思いたすか 巚倧なむンフラストラクチャがあるこずは既に述べたしたが、.NETはクロスプラットフォヌム゚ンタヌプラむズおよびバック゚ンドカテゎリでJavaず競合できたすか



-絶察に これは、.NETにずっお良いアむデアではなく、.NETにずっお必芁なアむデアだず思いたす。 サヌドパヌティのあたりサポヌトされおいない環境をサポヌトするWindows専甚プラットフォヌムの圢での.NETの運呜は、人々が仕事以䞊に苊しんでいるニッチなプラットフォヌムであるずは考えられたせん。 したがっお、それは必芁な仕事であり、倚くの可胜性を解き攟぀だけでなく、.NETが数幎で陳腐化するこずも蚱したせんでした。 クロスプラットフォヌム以倖のサヌバヌ゜リュヌションは苊劎するず思いたす。 Linuxのみを䜿甚しおいた環境や、Windows環境を「劣悪な埓兄匟」ずしお扱っおいた環境でも同じこずがわかりたす。Windowsは、RubyずPythonのサポヌトを導入したした。 Gitでも同じです。はい、BashShellでさえWindowsになりたした。 マルチプラットフォヌムは今や「生掻賃金」だず思いたす。



-なるほど。 私はホリバリアンの質問をせずにはいられたせんJavaず比范した.NETに぀いおどう思いたすか 特に゚ンタヌプラむズ垂堎では、私が理解しおいるように、Azureず゚ンタヌプラむズむンフラストラクチャに関するMicrosoftの取り組みを芋おおり、これはタヌゲット䌁業の1぀です。



-.NETは間違いなくJavaず競合でき、正盎なずころ、私は垞にCで開発するこずを奜みたす。 蚀語自䜓がはるかに優れおいるからです。



それにも関わらず、Javaには䞀定の利点がありたす。オヌプン゜ヌスラむブラリが優れおいるずいう事実ではありたせんがはるかに倚く、問題を解決するためのオプションが倚くありたす。 Webサヌビスフレヌムワヌクを遞択した堎合、Javaでは少なくずも30のオプションがあり、.NETではおそらく5です。しかし、いずれにしおも、そのうちの1぀だけを䜿甚するため、Javaの堎合は、および.NETには少なくずも1぀の優れたオプションがあり、さたざたなJavaが圹立ちたすが、同時に混乱を招く可胜性がありたす。 そしお、支配的なプレヌダヌがいない堎合、倚様性は良い解決策を芋぀けるプロセスを耇雑にしたす。 したがっお、適切な実装を備えたフレヌムワヌクを芋぀けたいだけの堎合、これは.NET偎でほずんど利点になりたす。



さらに、慣性がありたす。 䞖界䞭に゚ンタヌプラむズJavaプログラマヌずアプリケヌションがたくさんあるこずを知っおいたす。倚くの人が「この動䜜するJavaアプリケヌションを䜿っお.NET甚に曞き盎そう」ず蚀うこずはないず思いたす。 むしろ、次のようになりたす。「アプリケヌションを任意の方法で曞き換えるこずができるため、いく぀かのプラットフォヌムから遞択する必芁がありたす。」 新しいアプリケヌションを䜜成する堎合、Webアプリケヌション、サヌビス、たたはそのようなものは関係ありたせん。この堎合、Javaず.NETは真っ向からやり盎すべきだず思いたす。 䌁業はその䟡倀が蚌明されるたであず1、2幎は.NET Coreに泚意するだろうず思いたすが、その埌、䌁業での䜿甚が増加し、Cの利点が感じられるはずです。



-はい、わかりたした、ありがずう。 ここでは開発者向けのJVM蚀語に぀いおは觊れたせん。なぜなら、私たちはholivarのためにここにいないからです。しかし、もう1぀質問がありたす。.NET䞊のLinuxのアプリケヌションたたはサヌビスの開発で実際の経隓がありたすか



-䞀般に、玔粋な圢でアプリケヌションを開発するわけではありたせんが、最近、Google Cloud Next 2017で、マネヌゞャヌずずもに、ASP.NET Coreに非垞に小さなWebアプリケヌションを実装し、AppEngineFlexible Environmentのコンテナヌに展開したした。 そのような芏暡で-はい、経隓がありたす。 野田タむムのWebサむトもASP.NET Coreで構築され、珟圚はWindowsに展開されおいたすが、Linuxに移怍したいず考えおいたす。すぐに動䜜しない理由はたったくありたせん。



そしお、私の経隓では、.NET Core for Linuxは、それだけを䜿甚しおいる限り、非垞に優れおいたす。 私が問題を芋぀けた堎所はビルドスクリプトにありたした今朝だけLinuxボックスにVS Codeをむンストヌルしたした。NodaTimeを䜿甚するず、netcoreappおよびnetstandardバヌゞョンでは問題ありたせんでしたが、.NET 4.5のコヌドをビルドしようずしたした。 1それは蚀った「ねえ、私は.NET 4.5.1が䜕であるかわからない」-それでビルドの参照アセンブリぞのリンクをいく぀か取りたした。 だから、あなたが絶察にクロスプラットフォヌムであり、.NET Coreのみに焊点を圓おおいる堎合、私はすべおがうたくいくず思いたすが、いく぀かの郚分がクロスプラットフォヌムであり、他の郚分が完党な。になりたす。 MSがそれに取り組んでいるず確信しおおり、参照アセンブリを特定の堎所にむンストヌルするこずで状況を修正できたしたが、LinuxでWindowsコヌドを実行したくありたせん。クロスプラットフォヌムコヌドが必芁です。 そしお、私が蚀ったように、この郚分は特に良いです。



C7に぀いお䞀蚀



-Cに぀いお話す。 C7バヌゞョンは既にリリヌスされおおり、VS 2017で利甚可胜です。タプルクラス、パタヌンマッチング、その他の機胜がありたす。 開発者ずしお、このリリヌスず新しいチップに぀いおどう思いたすか それらは広く䜿甚されたすか たたは、他のガゞェットを取埗する蚀語を奜むでしょうか



-私はC7に非垞に満足しおいたす。今では、 「Cin Depth」の第4版でそれに぀いお曞いおいたす。 珟圚、タプルに぀いお曞いおいたす。タプルは、シンプルに芋えたすが、隠れた小さなものがたくさんありたす。 圓初、タプルには譊戒しおいたしたが、今では実装での利点がわかりたす。 私が今確信しおいないのは、パブリックAPIを䜜成しおタプルを出すかどうかです。 この゜リュヌションは、蚀語開発者を、カプセル化されおいない軜量の戻り倀型に制限したす。 䞀方、特定のクラスを返す堎合、これは時間の経過ずずもに改善される可胜性がありたす。



タプルは、怠け者の開発者にずっお倧きな助けになりたす。 特定のクラス、たたは倉数をグルヌプ化する軜量な方法ずしおタプルを䜿甚するラむブラリヌ内でも、すべおがクヌルでなければなりたせん。



あなたが蚀及した別の重芁な機胜はパタヌンマッチングです。 そしお、C7でのパタヌンマッチングで最も䟡倀のあるこずは、取埗したパタヌンではなく、パタヌンの抂念の導入です。 私はこれらの抂念を意識的に共有しおいたす。 珟時点では、「is」挔算子およびスむッチケヌスでパタヌンを䜿甚できたす。 私たちが珟圚持っおいる唯䞀のパタヌンは、等䟡性ず型の䞀臎です。 したがっお、「case x is 5」を蚭定し、倀が5の堎合に䞀臎するか、タむプ「x is String」で䞀臎を怜玢できたす。 以前のタむプマッチングは奜たしくありたせんでしたが、実際には非垞に有甚であるこずが刀明したした。



友人のビル・ワグナヌからの野田タむムでの最初のC7 プルリク゚ストを既に受け入れたした。このプルリク゚ストは、パタヌンマッチングの利点を具䜓䟋ず明確に瀺しおいたす。 しかし実際には、これはFずHaskellから孊んだ教蚓を瀺しおおり、さたざたな状況での動䜜を介しお関数を蚘述するこずができたす。これはif-else-if-else-if-elseず比范しお非垞に明確な蚘述パスです。 「このケヌスはこの結果に察応し、これはこれに察応する」ず蚀うずき、本質的にif-elseず同じこずを行いたすが、理解するのははるかに簡単です。 これはすべお有望に芋えたす。C7.1のようないく぀かの䞭間リリヌスでは、倀の分解など、より倚くのパタヌンが芋られるこずを期埅しおいたす。



この状況を想像しおください。 DateTimeがあり、それを分解しお、パタヌンマッチングで幎が2016幎を超えるケヌスを芋぀けるこずができたすC6で同様のこずができたすが、マッチング怜玢では分解を䜿甚したせん。 したがっお、パタヌンマッチングは将来さらに倚くの機胜を提䟛できたす。 これらはC7の最倧の機胜であり、過小評䟡すべきではありたせん。



ほずんどのASP.NET Coreナヌザヌにずっおのもう1぀の倧きな利点は、非同期/埅機の平坊性にありたす。以前に非同期メ゜ッドがTask、Task、たたはvoidのみを返すこずができた堎合、特定のパタヌンに䞀臎するものを返すこずができたすただし、これはパタヌンマッチング、このタむプの倀を䜜成しおいないかどうかを瀺す属性がある堎合は、このファクトリを䜿甚したす。 倚くの人がこのパタヌンをコヌドで䜿甚するずは思わないが、他の人の実装を䜿甚できる。 そしお、ValueTask-Taskのより軜いバヌゞョン-はほが党員が䜿甚したす。これはASP.NET Coreチヌムがさたざたな方法で最適化した構造であり、非同期のすべおの利点を取埗したいがロヌドしない堎合の応答時間が短い状況で特に圹立ちたす䞍芁なTaskオブゞェクトを凊理するGC。 私の意芋では、これは倚くの人が「独自の戻り倀型を実装する方法」の詳现に入らずに䜿甚する興味深い機胜です。



機胜のリストだけを芋るず、Cは、䞻芁な革新に加えお、ref-localやref-returnのような小さなものも取埗したす。これらは理解するのが非垞に困難です少なくずも私にずっお。 GCなどのパフォヌマンスの特定の偎面に非垞に敏感な高性胜ゲヌムのUnity開発者にずっお非垞に圹立぀ず信じおいたす-他の開発者よりも構造䜓を䜿甚するずいう感芚がありたす。



out倉数のようないく぀かの玠晎らしい改善もありたす。倉数を出力パラメヌタヌの匕数ずしお䜿甚するず同時に倉数を宣蚀できるため、宣蚀する必芁はありたせん。



int x;
if (int.TryParse("some text", out x))
{
// ...
}

      
      





if (int.TryParse("some text", out int x))



, . , C#: , - - , , , . out- , .



, . , , : async-, , , , iterator-, , , , , FooImpl, . FooImpl . , , , .





— , .NET, . #1 Stack Overflow — . , ?



— , . : Stack Overflow , . , — , , , . , , , . , , : « , , , , ». , , , , , . C# 7 .



, , , . 
 : ( ), . : « , , », — , : « , ?». , , . , , . , . , , .



- , NUnit Noda Time, - Linux , Windows. , en-uk, NUnit, , String.EndsWith()



assert.EndsWith()



, NUnit , . , . :



  1. ,
  2. — , - ?
  3. ,
  4. ,
  5. Noda Time, , NUnit
  6. NUnit , NUnit- «, String.EndsWith()



    , , , »
  7. 10 , String.EndsWith()



  8. , Linux , Windows
  9. SO, , : Windows UK English Linux
  10. US English, Linux.


, , .



, , , — . , . , , , : « . Android Java, SQLite. », — , Java, Android SQLite? . , , ? , , . , « », « » — , - .



— ? , ? ?



— -, , — , , . «# », . , , , , . , , /. , .



, . JavaScript , Node.js - . C#, Java, Ruby, Python , , . - - — . , . — , , 5 , , , .



, , , , . , . : «, , , ». -, : , , iOS-, . , iOS , , .



, , , . , , : « Strings Strings» — , . - , , , . , . . , - . « , , , ». , , — . .





— , . , DotNext «Back to Basics» , : , . - ?



— : , , /. , , , - Unicode . 65536 , , Basic Multilingual Plane. planes, « , , - , BMP», -BMP BMP. - ! 10 BMP, , , -BMP .



: , 10 , ? BMP «e» , , , . emoji: Java .NET, String.Length()



, . , ? : , , . , .



, , . , , - .NET: Noda Time, . , 2.0. , , , . , JavaScript , Date JS , . JavaScript API , .



, , , , : « 5 10 0, 0.5», — , .





— , , . , , — , ?



— , :



1. , Noda Time, - . DateTime.Now() - , , . Noda Time.



2. , , . DocFX, Sandcastle, , . . , , , - Stack Overflow, , , : « , ?» , .



3. . , , , — , . , , 
 . , . , , , .



, — , , 2,5 . - «Everyday sexism», , . , , , .






phillennium DreamWalker . !



All Articles