為什麼 c#/.net在國內的人氣遠不如國外?

為什麼 c#/.net在國內的人氣遠不如國外?

水文圖一樂

最后更新 2022/3/26 上午9:23
Python咖啡
预计阅读 6 分钟
分类
.NET
标签
.NET C#

這個話題有點自黑的意思,我從.net 1.1 開始玩.net,到現在已經 11 年了,我是看著.net 成長起來,在中國壯大的,也見證了近幾年.net 被各種嫌棄,其實說到底還是中國的架構師太少,我是說真正懂行的架構師,一個資深的架構師是不會直接攻擊一門語言或者嫌棄一門語言的,而是會從作業系統、伺服器應用容器層面是分析性能、實現成本以及有多少坑。

我其實和很多客戶、it 經理、高級軟體工程師、架構師聊過,所以對事實有一定的了解。首先呢在中國技術圈氛圍就是很浮躁的,浮躁到什麼程度,還是中國人的老毛病,喜歡跟風、喜歡一窩蜂,人家用 node.js,我們就用 node.js;人家用 docker,我們也用 docker;人家用 cloudfoundry,我們也用 cloudfoundry,總之人家的東西比我們家先進,所以我們一定要跟上。拿 docker 來說,其實很多傳統企業根本沒有用,也就是幾家網際網路大廠對它情有獨鍾;node.js 我承認它性能好,但畢竟是弱語言編程,其實代碼的維護成本並不低,而且你需要僱傭很資深的 javascript 開發人員,薪水自然是水漲船高。其實很多所謂的架構師、it 經理考慮的不是遷移成本、運維成本,而是怎麼找點事做,這樣才能體現出自己的價值,我總結為四個字“無中生有”。

net 中的 c#語言(我的最愛)其實從 1.0 發展到 6.0,目前已經非常成熟了,特別是語言層面的異步編程支持,已經部分超越了 java,那為什麼還是沒有公司願意選它呢?從我的角度看,有幾方面的原因。

首先微軟的 ide 實在是太好用了,好用到基本上找個應屆生,就算不懂編程,1-2 天內也能寫個控制台程式,當然是簡單的;但如果是 eclipse,配環境也要好一會兒,但這意味著什麼知道嗎?門檻!人的門檻!越好用的東西聚集的人相對越 low,當然並不是說用.net 的人爛,而是說平均而言,真正懂.net 的開發人員相對於懂 java 的開發人員要少,因為人家的 ide 用起來各種不舒服,還不如用 notepad++和 java.exe 做編譯。這就導致了 java 的工程師很多時候必須知其然知其所以然,否則它沒法幹活,比如 jar 打包。但很多.net 的程式設計師估計連怎麼用命令行編譯程式都不會,這就是問題。

其次一些號稱懂.net 的架構師覺得.net 簡單,所以他們不願意給.net 開發高薪津,這也間接導致了很多.net 開發人員開始轉向其他語言,其實這種模式就是個惡性循環。到最後的結果就是,大量潛在的優秀開發人員放棄.net,畢竟現在是向錢看的年代。. net 從我的角度看是非常適合做後端,這麼多年技術的積澱使得.net 得到了社區廣泛認可,其實在國外懂.net 還是很吃香的,根本不愁找不到工作,所以國內一些公司的邏輯我覺得很奇怪,甚至覺得神奇,反正我就是不招.net 工程師,我公司比較高大上,所以只有高達上的 java、node.js 才能配得上我司,我只能說,不作不死。

再者,.net 可以抄的現成架構並不多,而真正懂.net 的資深架構師在中國基本屬於稀有物種,因為這些公司的所謂架構師水平有限,他們自己用.net 寫不出好的架構代碼(我通常喜歡叫他們集成師,即不會寫代碼或者寫不好代碼的架構師),最終還是選 java,因為 java 有一大堆架構可以抄,而且很多是開源的,就算不會也至少能抄個 4-5 成吧。當然咯,從項目風險可控角度這是可以接受的,但其實資深架構師是可以解決這些問題的,在國外很多架構牛人基本都是自己寫框架的,這也就能解釋為什麼優秀且流行的框架基本上都是洋人寫的,比如 java 的 structs、spring framework, .net 的 orchard、dnn、http://asp.net biolerplate 等。

最後,微軟作為.net 親爹自然難辭其咎,自從納總上台後,更是拼命推行擁抱開源政策,擁抱了一堆非.net 系語言,儘管推出了跨平台.net 即.net core,但在.net 市場布局和推廣方面與過去並沒有什麼明顯不同,說白了就是表現對.net 份額出無所謂的態度。不過微軟一直是行業中比較傲嬌的公司,它覺得只要自己想推什麼肯定能成功,所以對市場份額從來表現的不太看重,他覺得根本不需要在意,遲早是微軟的。然並卵,微軟手機的失敗讓微軟感受到了自己能力的有限,最近貌似在調整策略,其實回過頭來看代價非常高,單收購諾基亞就花了 85 億,我只能讚嘆微軟真土豪,有錢任性,呵呵。

我必須承認近 2 年.net 的中國市場份額在不斷下降,很大程度上與.net 的市場推廣策略有關,給行業內一種中低端程式語言的假象,在語言推廣初期,這種策略沒有什麼錯誤,便於用戶上手和接受,但是如今都 10 年了,重新樹立.net 高大上技術的形象非常必要。

有人可能要說我屬於老王賣瓜自賣自誇了,我舉幾個真實的.net 案例你就懂了,滬牌拍牌系統後台是.net 寫的,並發至少幾千每秒,這個大家懂的;stackoverflow 核心是.net 寫的,網站並發 3000 每秒,資料庫並發 8000 每秒;摩根斯坦利交易客戶端以及協議是.net 寫的;nasdaq 的交易系統是.net 寫的,後台跑的 sql server;騰訊有大量後台系統用.net 寫,騰訊甚至已經使用跨平台.net(mono)很多年,部署於它的 tlinux 系統集群中;攜程有大量系統用.net 寫成,日均動態 pv 是 3 千萬。

事實勝於雄辯,我就不多說了,你們懂的。

Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2026/2/7

aot使用經驗總結

從項目創建伊始,就應養成良好的習慣,即只要添加了新功能或使用了較新的語法,就及時進行 aot 發布測試。

继续阅读