特別是在國內,
在職位搜索網站indeed,職位關鍵字與數量的對應關系如下(搜索時實時數據):
Java - 49624
Python - 16802
JavaScript - 25452
C ++ - 36569
C# - 14267
很顯然,C#相關的職位數量是明顯落后的,這是為什么呢?
C#由編程界的神級人物Anders Hejlsberg主持設計,在很多方面都比JAVA要好,毫無疑問,它是一門非常好的計算機語言。但是,一門程序語言的發展不是靠某一家公司或某幾家公司就能撐起來,而是要靠主推公司的戰略發展及生態的促進,C#則卻恰好在這兩點不占優勢。
首先來說C#在語言的發展過程中所錯失的良機。
第一,C#跨平台政策的失誤
C#最初只能在Windows平台上運行,從PC互聯網時代向移動互聯網時代轉換過程中,C#並沒有像JAVA一樣做出適應性的轉型,以至於C#無法運行在安卓機器上。
Windows平台簡單易用,對於技術人員不多的非IT類中小企業,的確是有吸引力的。但是對於硅谷的IT企業來說,技術並不是問題,他們擁有大量的專業服務器管理人員,所以硅谷的IT企業更傾向於使用免費的Linux系統,比如CentOS或者Ubuntu。
牽一發而動全身
免費的Linux提供了相當完善的服務器運行環境及一整套工具鏈,比如Apache web服務器,Mysql/postgresSQL數據庫,Memcache、Redis緩存服務器等。雖然在管理的直觀性上,Linux似乎比Windows的窗口化圖形化界面要落伍一點,但是性能上不相上下,甚至更加出眾。所以盡管配置更加繁瑣,更多的公司還是選擇了Linux系統作為服務器操作環境。而C#在Linux下面基本沒有用武之地,這就大大限制了C#這門語言的流行程度。
雖然后來C#迂回推出了Xamarin,還免費開源了,但是已經錯失了最好的移動開發時機,就像是微軟自己的WP手機操作系統沒有抗衡過蘋果和安卓一樣,在移動開發領域C#也同樣錯失了移動互聯網的時代。
第二,C#仿JAVA而生,大數據及人工智能方面卻沒能超越JAVA
C#的最大的競爭對手——JAVA,實際上算得上是C#的爸爸。JAVA誕生於1995年,它的一次編寫、到處運行的概念,掀起了一場革命。而C#誕生於2000年,是微軟.Net計划的一部分,是微軟為了替代JAVA而研發的。
換句話說,C#是可以被替代的。C#與JAVA在語法和架構上非常接近。C#能做的,JAVA也能做。並且JAVA本身就是為跨平台設計的,比C#更具有靈活性,在Linux下面有很好的支持。在庫支持方面,JAVA也要比C#好的多。在Windows上面可能會有一些不錯的C#庫,但是幾乎無法在Linux/.Net core下面工作。
而從傳統開發到大數據及人工智能開發的轉換過程中,自谷歌的Hadoop出現以來,大數據的開發語言好像天然就是JAVA一般,雖然Hadoop同時提供多種語言的接口,但是由於底層JVM的框架運行,使得JAVA語言在大數據時代遠超C#,而人工智能的發展及對數據處理的需求,又使得Python趕超C#,成為數據處理的神器,以至於時常要擁抱變化的程序員更多的投入JAVA和Python的懷抱。
雖然微軟為了適應大數據時代的到來,提供了很多工具庫供C#編程人員更好的與Hadoop平台協同工作,但不可否認JAVA的正統性和便利性使得C#的地位在大數據時代被日益邊緣化。
其次我們要說,C#的封閉性也是讓它失了人心的重要原因。
第一,由於C#運行環境的封閉性,導致了C#語言被限制在Windows平台。
在微軟總裁納德拉之前,微軟對Linux及開源軟件界采取了敵對的態度,比爾蓋茨曾痛斥開源軟件為病毒,自然也拒絕為Linux系統提供軟件支持。同時,微軟將C#與Windows系統、IIS服務器、MSSQL這些工具軟件深度捆綁。如果你想用C#,則必須購買微軟的系統、數據庫等全家桶,這些費用和羈絆讓硅谷的IT感到非常不爽,無形當中形成了一股反微軟的潮流。
windows服務器授權費用解析
等微軟意識到自己在硅谷的新興公司中已經被邊緣化,開始想與Linux等開源軟件和系統合作,使C#在Linux上運行時,硅谷卻早已形成了自己的開源工作軟件生產氛圍:完善的技術棧,社區及學習環境,換句話說硅谷基本不需要C#了。所以說,在運行環境上的封閉性導致了C#的沒落。
第二,由於開發環境的封閉性,導致了C#語言開發成本高昂。
C#開發不僅依賴Windows系統,而且嚴重依賴Visual Studio開發平台,另外,由於選用了C#,數據庫開發不可避免的要涉及到SQL Server數據庫,最為致命的是,這些都是收費的,而且微軟的產品都挺貴,IDE要收費,數據庫之類的要收費,對公司而言這是一筆不小的開支,因此很多大公司會因為成本問題選擇放棄C#。如果采用Linux+Eclipse+JAVA的開發環境,完全可以用免費的方式解決,這是C#面臨嚴重的開發環境封閉性問題。
來看一下硅谷一般IT公司代表的技術棧:
Uber的技術棧
Facebook的技術棧里同樣也沒有C#的影子
第三,由於社區的封閉性,導致了C#的使用體驗不那么美好。
目前來看,在大數據時代來臨之際,隨着Python開源社區的發展,JAVA開發社區的開源也愈加壯大,但是C#卻依然是閉源的,在當今服務至上、體驗至上的時代,閉源的思維沒有及時轉變,就被時代所淘汰了。
硅谷主要IT公司語言與框架技術棧最新排行榜:前十名里面沒有C#的位置
沒有公司使用,就不會有人學習,沒有人學習就不會有人招聘,這是一個雞生蛋、蛋生雞的問題。
綜上,C#是一門優秀的語言,由於發展初期錯失良機而沒有形成趨勢、產業鏈及好的學習氛圍,但是隨着微軟對開源社區的改變及合作態度,采用C#的公司數量也開始逐漸增多,特別是U3D的熱潮,也許會進一步推動C#的普及。相信隨着時間的推移,C#或許能在硅谷的IT公司中擁有一席之地。