開(kāi)發(fā)者 Stefan Dobrev 在博客發(fā)表了名為《The Sad State of .NET》的文章,分析了 .NET 為何從曾經(jīng)的輝煌變成了如今的黯淡處境。
Stefan 在 2004 年以 .NET 開(kāi)發(fā)者的身份開(kāi)始了其職業(yè)生涯,當(dāng)時(shí)的 C# 還屬于新晉編程語(yǔ)言,吸引了不少開(kāi)發(fā)者想體驗(yàn)一把。Microsoft 也在為積極推廣 .NET 制定策略,例如贊助本地大學(xué)和最大的本地技術(shù)活動(dòng) - Microsoft Days。因此,Stefan 認(rèn)為這是一個(gè)屬于 .NET 的年代。
最初,大家將 C# 和 .NET 視作 Java 和 JVM 的“邪惡雙胞胎” —— 人們普遍認(rèn)為 C# 從 Java 身上復(fù)制了許多優(yōu)雅的特性過(guò)來(lái),并消除了其某些瓶頸 —— 從諸如具有 getter 和 setter 的屬性到影像更大的特性如值類型和屬性。所有這些基礎(chǔ)工作為將來(lái) C# 要進(jìn)行的創(chuàng)新奠定了基礎(chǔ)。事實(shí)上后來(lái)也確實(shí)發(fā)生了:運(yùn)行時(shí)泛型(在 IL 階段)、LINQ、動(dòng)態(tài)以及 async/await。特別是 async/await 對(duì)業(yè)界產(chǎn)生的影響,以至于它改變了整個(gè)行業(yè),現(xiàn)在每種主流的編程語(yǔ)言幾乎都具有此功能(甚至包括 C++)。
但來(lái)到 2010s 中期,C# 的情況發(fā)生了變化。主要是 C# 之父 Anders Hejlsberg 將他的工作重心從 C# 轉(zhuǎn)移到了 TypeScript,導(dǎo)致 C# 語(yǔ)言創(chuàng)新很少甚至沒(méi)有。另外,我們所處的整個(gè)行業(yè)開(kāi)始向云過(guò)渡,但是 .NET 顯然尚未為此做好準(zhǔn)備。
盡管 .NET 被標(biāo)記為多平臺(tái),但 .NET 的目標(biāo)平臺(tái)主要是 Windows(以及通過(guò) Xamarin 實(shí)現(xiàn)對(duì)移動(dòng)平臺(tái)的支持)。至于云開(kāi)發(fā)領(lǐng)域中的核心平臺(tái) Linux 對(duì) .NET 來(lái)說(shuō)不是一等公民,甚至也不是二等公民。但云開(kāi)發(fā)幾乎完全是圍繞 Linux 和 Docker 進(jìn)行的。雖然 Microsoft 后面又推出了 .NET Core,但始終還是慢了一步。
另一方面,Java 也似乎進(jìn)入了復(fù)興的時(shí)代。經(jīng)歷了多年的停滯不前,Oracle 重新復(fù)活了該語(yǔ)言并將其拉回到正確的軌道上。Java 的語(yǔ)法在快速進(jìn)步,其生態(tài)系統(tǒng)也為云開(kāi)發(fā)領(lǐng)域提供了重要的軟件:大數(shù)據(jù)(Hadoop)、搜索引擎(Elasticsearch)和消息傳遞/流處理(Kafka)等,這些都是讓 Java 脫穎而出的關(guān)鍵因素。
后來(lái)居上的 Python 也在云開(kāi)發(fā)領(lǐng)域占有一席之地,它將自己定位為機(jī)器學(xué)習(xí)新領(lǐng)域的主要參與者,并在有學(xué)術(shù)界提供強(qiáng)大的支持,所以在云開(kāi)發(fā)領(lǐng)域也倍受歡迎。
.NET/C# 呢?它們現(xiàn)在的定位是什么,在云時(shí)代的主要應(yīng)用又將是如何?這些問(wèn)題就像達(dá)摩克利斯的劍一樣懸在頭上。未來(lái)會(huì)證明一切,但可以肯定的是,.NET/C# 需要像過(guò)去一樣進(jìn)行創(chuàng)新了。