為什么使用C#開發軟件的公司和程序員都很少?


特別是在國內

在職位搜索網站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公司中擁有一席之地。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM