[C#] Microsoft の Roslyn とは何ですか?

1. 説明

        Roslyn は Microsoft が書き直した C# コンパイラーであり、オープン ソースです。

        Roslyn は、  C# および Visual Basic.NET 用のオープン ソース コンパイラのコード名です。過去 10 年間の Microsoft 企業の最も暗い時代に、C# がどのようにして始まり、すべての C# (および VB の) のオープンソース、クロスプラットフォーム、共通言語エンジンになったのかをここで説明します。この記事の残りの部分では、これを次のように扱います。当然のことです)。

2. ロザリンの歴史的起源

        私が 2005 年に Microsoft に入社したとき、Roslyn になるものについての最初の話し合いは、.NET 2.0 がリリースされる直前にすでに始まっていました。その話は C# を C# で書き直すことについてでした。これはプログラミング言語の通常の習慣であり、言語が成熟していることの証拠となります。しかし、より実践的で重要な動機があります。それは、C# の作成者である私たち自身が C# でプログラムするのではなく、C++ でコーディングするということです。C# を毎日使用すると、C# についての考え方が変わります。それは「ドッグフード」の力です。

顧客は、新しいコンパイラが古いコンパイラとまったく同じように動作することに依存します。C# 用の新しいコンパイラを作成するということは、古いコンパイラのバグをバグごとに一致させようとすることを意味しました。

        長年にわたって顧客の手に渡ってきたコンパイラを書き直す際の課題は、顧客が新しいコンパイラが古いコンパイラとまったく同じように動作することに依存することです。C# 用の新しいコンパイラを作成するということは、古いコンパイラのバグをバグごとに一致させようとすることを意味しました。私が話しているのは既知のバグだけではなく、開発者がしばしば無意識のうちに発見し、依存している未知の予期せぬ動作についても話しています。

        何年もの間、その課題の大きさのため、私たちはこのプロジェクトを開始することさえできませんでした。

        また、C# で書かれた新しい C# コンパイラーは言語チームの内部では多くのメリットがありますが、顧客への価値提案はより困難です。新しいコンパイラーは既存の顧客にどのように役立つでしょうか? おそらく、C# が C# で書かれていることを気にしているのは、コンパイラ チームのメンバーだけでしょう。

        しかし同時に、別の問題も増大していました。それは、C# コードを処理するさまざまなツール間での作業の重複です。コンパイラに加えて、姉妹チームは Visual Studio で C# の IDE サポートを構築していましたが、C# の構文とセマンティクスを理解するために多くのコード (当時は C++ も) を記述する必要がありました。

        これに加えて、Microsoft やその他のツール (StyleCop、CodeRush など) の数が増えており、フラットな C# ソース テキストから始めて意味のあるコードベースのツールを実装する必要があります。これらすべてには、微妙に異なるバグ、異なる理解レベル、異なる妥協点やトレードオフがあります。これらはすべて、コードを理解するという要点に到達するまでに多大な努力を必要とします。

最終的に私たちの価値提案は、C# を理解できるコード ベースが世界で 1 つだけ存在し、そのコードでツールを構築したい人全員がそれを共有できるようにすることです。

        最終的に私たちの価値提案は、C# を理解できるコード ベースが世界で 1 つだけ存在し、そのコードでツールを構築したい人全員がそれを共有できるようにすることです。顧客価値は、利用可能なツール、特に既存のツールの品質の増加によってもたらされます。私たちは、言語の正確性とパフォーマンス要件をすべて 1 つのコード ベースにまとめ、単一の努力を費やして、優れた品質と優れた汎用性を備えたコードを作成します。言語エンジンを構築していきます。C# コードへの統合されたパブリック API: 「コンパイラー」の意味を再定義します。

        もちろん、広範な C# コミュニティ向けの API を構築したら、それは C# で実装された .NET API になるはずですが、これは少し面倒です。したがって、C# を C# で「起動」するという昔の夢は、ほとんど偶然の副次的な利点でした。

したがって、Roslyn は、プログラムで使用できる C# の内部動作を世界中で共有するというオープンな心を持って生まれました。それ自体、まだ大部分が閉鎖的な文化における大胆な一歩だ。

        R したがって、oslyn は、プログラムで使用できる C# 言語の内部動作を世界中で共有するというオープンな心をもって生まれました。それ自体が大胆な主張であり、当時まだ一般的に閉鎖的な文化だった Microsoft において、この知的財産を無料で共有できるでしょうか? 私たち以外の工具メーカーが私たちとより競争できるようにすることはできるでしょうか?

        ここで私たちが勝った議論は、エコシステムを強化し、地球上で最高のツール言語になることについてです。これらは C# と .NET の長期的な成長に関するものであり、短期的な収益化や Microsoft 資産の保護に関するものではありません。したがって、オープンソースについて言及しなくても、Roslyn プロジェクトを承認するコストとリスクは、Microsoft にとって大きく大胆な一歩です。

        もちろん、このようなものをただ構築するだけではありません。ロズリンのビジョンは非常に野心的で技術的な課題を抱えていたため、実現するまでに 5 年かかりました。しかし、それはまた別の日の話です。

2009 年にプロジェクトが本格的に始まって以来、私たちはコンパイラをオープンソースにするというビジョンを持っていましたが、Microsoft はまだその準備ができていませんでした。

        私たちが初期リリースを構築しているほとんどの時間、Roslyn はまだクローズド ソース プロジェクトです。2009 年にプロジェクトが本格的に始まって以来、私たちはコンパイラをオープンソースにするというビジョンを持っていましたが、Microsoft はまだその準備ができていませんでした。プライベートで開発し、オリジナルのコードを中心に特許を取得するという文化は、1970 年代以来の Microsoft の仕事のやり方を典型的に表しており、変化は進行中ですが、その変化はチームが望んでいるよりもゆっくりと進行しています。

        実際、しばらくの間、会社はまったく逆の方向に進んでいるように感じられました。

        Windows 8 プロジェクトは会社全体をほぼ引き継ぎました。新しいプログラミング モデルにより、その触手は開発者ツールや言語チームの奥深くまで伸びており、すべては外界だけでなく社内からも極秘に保たれています。たとえば、当時私たちが開発した非同期機能は Windows 8 のプログラミング モデルと連携して絡み合っていたため、Windows 8 に関する情報が誤って漏洩して自分自身が台無しになることを恐れて、その設計ノートを社内に公開する勇気さえありませんでした。 !これはイノベーションにとって悲惨な環境を生み出しており、オープンソースの C# コンパイラーに対する私たちの期待にとっては決して良い前兆ではありません。

        しかし、Windows 8 が終了した後、同社は変革を開始し、新しいリーダーシップとまったく異なる中核となる哲学、つまり今日私たちが知る Microsoft に向けて新しい方向性を見出し始めました。オープンソース運動は現在、マイクロソフト社内で急速に根付き始めています。

        F# は、オープン ソース ライセンスと独自の財団である F# Software Foundationとともに 2010 年にリリースされました。その周りに成長した活気に満ちたコミュニティは、すぐに私たち全員の羨望の的となりました。私たちのチームは、Roslyn がオープンソースの製品ライセンスを取得できるよう熱心に推進し、最終的にはそれを実現するための全社的なインフラストラクチャが整いました。

        2012 年までに、Microsoft はオープンソース プロジェクトに焦点を当てた組織である Microsoft Open Technologies を設立しました。Roslyn は Microsoft Open Technologies に移り、正式にオープンソースになりました。これは良い候補です。開発リソースはすべて社内にあり、よく知られており、プロジェクト自体は自己完結型で、ライセンスの競合を引き起こす可能性のある依存関係があまりありません。

3. ロザリンが出てきた

        2014 年 3 月、サンフランシスコで開催された Microsoft の「Build」開発者イベントで、Anders Hejlsberg が Roslyn を オープン ソース プロジェクトとしてデモンストレーションし、Roslyn は Apache <> 上で起動されました。<> ライセンスの下で公開されました。

        Microsoft Open Tech の CodePlex での Project Roslyn

        同時に、Roslyn を含む .NET プロジェクトの本拠地として.NET Foundationが発表されました。

        外の新鮮な空気を吸いましょう!CodePlex のオープン性の恩恵を受け始めているにもかかわらず、Microsoft のオープン ソース プログラムに残されているハードルは取り除かれており、現在、オープン ソースは多くのチームの作業方法の即時かつ不可欠な部分となっています。

私たちはもはや GitHub を公開する場所とは考えていません。それは単に私たちが作業する場所です。

        別の意味でも、企業は私たちがすべてをコントロールする必要はないことに気づいています。CodePlex が正当な理由もなく存在していたことが明らかになり、Roslyn は他のプロジェクトに参加し、CodePlex から当時事実上オープンソース プロジェクトの本拠地であった GitHub に移行しました。ソース コードだけでなく、それを構築するプロセスも GitHub にあります。私たちは GitHub を公開の場所とは考えていません。GitHub は単に作業する場所です。

        ロズリンは今日 GitHub にいます

        C# 言語の設計とコンパイラの実装は現在、完全にオープンなプロセスになっており、外部の貢献者によって構築された言語機能全体を含め、Microsoft 以外の多くの関与が含まれています。C# の価値は、機能やバグ修正に貢献する広範な努力だけでなく、オープンソースが提供する即時の毎日のフィードバック ループを通じて得られる洞察や軌道修正によっても高まります。

        これは長くワイルドな旅でしたが、私にとって、これは Microsoft が過去 10 年間に経験した劇的な変化を象徴するものです。ロズリンのナゲットは暗闇の中で始まり、オープンなアイデアに基づいて成長し、今日ではオープンソースの力によって 100 万もの異なる用途に爆発的に成長しました。

おすすめ

転載: blog.csdn.net/gongdiwudu/article/details/131901650