微軟是怎么把C#玩砸的?
C#為什么不流行?
說(shuō)到底這個(gè)鍋該鮑爾默來(lái)背,他差點(diǎn)都把比爾蓋茨一手打下的微軟江山給敗光了,更別說(shuō)一個(gè)C#了。C#能做的JAVA基本都能做,JAVA不能做的有其他語(yǔ)言比C#做得更好,然后你的開(kāi)源和跨平臺(tái)還姍姍來(lái)遲,C#拿什么跟JAVA斗?
行業(yè)有個(gè)笑話,.NET最厲害的地方是跨平臺(tái),但是.NET最大的笑話也是跨平臺(tái)。除了C++之外,能在.NET上運(yùn)行的編程語(yǔ)言,是唯一一個(gè)能做到在所有平臺(tái)上都能運(yùn)行的編程語(yǔ)言,能把桌面MacOS、Linux、Windows,移動(dòng)Android、iOS、WP(假設(shè)這玩意兒還在)全部跨完。不過(guò)遺憾的是,理想與現(xiàn)實(shí)總是殘酷的,理論上是可以跨平臺(tái)的,不過(guò)遺憾的是這么多年了微軟一直都沒(méi)跨出去。
這些年C#過(guò)得其實(shí)還挺憋屈的,前面的C/C++、JAVA交替做老大,兩個(gè)老前輩C、C++時(shí)而來(lái)個(gè)青春走一回、容光煥發(fā)的,PHP、Python也是時(shí)常爆發(fā),Go語(yǔ)言這個(gè)年輕人也是越來(lái)越強(qiáng)大,都實(shí)現(xiàn)自舉了,可是C#呢打不過(guò)老年人,也打不過(guò)年輕人,其實(shí)還蠻慘的。

C#之父
C#也不是一無(wú)是處
Windows應(yīng)用程序,現(xiàn)在很多都是C#開(kāi)發(fā)的,MSDN、SQL Server Management Studio、Bing的很多服務(wù),也都是用C#開(kāi)發(fā)的,現(xiàn)在office 365、Windows、Visual Studio也用了一些C#開(kāi)發(fā),C#現(xiàn)在還是Unity開(kāi)發(fā)游戲的主要腳本語(yǔ)言。
微軟自己的產(chǎn)品用C#自然是無(wú)可厚非,還有很多非微軟網(wǎng)站也是用C#開(kāi)發(fā)的。程序員問(wèn)答網(wǎng)站StackOverflow、國(guó)內(nèi)著名的技術(shù)博客網(wǎng)站博客園、國(guó)內(nèi)程序員社區(qū)CSDN、開(kāi)源中國(guó),都是用C#開(kāi)發(fā)的。以前當(dāng)當(dāng)、京東的核心技術(shù)棧也都是C#,不過(guò)后來(lái)才轉(zhuǎn)向了JAVA技術(shù)棧。
C#其實(shí)能做的事情還蠻多的,Windows桌面應(yīng)用開(kāi)發(fā),Web應(yīng)用,也可以用來(lái)做移動(dòng)開(kāi)發(fā),不過(guò)做得都比較差強(qiáng)人意。做桌面開(kāi)發(fā)弄不過(guò)C++、現(xiàn)在甚至連Electron都弄不過(guò)了,除了一些B端應(yīng)用,大家基本都不會(huì)選C#,Web應(yīng)用方面弄不過(guò)JAVA和PHP,移動(dòng)方面弄不過(guò)JAVA和swift,然后大企業(yè)也都有自己的技術(shù)棧,可是這些技術(shù)棧都跟C#無(wú)關(guān)。

