.NET斷想
2024-07-10 12:59:43
供稿:網(wǎng)友
 
 
.net斷想 
榮耀 2002秋
“遺留軟件”和“遺留程序員”是阻礙.net普及的最大阻力。另外一個(gè)阻力(聽起來(lái)有點(diǎn)庸俗:))是目前的windows操作系統(tǒng)沒有預(yù)裝.net框架。運(yùn)行.net應(yīng)用,你需要另外安裝.net框架,這多少都有點(diǎn)麻煩。com為何會(huì)在極短的時(shí)間內(nèi)迅速取得成功,windows內(nèi)建了com基礎(chǔ)設(shè)施不能不說(shuō)是原因之一。
微軟當(dāng)然比誰(shuí)都清楚這一點(diǎn),所以,“windows .net”系列操作系統(tǒng),必然指日可待。
假如你對(duì)此觀點(diǎn)不以為然,不妨看看corba在windows平臺(tái)上命運(yùn)。當(dāng)然了,這只是原因之一,而且,我說(shuō)過(guò),這個(gè)原因有點(diǎn)俗:)
不過(guò)在此也要糾正一個(gè)謬誤。不在少數(shù)的程序員以為,在訪問(wèn)以asp.net技術(shù)創(chuàng)建的web網(wǎng)頁(yè)(.aspx)的客戶端機(jī)器上,也必須安裝.net框架,這個(gè)概念是錯(cuò)誤的。道理其實(shí)很簡(jiǎn)單 — 服務(wù)端總是返回生成的html。
無(wú)論微軟如何宣稱,無(wú)論.net如何支持多種語(yǔ)言,都不會(huì)影響“c#是.net最佳語(yǔ)言拍檔”。
但在相當(dāng)長(zhǎng)的一段時(shí)間內(nèi),visual basic .net或許反而會(huì)比c#占有更多的用戶。原因并不復(fù)雜 — 現(xiàn)有的visual basic程序員為數(shù)眾多 — 盡管今天的visual basic .net早已不是從前的visual basic了。
visual basic程序員過(guò)渡到visual basic .net,可能要比c++或java程序員過(guò)渡到c#困難得多。
.net框架由通用語(yǔ)言運(yùn)行時(shí)(common language runtime,clr)和.net框架類庫(kù)構(gòu)成。.net在操作系統(tǒng)之上又加了一層抽象,.net本身并不是操作系統(tǒng)。
為什么有那么多的人憎惡微軟?這很讓人費(fèi)解。無(wú)論哪家公司,倘能取得微軟這樣的成就,都是了不起的。無(wú)論誰(shuí)坐到了微軟的位置上,估計(jì)都會(huì)這樣。
憎惡微軟的人,要么是微軟的競(jìng)爭(zhēng)對(duì)手,要么是非微軟陣營(yíng)的狹隘的開發(fā)人員,要么啥也不是,純粹人云亦云,瞎起哄。
無(wú)論你多么憎惡微軟,無(wú)論你怎樣不喜歡.net,假如你是一名“面向微軟”的開發(fā)人員,學(xué)習(xí)掌握.net只是早晚的事。
假如你是一名windows開發(fā)人員,縱然你從來(lái)都不打算使用.net技術(shù)進(jìn)行實(shí)際軟件開發(fā)工作,想對(duì).net完全免疫也是不可能的,你至少得知道它究竟是怎么一回事兒。
今后若干年內(nèi),.net和java將會(huì)形成分庭抗禮之勢(shì)。兩大陣營(yíng)各有支持力量,只有在競(jìng)爭(zhēng)中彼此學(xué)習(xí)互補(bǔ),才能共同前進(jìn)。任何一方都很難一口吃掉對(duì)方。
在軟件開發(fā)世界,單極世界難免霸道,絕對(duì)不會(huì)長(zhǎng)久;兩極世界的平衡很難長(zhǎng)時(shí)間維持,容易被打破;多極世界是豐富多彩了,但無(wú)疑將會(huì)成為開發(fā)人員的災(zāi)難,因?yàn)楫愘|(zhì)技術(shù)的整合,從來(lái)都是一場(chǎng)噩夢(mèng)。
java已經(jīng)占據(jù)了大片地盤,在微軟支持下,.net將會(huì)最大限度地把pre.net開發(fā)人員拉向自己的懷抱。在這個(gè)過(guò)程中,或許有人逃到j(luò)ava陣營(yíng),但人數(shù)不會(huì)太多。道理很簡(jiǎn)單,假如你是一名微軟技術(shù)開發(fā)人員,學(xué)習(xí).net所要花費(fèi)的功夫,無(wú)論如何都不應(yīng)該超過(guò)學(xué)習(xí)java所要花費(fèi)的功夫。
在從微軟pre.net技術(shù)過(guò)渡到.net過(guò)程中,肯定會(huì)淘汰掉一些無(wú)法與時(shí)俱進(jìn)的開發(fā)人員,這是正?,F(xiàn)象。在技術(shù)進(jìn)步的過(guò)程中,每一次創(chuàng)新,抱殘守缺者總是會(huì)被毫不留情地拋棄。
自然選擇,物競(jìng)天擇。
有多少人會(huì)使用managed c++?數(shù)目應(yīng)該不會(huì)太樂觀。相當(dāng)一部分c++程序員往往會(huì)有某種沒來(lái)由的優(yōu)越感,對(duì)任何非c++的東西不屑一顧,大有萬(wàn)般皆下品,唯有c++高的感覺。在這些c++程序員的眼里,managed c++已經(jīng)算不上c++了,或者說(shuō),充其量,managed extensions for c++不過(guò)是微軟對(duì)c++打的一個(gè).net補(bǔ)丁而已。
每一個(gè)嚴(yán)格符合.net框架的語(yǔ)言的程序,最終都將被轉(zhuǎn)換為msil代碼(當(dāng)然啦,有些語(yǔ)言只是提供了同clr-based代碼交互的能力,并不真的生成msil),但這并不意味著使用不同的.net語(yǔ)言編寫的功能相同的代碼,將會(huì)轉(zhuǎn)換成同樣的msil代碼。編譯器的質(zhì)量會(huì)有差別,生成的msil代碼的質(zhì)量也肯定會(huì)存在差異。
非微軟的.net語(yǔ)言據(jù)說(shuō)已有兩打之多,但它們很難成為主流。某些第三方.net語(yǔ)言的現(xiàn)實(shí)意義,不過(guò)是提供了一種將現(xiàn)有代碼移植到.net之上的途徑而已,另外一些僅僅具有學(xué)術(shù)研究方面的價(jià)值。
我不知道究竟會(huì)有多少人在.net上使用perl或者python,盡管今天它們的擁躉的確不在少數(shù)。我只能肯定delphi(object pascal)應(yīng)該是個(gè)例外。
能否成為主流.net語(yǔ)言,主要取決于:是否有足夠多的“遺留軟件”,是否有足夠多的“遺留程序員”,是否有足夠好的ide,是否有實(shí)力足夠雄厚的組織提供強(qiáng)力支持。
向來(lái)只有微軟自己的技術(shù)才能和微軟的技術(shù)最佳匹配,com就是一個(gè)例子。com無(wú)疑是pre.net時(shí)代最成功的跨語(yǔ)言機(jī)制,但這種技術(shù)在跨微軟自己的語(yǔ)言(確切地說(shuō),是開發(fā)環(huán)境),比如從visual c++跨到visual basic以及相反時(shí),表現(xiàn)還好,跨到了別的語(yǔ)言(開發(fā)環(huán)境),比如說(shuō)delphi,就會(huì)暴露出這樣或那樣的問(wèn)題。
但愿類似的情況不會(huì)發(fā)生在.net身上,但愿遵循cls的語(yǔ)言果真可以完美無(wú)縫地互操作,就象微軟自家生養(yǎng)的.net語(yǔ)言一樣:)
web services技術(shù)并非微軟獨(dú)創(chuàng),也不是由.net帶來(lái)的,但仍然有相當(dāng)一部分人誤以為它是伴隨微軟.net而來(lái)的技術(shù)。微軟推廣技術(shù)(概念)的功夫,由此可見一斑。
別誤會(huì),.net compact和.net框架可以說(shuō)是很不一樣的東西。.net compact并不是從.net框架中簡(jiǎn)單地砍掉一些東西之后的精簡(jiǎn)版,否則.net compact也不會(huì)比.net框架晚交貨那么長(zhǎng)時(shí)間。
asp.net應(yīng)用程序,就是.net應(yīng)用程序。普通asp開發(fā)人員過(guò)渡到asp.net的痛苦,比起從visual basic過(guò)渡到visual basic .net所要承受的痛苦(快樂?),不會(huì)少到哪里去。
ado.net是一種革命性的技術(shù),盡管無(wú)可否認(rèn),它從borland借鑒了許多數(shù)據(jù)存取技術(shù),但ado.net對(duì)xml技術(shù)的支持,目前無(wú)疑處于領(lǐng)先地位。
我希望速度不要成為web services被廣泛應(yīng)用的阻力。在榮耀編寫的一個(gè)測(cè)試應(yīng)用中,整合來(lái)自不同廠商的web services的應(yīng)用效果是令人驚訝的,不過(guò),這個(gè)應(yīng)用速度之慢,同樣出人意料。
或許基于web(wan)的分布式計(jì)算,迫使我們不得不作出速度上的妥協(xié),就象我們可以容忍(并且已經(jīng)習(xí)慣)瀏覽器應(yīng)用比傳統(tǒng)windows gui應(yīng)用來(lái)得慢一樣。
.net框架應(yīng)用或許會(huì)比那些windows dna應(yīng)用運(yùn)行得慢,不過(guò),我們真正應(yīng)該關(guān)心的問(wèn)題并非是這些應(yīng)用到底能運(yùn)行多快,而是它們是否足夠快,快到可以滿足用戶業(yè)務(wù)處理的要求。
java的成功已經(jīng)提供了這些證據(jù)。盡管java代碼一般來(lái)說(shuō)要比本地代碼來(lái)得慢,但它還是足夠快了,許多組織都非常成功地使用了這種技術(shù)。因此,對(duì)于.net速度上的擔(dān)心,完全是多余。按照微軟自己的說(shuō)法以及第三方提供的一些測(cè)試數(shù)據(jù),.net至少比目前版本的java來(lái)的更有效率。
畢竟,硬件的品質(zhì)也在不斷提升。