曾經(jīng)有很長一段時間我不知道.NET的應用價值在哪里。剛學習的時候以為它能獨立運行,運行出錯了才知道它需要.NET環(huán)境,不是拿幾個DLL就可以。于是我想不通啊,為什么有很多同學想用它編寫病毒呢?別人的計算機沒出問題他自己編寫的程序倒先出問題了。
我想起了VB6.0。我沒有意識到它可以調(diào)用WINDOWS API,而且微軟已經(jīng)寫好了很多引用API的代碼,我全沒看到,我也沒有意識到許多問題是因為它需要的DLL沒有跟隨,因為DLL版本不同導致報表只顯示有多少數(shù)據(jù)卻不顯示數(shù)據(jù)的具體內(nèi)容,說白了,當時不知道DLL是什么東西,一個出錯,兩個出錯,這也做不出來,那也做不出來,于是點到即止。直到找不到WINDOWS API而詢問江歡老師時才意識到三個平臺的相互獨立性——WINDOWS、.NET、JVM。
實際上沒有絕對獨立運行的程序。即使直接面向硬件編寫不需要任何環(huán)境能直接被硬件識別而運行的程序也需要程序員熟悉芯片結(jié)構(gòu)。程序受制于硬件,所謂的程序是受硬件支持的指令序列,順著說,它給了程序員相當多的功能,反著說,它只給了程序員這些有限的功能。它不能給程序員無限的功能,否則不是機器了。
Windows也是一個平臺,它也有它自己的環(huán)境,微軟定義了許多圖形化界面,將組成這些界面的共性部分稱為控件,如按鈕等等,在系統(tǒng)運行環(huán)境庫內(nèi)提供了的繪制代碼。目前常見的Windows、Linux、Unix基于都有人編寫了基于x86指令集的系統(tǒng),可執(zhí)行文件除了文件格式有所不同之外,其可執(zhí)行部分在三個平臺都可以運行。這一點,Java和.Net有很大的區(qū)別。
微軟自行研發(fā)的處理器目前我停留在道聽途說的階段,假設正在研究之中。可以嘗試猜測MSIL指令能不能被它研究的處理器執(zhí)行,但是有一點是肯定的, x86指令集與它是不能兼容的,軟件不能空想,它要有實現(xiàn)基礎。每一條指令都有惟一電流信號序列指代著。當前Intel和AMD公司的芯片不能識別,MSIL指揮不了主板的其它的電子元件。
無論兩個軟件平臺有多大區(qū)別,如果它們使用的硬件平臺相同,那么兩個平臺下一程序文件僅僅因為各自識別處理可執(zhí)行文件的方式不同而不能直接運行。在這兩個平臺之間移植是可行的。曾經(jīng)我錯把WIN32軟件平臺上可以獨立運行的程序當成可以在任何平臺任何環(huán)境都可以運行的程序。我沒有意識到編寫一個程序有哪些用到了別人的程序,哪些才是自己的程序。把自己的程序搬到第三方平臺運行時有沒有把用到的別人的程序搬過去。實際上,我們處處在用別人現(xiàn)有的程序,哪怕是一個按鈕的圖形繪制代碼,至于基礎程序類如內(nèi)存管理、圖形繪制等等不用說了,有現(xiàn)成的就不想自己編寫了,更何況不知道自己有沒有這個能力、有沒有這個精力、有沒有這個時間把它編寫出來。當時沒有環(huán)境、平臺、軟件平臺、硬件平臺的概念。軟件平臺的作用可以有很多,比如它可以翻譯MSIL指令到X86指令,也可以僅僅提供配置環(huán)境?!盁o論在哪里”,顯然我沒有意識到什么是平臺。應當學習一下WINDOWS PE以及PE國際標準以及這個國際標準是怎樣制訂的。
我一一思考ASP、ASP.NET、JSP、PHP互聯(lián)網(wǎng)信息技術的商業(yè)取向。它們是世界公認的從XML衍生的HTML代碼外加特定的服務端執(zhí)行的程序??蛻舳四_本常見的是ECMAScript(JavaScipt、JScript、VBScript等等)。服務端程序編寫語言有C#、Java、PHP、VB.NET。腳本受瀏覽器支持,用來提高頁面響應速度和減輕服務器壓力。使用腳本可以與服務器通信。
在Windows上運行Java程序Sun公司做到了,前提是必須安裝JVM。底層的實現(xiàn)工作別人已經(jīng)做好了。曾經(jīng)我不知道,Java跨平臺究竟是怎樣實現(xiàn)的?當我遇到手機功能列表中有支持Java擴展才能運行Java程序的情況,我漸漸意識到Sun公司把它想要做生意的手機的JVM編寫好了,跨平臺這樣實現(xiàn)的。手機程序員需要做的工作Sun公司大部分已經(jīng)做好了。JVM把字節(jié)碼翻譯成能被當前所在機器識別的機器指令,就像不能同語言的兩個人交流一樣,翻譯需要學習兩種語言才能獨立工作,使用翻譯的只需要學習其中一門語言,就可以借助翻譯溝通,手機識別機器指令,人識別Java指令,JVM這個翻譯它都懂,于是人間接和手機溝通,指揮手機工作。
至于Win32與DOS互不兼容,這個是表面現(xiàn)象,從商業(yè)目的來講是微軟當初為了推廣它的圖形化界面系統(tǒng)Windows3.0而設置的限制,解除限制之后注意配置環(huán)境。尤其注意圖形繪制代碼有沒有跟隨到位。否則一個程序缺少一部分,可想而知。嫌它麻煩,就不要使用微軟的程序,自己從圖形開始,面向硬件編程,而不要這用微軟的,那用微軟的。使用別人的東西就要遵守別人的規(guī)則。我們不僅僅要使用別人的東西,還要學會使用別人的東西的技巧。
使用什么樣的東西就要遵守什么樣的規(guī)則。如果不喜歡這個規(guī)則就找個替代方案。規(guī)則可以是程序運行過程反映的處理數(shù)據(jù)的辦法或方法以及思想。操作系統(tǒng)也是軟件。使用Windows就得遵守Windows的規(guī)則。又愛又恨,就要想辦法突破規(guī)則。但不要嘗試突破法律保護的規(guī)則。如果編寫的程序面向Windows平臺,那么突破規(guī)則之前必須遵守它的規(guī)則。在任何操作系統(tǒng)上使用任何資源都要有相應的權(quán)限。每個程序啟動時都有默認的權(quán)限。我一直以管理員身份編寫運行程序,所以容易忽視權(quán)限的問題。
字節(jié)碼究竟是字節(jié)碼,中間語言究竟是中間語言,它們不屬于X86指令集(通用指令集還有IA64、X64,多媒體方面還有SSE等等,這里以X86為例),主流芯片沒有能識別它們的。它們的底層實現(xiàn)工作(將非X86指令翻譯成X86指令)已經(jīng)由推銷這個產(chǎn)品的商家實現(xiàn)了。它減輕了從事這個行業(yè)的程序員的工作壓力,降低了工作難度(這也是當今社會高端程序員稀缺的原因之一)。這的確是跨平臺一個比較好的選擇。獨立運行與跨平臺就像魚與熊掌不可兼得。它們各自都有各自的應用價值。
從目前潮流來看,處理器速度快得撐不死,內(nèi)存大得撐不完。和計算機剛面世時不可同日而語。當時追求速度,現(xiàn)在追求體驗。所以不要擔心這些中間語言耗費額外的時間。界面做好,功能做全,就可以了。
分享題目:我對.Net應用價值的一些思考-創(chuàng)新互聯(lián)
分享路徑:http://jinyejixie.com/article24/pedce.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、小程序開發(fā)、品牌網(wǎng)站制作、企業(yè)網(wǎng)站制作、商城網(wǎng)站、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)