標籤:

asp.net 是不是受人鄙視?

為問題是「為什麼」,非題主改為「是不是」。

————————http://asp.net的開發者是不是很受大家的鄙視啊?或者說把http://asp.net作為自己的最擅長的技術特長填寫在簡歷的第一個技能欄里是不是會給其他人一個疑問「why?」


【原題為「為什麼」,而非「是不是」。】

對於新問題,要看對「鄙視」的定義。就我個人的體會來說,http://asp.net的確存在被一些人懷有偏見的現象。原答案回答了對於被「鄙視」的情況下「鄙視」的原因,當然並不表示這些理由是正當的。

======原始答案分割線

首先強調,我是一名http://asp.net開發者,並不認為其應該受鄙視,只是對於其目前或者以後被鄙視可能的原因做一個粗略分析,方便找出問題的所在。

傾向於認為一味的自以為優越然後鄙視其他語言或平台都是沒有任何意義的。我個人希望的是消除偏見,不管是針對其他語言還是被其他語言針對。

有很多層次的原因,依鄙視鏈發出者對http://asp.net的了解水平而異。

1. 微軟

在很多人,特別是與開發無關人員的印象中,微軟是一個專門壟斷、高收費、壓榨無產階級勞動人民的公司。因此,支持微軟就是在助長其壟斷的趨勢,不利於世界和平與發展。對於開發人員,部分可能認為支持微軟就是在反對開源,阻礙代碼界的進步。甚至可能在沒有做過了解的情況下認為微軟的所有東西都是漫天要價的,自己肯定用不起,在生產環境下又不能用盜版,所以直接放棄。

2. Windows

作為一個操作系統來說,Windows一旦和其他系統比起來,很多時候都逃脫不了被鄙視的命運。由於各種各樣的原因,很多人(包括部分開發人員)會認為Windows效率低下、穩定性差、兼容性差,以及在設計上存在各種缺陷,甚至於反智等等。使得很多人在自己沒有並沒有做過Profile也沒有看過別人的Profile的情況下想當然假定Windows不適合作為伺服器操作系統。(當然有部分問題是缺失存在的,但其實很多問題都是XP/Server 2003時代的問題,早已被解決,另外其他問題也有很多被特意誇大)然後接下來還有對IIS的性能等各方面的質疑等,類似。

3. .NET Framework

對非微軟系的人來說,這是一個很難解釋的東西,雖然叫Framework,但又不好說它是一個框架,然後.NET這個名字也是個奇葩,實際上很難一兩句話說明它是什麼東西。於是很多誤解就出現了,比如.NET就是在你電腦上另外開了一個虛擬機,然後來運行C#等語言,效率低下什麼什麼的。第一句其實還不能說完全錯,C#編譯成的IL實質就是一個機器語言,CLR相當於虛擬出了一個CPU來執行IL。問題在於很多人對虛擬機的理解是在虛擬機里裝另一個操作系統然後在虛擬機的操作系統執行軟體,而這裡的虛擬機是虛擬出一個CPU來直接執行機器碼。就效率上來說,基本上除了內存消耗比直接編譯成本地代碼要大,速度上並不會更慢的,甚至可能更快。.NET有NGen.exe,可以直接編譯成當前主機的本地代碼的,但是實際上真的不一定就會更快。具體的性能細節自己多看書或者谷歌吧,一兩句話很難說。實際上Java的JVM也是一個道理,但說到Java,可能都覺得中間語言(位元組碼)是一個很好的設計;而說到.NET,很多人就擔心這樣效率到底有沒有影響,這就是赤果果的認知偏見。

4. ASP

是的,這裡說的就是ASP。因為http://asp.net這個東西實在是真心不好讀,很多人就喜歡簡稱asp。問題是,asp這個東西確實是存在的,而且和http://asp.net基本關係不大,最終導致很多人把其和asp混為一談,而asp早就是一門被淘汰的技術,所以很多人在並未嚴格區分asp和http://asp.net的情況下,認為其是一門早已淘汰的技術。(沒錯,很多人可能並不是覺得http://asp.net哪裡不好,他可能就是以為你說的是asp,他也許根本就沒有去了解http://asp.net是什麼東西)當然,這個名字確實是個人都想吐槽,叫個稍微高大上一點的名字不行么,像Javascript這麼叫是因為Java火呀,問題是asp又不火呀,再加一個後綴名你讓別人不懂的怎麼去理解。

5. http://asp.net WebForm

