當前位置:編程學習大全網 - 編程語言 - 為什麽那麽歧視.net

為什麽那麽歧視.net

這個是由於歷史的原因導致的。

第壹,Java是以C++為藍本,設置類庫概念,以虛擬機增加移植性而出現的語言。它搶走了不少C++程序員,所以被C++程序員親切地稱C+++(表示C++升級版),也有人認為是對C++的壹種簡化(簡化語言,增加類庫)所以稱之為C++-。由此引發壹場關系,微軟認為其侵權狀告SUN公司,但官司輸了。

第二,微軟發虛擬機與類庫概念確實是語言上的壹個進步,於是開發C#語言,其實就是C++++,但內定版本叫Java+,試圖搶回C++程序員。結果被SUN公司告了,結果官司又是微軟輸了!

微軟出現了斷代,微軟有C語言,C+語言(這個知道的人少,只流行了壹年時間),C++語言及C#語言。但確實沒有存在過C+++語言。加上微軟的輸掉三場官司(微軟為報復第二次輸入的官司,從IE中將網景的Applet去掉了,網景被SUN公司收購,所以SUN公司又告了微軟),所以這壹點上微軟就失了陣勢。

Java早期存在不少C++轉行的大牛,而雖然Java與C#入門門檻都低,但早期有大牛撐著門面,被惡意宣傳導致不少人認為C#中已無能人。

再者Java入門門檻低,但C#入門門檻更低,曾壹句說三個月學會Java,兩個月可以學會C#(.NET)。所以基於以上幾點,導致不少人認為.NET中無高手。

.net為了易用性做了很大的努力,就是增加十分龐大的反射機制(Reflect),而這壹點在Java較為薄弱,但同時引入的壹個性能問題(雖然是同壹級別上,但性能卻實沒有原生的Java性能高)。所以Java將反射機制引發的性能問題盡量放大,進而對.net進行嘲諷。但這壹問題.net卻無可反駁——因為他的自豪就是這個反射!

本身易用性與性能,性能與空間就是相互交換的,易用性與性能方面的平衡點只是不同公司的不同理解而已(Java程序員富有攻擊性)。

那麽事實呢?

我看過java/php/.net三本入門經典的書,每本書都說明自己的性能是第壹,關鍵在於各自都是在各自原生平臺上進行的對比。這顯然不公平——.net把java部署到windows下的weblogic上,而Java那本書卻把.net部署到了linux上,這種情況對比確實沒有多大意義的。

但有壹點對於性能來說,確實Java>.NET>PHP(至少PHP上說PHP>Java>.NET,Java上說Java>.NET>PHP,.net書上說.NET>Java>PHP),但是對於壹門語言上來性能並不評判語言好壞的唯壹標準。怕是三者都比不了C++吧?

對於移植性上來說Java最好,.NET只是在windows上轉圈圈上(這個與微軟輸掉的官司有關)。而PHP就是壹個網頁語言而已,拿他做桌面應用程序絕非他的所長。

從易用性上來說,.Net入門門檻較低,Java次之,而PHP的學習難度也不算太大。

由於移植性與反射的原因,.NET應用軟件的平臺調用相當好,而Java這部分怕是只是呵呵了。Java調用的硬件壹般是專門為Java開發的SDK,而.NET在沒有SDK的情況下還可以使用PInvoke調用,這得益於.net只在windows上移植性有關(移植性確實不如Java,而Java對於硬件更加抽象,以致於其沒有平臺調用的可能性)

從開源上來說,Java的開源資源非常多,而.net近幾年來開源增速也非常快,但由於其起步晚其開源資源與Java相比確實很大。正因為如此造成兩門語言的編程慣性——Java程序員喜歡到開源中抄來壹段,而.NET根據技術去了解不同的類庫自己開發。.NET反駁Java的原因是嘲諷其反射機制太差以及程序員喜歡抄來抄去(找段功能夠用的就湊),沒有自己的編程思想。換句話來說,.NET類庫支持非常強大,而Java的開源牛B哄哄。

從編譯器上來說,Java因開源,所以編程工具百家齊放,而.net因其封閉,編程工具壹家獨大。話說微軟經常喜歡自己訂壹些個標準,不太遵從其他標識,比如IL明明有標準,微軟還要搞個MSIL。等等,微軟確實是老大,總是做壹些不守規據的事兒來。

