一、說明
????????Roslyn 是微軟重寫的C#編譯器并開源。
????????Roslyn?是 C# 和 Visual Basic.NET 開源編譯器的代號(hào)。以下是它如何在過去十年企業(yè)Microsoft的最黑暗中開始,并成為所有C#(和VB)的開源,跨平臺(tái),公共語言引擎,我將在本文的其余部分將其視為給定的)。
二、Roslyn的歷史淵源
????????當(dāng) 在 2005 年加入 Microsoft 時(shí),關(guān)于什么將成為 Roslyn 的第一次對(duì)話已經(jīng)在進(jìn)行中 — 就在 .NET 2.0 發(fā)布之前。那次談話是關(guān)于用 C# 重寫 C#。這是編程語言的正常做法;語言成熟的證明。但還有一個(gè)更實(shí)際和更重要的動(dòng)機(jī):作為 C# 的創(chuàng)建者,我們自己不是用 C# 編程,而是用C++編碼!每天使用 C# 會(huì)讓你對(duì) C# 有不同的看法:這是“狗食”的力量。
客戶將依賴于新編譯器的行為方式與舊編譯器完全相同。為 C# 編寫新的編譯器意味著嘗試逐個(gè)錯(cuò)誤地匹配舊的編譯器。
????????重寫已經(jīng)掌握在客戶手中多年的編譯器的挑戰(zhàn)在于,這些客戶將依賴于新編譯器的行為方式與舊編譯器完全相同。為 C# 編寫新的編譯器意味著嘗試逐個(gè)錯(cuò)誤地匹配舊的編譯器。我說的不僅僅是已知的錯(cuò)誤,還有開發(fā)人員發(fā)現(xiàn)并依賴的那些未知和意外的行為,通常是在不知不覺中。
????????多年來,這一挑戰(zhàn)的艱巨性使我們甚至無法開始這個(gè)項(xiàng)目。
????????此外,雖然語言團(tuán)隊(duì)內(nèi)部對(duì)用 C# 編寫的新 C# 編譯器有很多好處,但對(duì)客戶的價(jià)值主張更具挑戰(zhàn)性:新編譯器將如何幫助現(xiàn)有客戶?也許唯一關(guān)心 C# 是用 C# 編寫的人是編譯器團(tuán)隊(duì)的成員。
????????在但與此同時(shí),另一個(gè)問題越來越大:處理 C# 代碼的不同工具之間的重復(fù)工作。除了編譯器之外,我們的姊妹團(tuán)隊(duì)還在Visual Studio中構(gòu)建對(duì)C#的IDE支持,他們還必須編寫大量代碼(當(dāng)時(shí)也是C++)來理解C#語法和語義。
????????除此之外,來自Microsoft和其他工具(如StyleCop,CodeRush等)的越來越多的工具都必須從平面C#源文本開始實(shí)現(xiàn)有意義的基于代碼的工具。所有這些都會(huì)有微妙不同的錯(cuò)誤,不同的理解水平,不同的妥協(xié)和權(quán)衡。所有這些都會(huì)花費(fèi)大量的精力來達(dá)到原點(diǎn):理解代碼。
最后,我們的價(jià)值主張是:使世界上只需要有一個(gè)理解 C# 的代碼庫,每個(gè)想要在代碼上構(gòu)建工具的人都可以共享!
????????最后,我們的價(jià)值主張是:使世界上只需要有一個(gè)理解 C# 的代碼庫,每個(gè)想要在代碼上構(gòu)建工具的人都可以共享!客戶價(jià)值將來自可用工具的增加,特別是現(xiàn)有工具的質(zhì)量。我們將把所有語言的正確性和性能要求放在一個(gè)代碼庫上,并花費(fèi)一次精力來使其具有出色的質(zhì)量和巨大的多功能性。我們將構(gòu)建一個(gè)語言引擎!一個(gè)統(tǒng)一的、公共的 API 到 C# 代碼:我們將重新定義“編譯器”的含義。
????????當(dāng)然,一旦你為廣泛的C#社區(qū)構(gòu)建了一個(gè)API,它應(yīng)該是一個(gè).NET API,用C#實(shí)現(xiàn),這有點(diǎn)麻煩。因此,在 C# 中“引導(dǎo)”C# 的舊夢(mèng)想幾乎是一個(gè)偶然的附帶好處。
因此,Roslyn 誕生于一種開放的心態(tài):共享 C# 的內(nèi)部工作原理,供全世界以編程方式使用。這本身就是在仍然普遍封閉的文化中邁出的大膽一步。
????????R因此,oslyn 誕生于一種開放的心態(tài):共享 C# 語言的內(nèi)部工作原理,供全世界以編程方式使用。這本身就是一個(gè)大膽的主張,在當(dāng)時(shí)仍然普遍封閉的文化中Microsoft:我們會(huì)免費(fèi)分享這些知識(shí)產(chǎn)權(quán)嗎?我們會(huì)授權(quán)不是我們的工具制造商更好地與我們競爭嗎?
????????在這里為我們贏得勝利的論點(diǎn)是關(guān)于加強(qiáng)生態(tài)系統(tǒng)并成為地球上最好的工具語言。它們是關(guān)于 C# 和 .NET 的長期增長,而不是短期貨幣化和Microsoft資產(chǎn)保護(hù)。因此,即使沒有提到開源,簽署Roslyn項(xiàng)目的成本和風(fēng)險(xiǎn)對(duì)Microsoft來說也是一大而大膽的一步。
????????當(dāng)然,你不只是構(gòu)建這樣的東西。Roslyn 的愿景雄心勃勃,也充滿了技術(shù)挑戰(zhàn),我們花了五年時(shí)間才實(shí)現(xiàn)它。但那是另一天的故事了。
自從該項(xiàng)目在2009年認(rèn)真啟動(dòng)以來,我們就有使我們的編譯器開源的愿景,但Microsoft還沒有準(zhǔn)備好。
????????F或者大多數(shù)時(shí)候我們?cè)跇?gòu)建初始版本,Roslyn 仍然是一個(gè)閉源項(xiàng)目。自從該項(xiàng)目在2009年認(rèn)真啟動(dòng)以來,我們就有使我們的編譯器開源的愿景,但Microsoft還沒有準(zhǔn)備好。私下開發(fā)和圍繞原始代碼申請(qǐng)專利的文化代表了Microsoft自 1970 年代以來的工作方式——雖然變化正在醞釀之中,但它的發(fā)生速度比我們團(tuán)隊(duì)希望的要慢。
????????事實(shí)上,有一段時(shí)間感覺公司正朝著完全相反的方向發(fā)展。
????????Windows 8項(xiàng)目幾乎接管了整個(gè)公司。憑借其新的編程模型,它的觸角深入到開發(fā)人員工具和語言團(tuán)隊(duì)中,一切都被極端保密,不僅對(duì)外部,甚至在公司內(nèi)部。舉個(gè)例子,我們當(dāng)時(shí)開發(fā)的異步功能是與 Windows 8 編程模型協(xié)調(diào)和糾纏在一起的,我甚至不敢在內(nèi)部發(fā)布它的設(shè)計(jì)筆記,生怕不小心泄露了有關(guān) Windows 8 的信息,給自己惹上麻煩!這為創(chuàng)新創(chuàng)造了一個(gè)可怕的氣候,對(duì)于我們開源C#編譯器的希望來說,這當(dāng)然不是好兆頭。
????????E然而,在Windows 8運(yùn)行完之后,該公司開始轉(zhuǎn)型并找到了新的方向,走向新的領(lǐng)導(dǎo)層和截然不同的核心理念;我們今天所知道Microsoft。開源運(yùn)動(dòng)現(xiàn)在迅速開始在Microsoft內(nèi)部扎根。
????????F# 已于 2010 年發(fā)布,具有開源許可證和自己的基金會(huì) -?F# 軟件基金會(huì)。圍繞它成長的充滿活力的社區(qū)很快成為我們所有人羨慕的對(duì)象。我們的團(tuán)隊(duì)大力推動(dòng) Roslyn 獲得開源生產(chǎn)許可證,最終出現(xiàn)了全公司范圍的基礎(chǔ)設(shè)施,使之成為現(xiàn)實(shí)。
????????到2012年,Microsoft創(chuàng)建了Microsoft開放技術(shù);一個(gè)專注于開源項(xiàng)目的組織。Roslyn 轉(zhuǎn)到Microsoft開放技術(shù)公司,并正式成為開源。它是一個(gè)很好的候選者:開發(fā)資源都是內(nèi)部的和眾所周知的,項(xiàng)目本身是獨(dú)立的,沒有很多可能造成許可沖突的依賴關(guān)系。
三、Roslyn橫空問世
????????2014 年 3 月,在舊金山舉行的 Microsoft “Build”開發(fā)者活動(dòng)中,Anders Hejlsberg 展示了 Roslyn?作為一個(gè)開源項(xiàng)目,Roslyn?于 2 月 0 日通過 CodePlex(Microsoft 年退役的開源托管平臺(tái))在 Apache <>.<> 許可下發(fā)布。
????????Project Roslyn in CodePlex under Microsoft Open Tech
????????與此同時(shí),.NET Foundation被宣布為包括Roslyn在內(nèi)的.NET項(xiàng)目的所在地。
????????在戶外呼吸著新鮮空氣!即使我們開始從 CodePlex 的開放性中獲益,Microsoft剩下的程序開源障礙也得到了理順,今天開源是我們?cè)谠S多團(tuán)隊(duì)中工作方式中直接且不可或缺的一部分。
我們不再將 GitHub 視為發(fā)布場(chǎng)所——它只是我們工作的地方。
????????在其他方面,公司也意識(shí)到我們不需要控制一切。很明顯,CodePlex 沒有充分的理由出現(xiàn)在世界上,Roslyn 加入了其他項(xiàng)目,從 CodePlex 遷移到 GitHub,當(dāng)時(shí)GitHub 實(shí)際上是開源項(xiàng)目的大本營。不僅源代碼,而且構(gòu)建它的過程都在 GitHub 中:我們不把它當(dāng)作一個(gè)發(fā)布場(chǎng)所——它只是我們工作的地方。
????????羅斯林今天在 GitHub 上
????????C# 語言設(shè)計(jì)和編譯器實(shí)現(xiàn)現(xiàn)在是完全開放的流程,有很多非Microsoft參與,包括由外部貢獻(xiàn)者構(gòu)建的整個(gè)語言功能。C# 的價(jià)值在于屋頂,不僅通過貢獻(xiàn)功能和錯(cuò)誤修復(fù)來擴(kuò)展工作量,還通過開源提供的即時(shí)每日反饋循環(huán)獲得的洞察力和課程更正。文章來源:http://www.zghlxwxcb.cn/news/detail-606531.html
????????這是一段漫長而狂野的旅程,對(duì)我來說,這象征著Microsoft在過去十年中經(jīng)歷的巨大變化。Roslyn的掘金始于黑暗,在開放的想法上成長,并通過開源的力量在今天爆發(fā)出一百萬種不同的用途。文章來源地址http://www.zghlxwxcb.cn/news/detail-606531.html
到了這里,關(guān)于【C#】微軟的Roslyn 是個(gè)啥?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!