這個是其他答案里提到較多的原因,WebForm(也就是Web窗體)是http://ASP.NET中的一個東西,具體說它是個什麼東西也是很困難的,傾向於描述其為一種框架,或者說一種模式。它的主要問題就在於大大」簡化「了Web開發,讓網站開發可以像桌面開發那樣直接拖控制項,然後定義事件,寫響應代碼。這裡的伺服器控制項可能是讓其他語言的Web開發者根本無法理解的事情。確實,這樣做是有很多其他方面的問題的,比如:無法直接得知生成的HTML代碼,前端不好設計樣式;每一個事件響應都需要HTTP通信,相對於用js實現來說浪費了大量不必要的流量,而且速度慢,性能受到網速限制;無法做到關注點分離,每個頁面間的代碼獨立性較強,甚至於大量使用Response.Write(/*part_of_html*/)方法返回HTML和Javascript,使得不同類型代碼混疊,同類型代碼分散,導致可維護性較差。還有很多不好的地方,在其他很多地方會有專門的討論,此處從略。所以如果真要說是搞http://asp.net開發的,最好說清楚是http://asp.net MVC、WebAPI(其實WebAPI也還是某種意義上的MVC,所以vNext里合併了)、SignalR,最後可以並一個WebForm上去。當然,如果是簡歷的話主要還是看項目經歷,你可以在具體項目里說明用的不是WebForm就好。

6. Developer

開發人員的素質也是一個比較嚴重的問題,由於Windows平台的廉價性(相對來說能裝Linux或者用Mac的人而言),使得開發門檻過低,另外很多專門的培訓機構也有http://asp.net課程,所以導致越來越多的人認為http://asp.net是小白開發人員的入門玩具。而且這裡面真的絕大多數人用的都是WebForm,對MV*、前端的HTML/CSS/JS、資料庫設計基本不了解,只是簡單的拼頁面和用各種事件響應湊成網站的業務邏輯。另一個問題在於,大部分計算機專業都不教授.NET方面,進一步導致了高素質人員的匱乏,很多所謂會http://asp.net的開發人員根本連C#的高級語法、各種設計模式、編程範式、基本演算法和數據結構、計算機的運行原理都不了解,使得代碼質量差,網站性能差,之後就被不知情的人歸因為http://asp.net的原因。

7. C#

其實http://asp.net還可以用http://vb.net以及第三方或者開源項目支持的其他語言開發,不過目前應該最主要的就是C#。C#除了名字難讀之外,在整個語言界其實也是比較孤立的。彙編和C主要搞底層,不屑於上面寫高級語言的,C的往上做可以轉C++,面向對象化;C++的開發人員主要做偏系統或基本組件,依舊可以不屑於上層的,如果要往Web發展大部分都轉Java,然後和C#處於半相互不屑的狀態;前端的開發人員如果轉後台基本主要Java、PHP或者其他新興的Self Hosting類語言,依舊不屑C#;P系(PHP、Perl、Python,甚至可以包括Ruby)的一直都對C系的語言比較不屑。總的來說,如果走向C#這條不歸路,基本是孤立於其他語言的,之後也會有很多轉出到別的語言(很多是因為工作需要)。不過其實C#就語言來說基本也算是最好的之一,單算語法糖基本就在開發效率上完虐。不過由於之前提到的很多原因,很多http://asp.net開發人員其實C#也就根本不怎麼樣,反而影響C#語言的名聲。

8. 社區

雖然http://asp.net是開源的,但大部分情況下甚至很多http://asp.net開發人員都沒覺得其是開源的,因此沒有很多類似於各種開源社區或者論壇這樣的東西(特別是國內),導致很多http://asp.net開發人員都是看書看MSDN各自為戰,本身的團結性不是太高,因為有官方的存在導致很多開源庫或框架沒有收到足夠的重視。

暫時想到這麼多。。希望能給題主提供一點參考。。


鄙視鏈是發展的原動力。


貌似是微軟的在http://asp.net封裝了好多的控制項,可以在工具欄拖拽出來控制項類,可以在後台很容易的訪問這些類,以及該類的屬性,而java,php是沒有這些東西的。http://asp.net程序員有的就只會拖控制項,js就會alert 所以會遭受大家鄙視吧。


【.net如日中天何須妄自菲薄】

我認為大家耳熟能詳的主流語言的工作能力都是很強的,只是各具特色而已。.net陣營和Java陣營相當,是企業應用的主流。在從桌面、網站、伺服器、App等各個層次的開發都是旗鼓相當的,其中.net桌面程序展現力強一些,Java後台服務工具更廣博一些。而在App方面WP普及度比Android低倒是事實,不過看一個報道WP開發反而比Android開發收入高,也許是人少競爭小的原因吧。對於大部分企業應用,選哪個都可以完成。依約定俗成而言,小應用用.net多,因入門容易。集群以上的大應用用Java多,因伺服器方案強大。中型應用隨便選的都有。其實,看看歷年伺服器市場的報告,微軟本來就只有低端伺服器方案,現在逐漸擴展到中端,高端還是Unix,Linux的天下(比如五百萬一台的IBM)。編程方案的選擇也會與之對應。