比較壹下高手,其實Java的編程高手(構架師除外,不少早期Java程序員已經混上構架師等職了,所以對Java存在或多或少的偏護)基本上不多了,但.NET的高手也並不多,這是因為入門門檻太低,對於具象知識理解還行,抽象的東西理解太差,所以導致高手也並不多。但.NET的高手卻越來越比Java多。(目前語言使用率上Java還高於C#,至於原因,壹是編程習慣,二是基數問題——本身Java基數就較多,三是早期程序員對Java的偏護)。

為什麽這麽說呢(不少.net程序員都覺得自己是高手,但其實能力還不到高程),先從語言層面來看,Java的類型有兩種值類型與引用類型,.NET卻還存在第三種指針類型,這個多用於非安全代碼使用,為的是提高性能(如果真與Java拼性能,使用非安全編程時,Java想幹過.net性能只是壹個夢),損失了移植性與反制機制,這玩意雖然比C++簡單些,但畢竟不是想入門就入門的,壹些號稱高手的應用程序員怕是連個聽都沒聽過吧!

所以有句話“.net兩月入門,Java三個月入門,Java有好老師帶著三年能學精通,.net找個好老師帶著五年未必學精”,我都不知道那些號稱自己.net中上遊的程序員連IIS的19個事件都不知道,哪來的自信!壹句話來說.net所涵蓋的內容不只是比Java多了壹點兩點!比深度,.net比Java深的太多了,可惜的是因為嘗試較深,會的人不是很多!

哪裏有高手,怕是壹目了然了!

資料可比性,Java因為程序員基數大,所以翻譯的學習資料較多,而C#卻要晚很多或者翻譯的較少,所以資料上由於推崇的原因,Java相對多壹些。所以對於不少微軟的東西會些洋文的必要性還是很大的,否則就跟著大夥人雲亦雲吧。

我從來只是Java程序員只是笑笑,他們那麽天生俱來的優越感是多麽的阿Q精神啊。拿大型網站數量,總體網站數據來說事——那麽桌面應用呢,只能拿手機軟件來玩點優越感了吧?換句話來說Linux由於其開源的原因,在服務器市場還是比較大的,但對於桌面市場來說,linux還只能算是少數民族!這也正是為什麽Java網站多的原因,同時由於安全原因(linux畢竟是小眾,攻擊病毒沒有windows的多)所以不少大型網站也選用Java的原因,基於這個原因分析,JSP盛行是有它的根源原因的,所以Java喜歡比的就是網站數量與手機軟件,事實上對於應用程序來說,linux桌面應用卻基本上還是C/C++的天下,而window基本上現在安裝個軟件都要求妳先安裝netfx4了!

然後Java喜歡說的是某某銀行的指紋就是Java,這個吧我也只是笑笑,因為他們看到只是銀行的壹個網站,網站而已——其實核心系統很多銀行還是C++,後來內部使用混合架構,各系統之間的聯系(模塊)等基本上是linux與Windows均半(精明的銀行家怎麽可能把雞蛋放到壹個籃子裏呢,他們也不會把信任放到壹個籃子裏),所以基本上來說Java除了對外的網頁來說,還真沒有多大優勢(碰巧我在銀行工作過)。不過老實說,不少銀行在面向用戶或業務的頁面確實選用Linux+JSP的方式,這樣至少能少下壹大筆錢,包含操作系統費用、維護費用、團隊成員費用(他們也會考慮誰的程序員多),並非因為Java有多先進,這個因素怕是根本不在他們考慮的範疇內!用這個說明不了Java的優勢(當然開發工具上的優勢,Visual Studio還需要花錢的),而銀行內部的計劃任務(跑批,批量任務等等)基本上全是NT服務與NT服務器相配合。雖然性能低些,但J2EE在內部並沒有多大延伸。

所以呢,Java與NET之間的爭論不休只是處於壹種偏見,Java程序員的偏見更重壹些,他們壹直想為什麽會有.NET的存在呢?而.NET程序員只是在應用Java的攻擊,再加上.NET程序員確實很多時候不給力——他們畢竟習慣於類庫開發,但又對自身語言的認識不足,出現N多假大空(沒有開源供他們抄時,謊言很容易被揭穿的),所以包括用人單位都對.NET存在壹些偏見,幾乎是基於系統(service系統存在雖有Core版但諸多人不會,也沒有學習的環境),桌面程序壹直拖著後腿,且付費高昂等等原因,基於語言,開源幫助下,Java程序員的富有攻擊性(早期生存的壹個能力吧,不然當初誰願意用Java)等等導致.NET壹直偏於弱勢。

我假設壹下,service系統部分性免費或達到linux server版本相對收費價格,IDE開源不收費,或不保留起訴盜版軟件的權利,如果這樣都公平了,不知道現在還有Java什麽事?

註:我對Java也不十分了解,在選語言時讀過三個月的Java轉入.NET的,工作中由於Java方面的博客較多,經常性看壹些Java的編程思想(如多線程模式之類的,Java總喜歡寫Java多線程模式,其實.NET支持的也相當好),所以以上部分有錯誤解理的可以討論,但從沒後悔過自己選擇了.net。至少當前個人認為JSP網頁部分只是多的優勢——但這種優勢並非是Java語言本身的優勢,而且在龐大的桌面應用程序面前,Java的用武之地極其有限的,這也是我選擇.NET的原因,我接受.NET的性能損失,自豪反射機制,接受其移植性,自豪其平臺調用性...總之選擇.net的原因個人還是認為十分客觀的。

  • 上一篇:mcs 51系列單片機
  • 下一篇:四年級想象作文-狐貍和刺猬(1)
  • copyright 2024編程學習大全網