C# 這麼優秀的語言,現在到底出了什麼問題?

為什麼市場招聘越來越少,大公司都不使用。大公司用 C++ 可以理解,但為什麼即使用 Java 也不用 .net?

請不要以語言之間相互攻擊為目的來回答,每個語言都有值得喜歡的地方。


F#默默哭。


前排賣瓜子汽水,在此話題下順便兜售道具[對C++寶具「誓約效率之劍」][對PHP寶具「花樣黑之槍」][對java寶具「不科學的太占內存的電磁炮」][對C#寶具「跨平台然並卵之刀」]祝各位客官打的盡興,別問我用什麼寶具,反正lisp是最吼dswqa#mh


C#這個語言沒出什麼問題。現在還被各種語言抄特性,包括不限於:Java、EcmaScript,說明這個語言是非常優秀的。

最後就像幾乎所有程序員最終總會熟悉C語言一樣(現在一半的程序設計語言有至少一半的基本語法來自於C語言),以後也說不定大部分的程序員被迫熟悉了C#語言,儘管他們還保留著自己的各種優越感。


VB哭暈在廁所,當年窩到底做錯了什麼!QAQ


大多數公司用Linux做伺服器。


C# 語言很美,VS IDE很強大,開發效率非常高。

當然美不美是主觀的,Java也挺美,但是我為啥總感覺有點卡呢。

.NET性能甩JVM幾條街,(對我說的是幾乎所有的jvm實現) ;依我之見.net 之所以沒有被廣泛應用還是開源的太晚了。現在微軟終於明白過來了,但是還是沒有完全開源。

桌面領域c#性能不如c++,web領域http://asp.net,不開源占著Windows的坑,silverlight/wpf這些就是看起來炫, 跨平台還有一些核心庫的問題(開源之後好一些)。

微軟有一系列非常優秀的產品,只不過受制於Windows的贏利模式;期待有一天微軟把windows開源。到時候就知道人民到底選擇哪個了。


人工貴的地方很多.NET的需求和項目


c#非常優秀適合從零到一,雖然java開發效率比不上.net的,但是java直接拼裝啊……開源庫那麼多


Linux, Linux and Linux

因為從來沒有以Linux支持為考慮目標, 進一步導致缺乏良好的生態圈。mono從來也沒成氣候。現在在開時開源並支持, 已經有些晚了


在語言上,C#很優秀並沒有什麼問題。

但是對於一個公司來說,要考慮的東西很多,不僅僅是語言的好壞這一方面,利益才是導向。

其實我最想說,這個問題打上了微軟和C#的標籤,關注這兩個標籤的大多數是軟粉,你覺得會有客觀的回答嗎?


c#依然優秀,依然是在語言排行榜前面。你去面試的地方不對,就如同你非要去沙漠找水喝一樣。


http://vb.net都沒說什麼……


生態圈問題吧,java用的人這麼多,開源庫這麼多,想做什麼都很快很方便啊。選擇不同的語言都是有它的原因的,而且這些原因並不總是只取決於這門語言是不是優秀。

前段時間就碰上了這個問題,需要寫一個用來模擬基於圖論的博弈論的輔助研究工具。那麼問題來了,到底用什麼語言好呢?

1. 由於是學術上的工具軟體,不想太折騰,只要能用起來就行了。

2. 由於需要結合圖論和博弈論,查了相關的庫和工具,發現用已經提供了圖模版的庫自己做擴展比較方便。

3. 由於運算量極其龐大,希望能在我不太刻意優化性能的前提下也能保持很好的性能。

4. 希望能比較容易的用分散式計算,比較容易的接入各種並行計算框架里。

綜上,基本上就是java最方便了。c++其實也可以做,但是要比java難很多,c#太缺乏生態支持,其它很多語言我不專門優化,性能很是問題。

當然,在寫的時候,由於用到了一些范型的東西,還有本來就是學術上的東西嘛,寫的要多醜有多醜……一邊寫我就一邊在吐槽java語言的實現是多麼醜陋……


c#沒出什麼問題,耍花槍的總喜歡秀自己的拳腳,有底蘊的總是默默練自己的功夫。

再就是一個所謂「開源」陷阱,商業化並非什麼罪惡,付出多少回報多少,合理合法。盜版用多了再加上小聰明,遇到問題自己也能折騰出來。卻不知道很多事情都是前人走過的路,正規的商業服務,能夠提供更加準確有效的解決方案,可以少走彎路。


個人觀點。

C#的問題不在於不優秀,而在於不夠優秀

C#好不好?好!.NET好不好?好!Visual Studio好不好?好!

但是,C#是否足夠好,以至於我願意忍受它糟糕的生態?

Visual Studio是否足夠好,以至於我願意扔掉Mac專門買一個Windows電腦開發?

.NET是否足夠好,以至於我願意放棄其他平台的市場,讓軟體獨佔Windows?

很明顯,C#不夠好。

一個典型的例子是:Quora在選擇技術棧的時候,曾經考慮過C#,他們認為C#的確是一門出色的語言,但由於使用C#就意味著綁定微軟技術棧,最終放棄了。

近幾年,.NET開源了,這是一個好事。但是,微軟的這個亡羊補牢的舉措是否真的為時不晚,還很難說。


我手下帶個小團隊,因為某些原因,人不是我招的,用java/c++/c的都有,但是做我的項目,全部改用c#,沒別的,1、我們客戶的系統全部是windows。2、項目時間緊,開發效率我只看到c#符合要求。3、類庫豐富,對我們cs結構系統足夠。4、學習曲線平緩,容易上手。5、.net程序運行效率可以滿足大部分情況。6、其他語言我早就試過了,只有c#符合我們行業特點


做了一張表,僅代表個人看法,我覺得C#的困境恰巧就是現在Microsoft的困境,C#工作難找,是因為C#有優勢的塊現在體量都小,而體量大點的也就企業應用這一塊了;未來的突破口應該在UAP/UWP這一塊,但需要建立在Windows10大量普及的前提下,加油!

題外話:對於Microsoft來說,單從開發語言角度看,移動這一塊的突破口定位到C++上來,成功的機會或許更大一些,畢竟不論Android還是iOS,都能和C++兼容,市面上也有成功的先例(coco2dx),VS2015里基於C++的iOS/Android開發環境已經有了,需要的僅僅是提供一套C++上的跨平台UI庫;


互聯網又不是IT的全部,你可以改去金融公司、外包公司、負責政府民生基礎系統的軟體公司去當程序員啊。除了互聯網公司以外的大多數IT公司/部門都用的C#和Windows。唯一的問題就是你入職之後沒有虛名罷了。


我自己的看法是這樣的:

技術沒有高低貴賤,只有合適與不合適。

  • 根據業務場景技術選型

不同的業務場景關注的點不同。選型時可以這樣考慮,看一門技術:優點是否不可缺少,缺點是否能夠接受。

像傳統軟體如ERP,這種擁有高度複雜的業務,要求開發效率高,性能相對要求低。那麼JAVA .NET都可以,C++就會少一點。

像互聯網這種動不動就百萬級別日活的,場景就不同與ERP了,可能業務很簡單就是一個簡單的登錄,刷新列表,但是並發量上來以後就很恐怖了。於是雲計算、大數據就應運而生。雲計算和大數據唾手可得的基本上都是JAVA和C/C++開源項目,.net就捉襟見肘了。

JAVA相對C++開發效率高些,但是性能會差些,比如ScyllaDB:用 C++ 重寫後的 Cassandra ,性能提高了十倍,通常JAVA重寫到C++會有2-5倍提升,在分散式下100台雲主機2-5倍的提升十分可觀。所以有句話叫打江山用JAVA,守江山用C/C++。

  • 根據生態環境技術選型

生態環境分為開源項目和技術自身整套環境(操作系統、運行容器、開發工具、文檔、社區等)。

在這開源項目方面java和c++開源項目比較多,像是負載均衡的nginx,分散式文件存儲的HDFS和基於HDFS的hadoop,以及hadoop的一系列生態環境,NoSQL分散式資料庫,KV分散式緩存,都是用來解決大用戶量下的計算和IO的問題。當單個主機縱向擴展無法支持時,分散式橫向是一個很好的解決方案。

在操作系統方面JAVA和C++都支持跨平台,.NET虛偽的跨平台然並卵。舉個例子,我一個朋友的公司有200台雲伺服器,如果技術全換成JAVA,那麼就能跑在Linux伺服器上,那麼每台雲主機就能少點CPU少點內存,那麼每台雲主機就更便宜,那麼公司就盈利了。Windows那個界面就要多吃不少CPU和內存。

  • 根據歷史積累技術選型

如果說C++開發效率低,那麼可能是在說沒有適合的高開發效率庫和框架。對於像大一點的互聯網公司自然會有很多自己的積累,開發效率低這個就被接受了。性能高這個優點對於大互聯網公司是不可缺少的,所以C++是他們的首選。

所以.NET就進入了惡性循環,我失業了。


C#一直挺好的,微軟宣傳部門真是

前排圍觀開戰,瓜子花生熱水都準備好了。


推薦閱讀:

如何分辨新聞(信息)的真假?客觀可行的方法有哪些?
為什麼有些新聞工作者會做出有偏差的報導?
錯時停車--停車位錯時租賃共享平台在中國可行么?
在上海開一家互聯網咖啡館,應該開在哪兒? 怎樣選址?
如何對付咄咄逼人的面試官?

TAG:互聯網 | 程序員 | 編程語言 | 編程 | C# |