而PHP和Python等語言流行度稍遜一籌,更多用於Web編程和輔助編程。但由於開源以及後來者等因素,在論壇上更活躍而已。C更多用於硬體編程。C++則是開發了我們幾乎所有的桌面軟體和遊戲,以及高效伺服器組件。國內桌面軟體用盜版多難以盈利因此C++需求在國內相對小一些。如果論應用開發難度來說,C++難度應該是最大的,運行速度也最高。

Java和.net可以看做編程方案中綜合戰鬥力最強的一個層次,社會需求也是最大的。因此.net開發人員不應為了網路言論而妄自菲薄,而要對自己的身價有合理的判斷。目前.net還是如日中天,你為了面子還不如將.net水平提高一個層次。如果俗一些以薪酬為標杆,任何一種語言,熟手都可以拿菜鳥的兩倍,高手都可以拿熟手的兩倍。而不同語言之間的收入差距通常只有10-20%,並沒有那麼明顯,並且會隨著行情和地域變動。

如果你還非常在意http://Asp.net讓自己檔次低,可以學一種你認為的「檔次高」的語言。開發人員多掌握一種語言也是綜合實力的體現,並且能夠更加適應社會和滿足心理要求。但最好和自己的興趣結合,比如我業餘就會用Flash和C++(DirectX SDK)寫小遊戲玩,和我用.net、OC等工作編程無關。


謝邀,,,,我沒感到受鄙視。

話說,其實沒幾個程序員有資格鄙視http://ASP.NET的,如果你說的是鄙視http://ASP.NET程序員的話,我覺得那是程序員自身的問題,和http://ASP.NET關係不大。

話說我倒是覺得PHP被鄙視更多吧,,,


大量豬隊友拉低了群體的平均智商。


誰愛鄙視鄙視去吧

刻板印象,某些國人劣根性

我就是要用,而且要精通!

自己體驗一下才知道什麼才叫 Web 開發。


當時我要一個 http://asp.net 程序員實現一個自定義的分頁,他說不行,作為死前端的我當場痛 P 他學藝不精,順便鄙視了一下 http://asp.net 這種授人以魚的做法。


微軟戰略決定http://asp.net是一種入門簡單的程序語言,小企業也不願意花大價錢去請一個程序員做技術維護,http://asp.net從一開始就構建一個從開發人員到軟體到系統的生態鏈條,使得小企業都很喜歡應用微軟體系.微軟的戰略是長遠的,但在移動端卻總是失利. http://asp.net程序員一樣可以做到資深開發者。這是取決於你的職業方向,與語言沒有太大關係. 開發人員對http://asp.net的深入應從前端網站http協議,到後端請求處理,到Framework框架的整體了解而深入,這樣才能提高自已的價值!


主要是我們http://asp.net程序員只會拖控制項,什麼http,js,css之類的完全不知道是什麼,而且你是知道的,微軟作為c#爹,已經把vs做的只要智商正常,去培訓幾天也能夠拖出一個馬馬虎虎的東西出來。神馬伺服器客戶端我們完全不知道是什麼東西,拖個控制項,綁定事件,在去搜索一段代碼來粘進去就完事了。呵呵那個java程序員連xml的配置都沒有寫完。

--------------------------------------------------------------------------------------------------------

好吧,上面是個笑話,如果只會拖控制項,是沒法幹活的。

這個是歷史原因拉,微軟搞個webFrom出來拖拖控制項就頁面,自動就幫你把所有的事情都做好了,拖出來的伺服器控制項每次點擊都要和伺服器交互,前後端不分都是過去的事情了.

http://asp.net mvc框架已經取代了webFrom,拖控制項是好幾年前的事情了。

還有技術不在於好壞,而在於用的怎麼樣,以前某個社區的創始人寫過一篇批http://asp.net,然後將某個產品替換從http://asp.net替換成了另外一種,其中一條是http://asp.net的自帶緩存不給力自己用Redis,其實大夥都知道Redis哪種語言都可以用和語言本身的緩存庫一毛錢關係都沒有。

java php的優越感在於開源,.net部分代碼也是開源的,mono是第三方實現。

不要說.net不跨平台,mono可以完美運行http://asp.net mvc,性能上也還不錯,當然wcf等有些兼容性。