visual studio MacOS版本
C#、.NET,以及ASP.NET的關(guān)系,C#錯(cuò)過(guò)第一波紅利
.NET是一個(gè)平臺(tái),本身實(shí)現(xiàn)的方式當(dāng)然也是各種各樣的庫(kù),理論上各種各樣的編程語(yǔ)言都可以編譯成其IL,然后在這個(gè)平臺(tái)上運(yùn)行,當(dāng)然這個(gè)平臺(tái)上面的編程語(yǔ)言很多,C#毫無(wú)疑問(wèn)是這里面最重要的一個(gè)。ASP.NET是.NET主要用來(lái)做web開(kāi)發(fā)的技術(shù)方案,當(dāng)然這里面主要也是C#作為核心。
JAVA在96年面世,C#則是在2000年面世,JAVA的先發(fā)優(yōu)勢(shì)并沒(méi)有那么明顯,可是JAVA開(kāi)源、免費(fèi)的特點(diǎn),讓JAVA迅速攻城拔寨。C#有個(gè)好父親、還是含著金鑰匙長(zhǎng)大的,C#的創(chuàng)造者安德斯·海爾斯伯格是Turbo Pascal編譯器、Delphi的作者,在設(shè)計(jì)C#之前,已經(jīng)是計(jì)算機(jī)工業(yè)界最偉大的科學(xué)家之一,后來(lái)又設(shè)計(jì)了TypeScript,打造了整個(gè).NET體系。
C#語(yǔ)言設(shè)計(jì)本身在很多方面都是要超過(guò)JAVA的,可是吧微軟早期的策略一直比較保守,不愿意跨平臺(tái),也不愿意開(kāi)源,盡管安德斯·海爾斯伯格一直在努力推動(dòng)這件事情,保守的鮑爾默領(lǐng)導(dǎo)下的微軟錯(cuò)過(guò)了C#最好的幾年,可是在這期間JAVA等編程語(yǔ)言不斷攻城拔寨,C#終于還是輸?shù)袅宋磥?lái)。

編程語(yǔ)言排行榜
C#輸?shù)袅艘苿?dòng)互聯(lián)網(wǎng),大數(shù)據(jù)、云計(jì)算、AI也全都錯(cuò)過(guò)了
編程語(yǔ)言總得要抓住幾個(gè)機(jī)會(huì)才能發(fā)展得更好,C#除了抓住了Windows,其余全都沒(méi)有抓住,也許這就是命,當(dāng)然跟微軟自己作也有很大的關(guān)系。
你看Android爆發(fā)的時(shí)候選擇了開(kāi)源的JAVA,盡管現(xiàn)在Google因?yàn)檫@事兒天天被Oracle惡心;iOS自然不用說(shuō),人家先是objective-C、接著是swift,這個(gè)微軟沒(méi)辦法;到了大數(shù)據(jù)時(shí)代,JAVA和Python又大發(fā)威風(fēng);云計(jì)算來(lái)了吧,你看Go語(yǔ)言又逐漸爆發(fā)了,越來(lái)越多的移動(dòng)互聯(lián)網(wǎng)企業(yè)比如字節(jié)跳動(dòng)、B站也都轉(zhuǎn)向了Go語(yǔ)言,就連Google、百度、騰訊也都在用Go語(yǔ)言;人工智能時(shí)代,C/C++做底層,Python用來(lái)做上層應(yīng)用和算法。
你看幾乎每一個(gè)重要的技術(shù)變革都跟C#無(wú)關(guān)。在大企業(yè)里面微軟自己的核心技術(shù)棧都是C++,Google也是C/C++,F(xiàn)acebook是C和PHP,百度是C/PHP/Go,字節(jié)跳動(dòng)是Python/Go,阿里巴巴是JAVA,B站是Go語(yǔ)言。你同樣可以發(fā)現(xiàn),這里面沒(méi)有一家企業(yè)將C#作為核心技術(shù)棧。
C#本來(lái)可以有個(gè)很好的發(fā)展的,可惜微軟自己作死,浪費(fèi)了C#發(fā)展最好的幾年,等到納德拉上臺(tái)之后,試圖通過(guò)開(kāi)源來(lái)發(fā)展C#的時(shí)候,已經(jīng)來(lái)不及了。未來(lái)看微軟的決心有多大,比如微軟是否愿意將全功能的Visual Studio移植到MacOS平臺(tái),假設(shè)微軟帶著Visual Studio威力還是有點(diǎn)大的,不過(guò)這也可能反過(guò)來(lái)威脅到Windows的地位。

Go語(yǔ)言