.Net易學難精,加上vs神器的弱化,敲個單詞都要靠提示.以"Hello World"為例,Java上既要自己寫類,又要自己寫Main函數,相比之下.Net只需要學一個方法,其它的vs通通幫你搞定(方法名寫不出來也沒關係,還有智能提示!).所以說在起跑線上就會受到人Java鄙視.人稱Java是高富帥,但.Net身出微軟,也稱得上名門之秀,奈何老子英雄兒混蛋,學.Net的人不給力,最終讓別人都以為.Net這門技術不行!


2017年4月26日更新

對於http://ASP.NET而言,之前Windows、SQL Server等等的許可費用還有IIS可憐的性能確實阻礙其發展。但是,http://ASP.NET core的發布這些問題已經慢慢的得到解決。開源的.NET core可以很方便在各個平台上運行,加之框架本身和C#的優勢,如果微軟在開源之路上繼續一路狂奔,我想追趕上Java應該只是時間問題。

C#可能不是最好的語言,但是確實是一個比Java優秀的語言,因為.net和C#是Anders在Visual J++被Sun起訴後,針對JVM和Java的不足設計的,本身就是對JVM和Java的優化,並且很多特性也在最新的Java中被吸納。

============

寫過很長一段時間的http://ASP.NET,處處遭人歧視。
不從技術上去分析為什麼大家討厭http://ASP.NET。(技術上討厭是沒道理,很好用啊,基本上J2EE有的,http://ASP.NET大部分都有,還有好用的C#)。
首先,是微軟的技術。不難發現只要是微軟的產品、技術、服務都會被像張院士這樣的果粉鄙視(蘋果官網也用過http://ASP.NET技術)。
其次,使用http://ASP.NET以為需要使用IIS,需要Windows Server,這是要錢的(又不要錢的Linux解決方案,生產環境很少使用)
最後,http://ASP.NET並發能力確實有限,不然京東也不會放棄了(CSDN也逐漸減少使用了)。


拉倒吧 隨便把http://asp.net換成其他語言 一樣一大堆人來 偽命題


2008年康盛世紀最風光的時候,就是做最流行Discuz論壇的公司,就做過一個內部測試,PHP-Linux和Asp.Net+SQLServer性能對比,http://Asp.Net是超過PHP的!

http://Asp.Net沒有這麼不堪!我們做過4000萬主記錄加九個從表的業務系統,兩萬用戶!

不知道關閉控制項不必要的ViewState,你做的系統當然慢啦!無原則地用各種框架,Hibernate ,LinkQ,能不慢嗎?資料庫結構沒設計好,查詢能不慢嗎?同樣的資料庫同樣的複雜報表統計,有的公司算15分鐘,我們算10秒!

Java寫的不好,同樣很爛!同樣的原料,不同的廚師做出的味道就是不同,你得承認吧?

不談http://Asp.Net做網站,只談做B/S應用軟體的角度,.Net確實是企業級應用最高效的開發工具!

作為老闆,要的是交付效率這樣才能賺錢,其次是質量和性能,不是給你多花五天時間手寫代碼來做同一個界面的。這樣成本增加五倍!不炒你炒誰?

程序員容易從技術角度顯示自己牛逼,從企業的角度,會選擇一個最高效的生存和賺錢之道,之後才有精力和金錢去提高,說幾句我牛逼,賺一二十億讓我很痛苦。


這個問題有意思啊。前幾天剛面試了一個人,要價頗高,理論說的一套一套的啊,然後就開始給我鄙視各種平台,包括.net,典型的one of those cool kids。之後我給他一天時間讓他做個項目交上來,那代碼真是一坨屎啊……所以說啊……talk is cheap, show me your shit


主要是微軟把vs做的太強了 人們一看 喲 點兩下就出來個網站 不行 太low了 連代碼都沒敲


拉倒吧,在知乎的政治正確明明是微軟大法好

輪哥不要拉黑我......(??ω??)


不知道鄙視http://asp.net的人都懂不懂http://asp.net

感覺這個就是http://asp.net程序員自黑,結果其他人也跟風。


怎麼可能鄙視.net,搞java的,還是搞php的鄙視你,只要你研究的夠多,你做的系統在性能上照樣干翻他們


港真啦,WebForm那開發速度簡直不要太快。不過有可能你寫了兩年還沒搞懂HTTP協議,反正也無所謂了。微軟全家桶的架構之下,就沒想讓你去了解HTTP協議。


推薦閱讀:

.net 現在開源了,開源有什麼用,不藉助mono,能在linux下運行么?
現在是一個初級asp .net程序員,請問簡歷上一般寫什麼項目?或者說用到哪些技術點能加分?
什麼時候用Model,什麼時候用Entity?
現在繼續搞.net還有前途嗎?
怎麼用asp.net做一個簡單的留言板?

TAG:ASPNET |