• 5

力抗Android 微軟WP、RT 考慮變免費

sturn-01 wrote:
程式執行的效率高低是跟其它軟體架構比,而不是說硬體效能愈來愈高,就說沒有效率不佳的問題。..(恕刪)



你沒聽過有錢帥10倍.....有錢就可以讓男人變帥這跟單核變4核的道理一樣,效率不好的時候不是跟其他軟體架構相比而是要改善自我。

比Window Phone、iOS、Android誰的軟體效率高意義在那裡.....android用4核心改善消費者的使用感覺最重要。


法拉利是靠省油效率佳才成為超跑的嗎???


freaky_jon wrote:
你可以試著拿個.net disassembler+WinDbg trace看看,一切就一目瞭然了。有懷疑是好事,但是不去驗證心中所想憑空推論無助於釐清事實。

.NET code又稱managed code,因為程式執行環境受到.NET runtime的管理,可以達到安全及跨語言的支援。...(恕刪)


WIKI - 受控代碼(英語:managed code)

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

一般以較易為人所理解的程式語言來為受控代碼環境撰寫程式,具代表性的程式語言為C#、J#、C++或Visual Basic .NET。

執行代碼時,執行庫編譯器(runtime-aware compiler)在受控執行環境下,將中間語言(Intermediate Language)編譯成本機的機器碼。受控執行環境可為代碼插入垃圾回收、異常處理、類型安全、陣列邊界和索引檢查等,以保證代碼安全的執行。

這正是即時編譯(Just-in-time compilation)的手法。不同的是,檔案中除了保存假機器碼,同時也可包含提供給不同機器(如x86和PowerPC)的已編譯執行碼。類似於蘋果的通用執行碼格式的概念。

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

不知為何,這段看起來很眼熟,很像某個東西

根本就是 JVM 概念的山寨版


差別是:
--------------------
JVM 有官方各平台的版本

.net framework 官方只有 windows 版的,w2k、xp、2003、2008、vista、win7、win8,這算哪門子 「跨平台」....

unix-like 平台下雖有第三方支援,比如 Mono,但那因為不是官方的,是用反組譯破解出來模擬的,支援度並非 100%。

而且最跨張的是:.net framework 每代不相容....
fedora wrote:
差別是:
--------------------
JVM 有官方各平台的版本

.net framework 官方只有 windows 版的,w2k、xp、2003、2008、vista、win7、win8,這算哪門子 「跨平台」....

unix-like 平台下雖有第三方支援,比如 Mono,但那因為不是官方的,是用反組譯破解出來模擬的,支援度並非 100%。

而且最跨張的是:.net framework 每代不相容....


因為.NET Framework要做的是跨語言而非跨平台,各版本獨立執行以避免DLL hell,雖然也可以利用manifest做redirection。
Java要做的是一種程式語言獨立執行平台,.NET Framework是一種執行平台多種程式語言開發元件。你可以把CLR稱為一種虛擬機器,但它的實作細節還是和JVM不太一樣,因為它們的設計目的不同。
我當初回文的重點不是在比較Java和.NET這個老掉牙的筆戰話題,而是告訴你Windows Runtime和.NET一點關係也沒有。

fedora wrote:
最跨張的是:.net framework 每代不相容
哪有
每一代都是前一代的擴充而已,原本的東西不動
怎會不相容
只有 2.0 不包含 1.1,但那個老東西就不用理他了

freaky_jon wrote:
重點不是在比較Java和.NET這個老掉牙的筆戰話題,而是告訴你Windows Runtime和.NET一點關係也沒有。...(恕刪)


--------------------------------------
執行代碼時,執行庫編譯器(runtime-aware compiler)在受控執行環境下,將中間語言(Intermediate Language)編譯成本機的機器碼。
------------------------------------

這就明白說明 .net 是先編譯成 中間語言(Intermediate Language)

然後 中間語言 才在 .net framework(.net 框架,一種 virtual machine)轉為 硬體機械碼 運行的

整個運作架構、原理,就是 JVM 那樣子,也就是說多透過一層轉換的

請問到底是哪裡不同、一點關係沒有?


JVM 又不是直接跑 JAVA 原始碼的 *.java 的,也是一樣要先編譯成中間碼 *.class 的。

直接跑原始碼的是直譯式語言、腳本語言,比如 php、perl ...之類的。JAVA 並不是直譯式語言。

.net 安全機制、垃圾回收....那些,拜託,那都 java 原創的。講的好像 .net 發明似的。


.net 本來就是微軟製作來跨平台的,主打的好處就是跨平台,只不過它的 "跨平台" 是:跨 windows 版本平台.....

C++、VB 原先就可以編譯機械碼運行,何必還要經過 .net 拖慢速度,多此一舉。

跨語言?
各種程式語言,在各種平台都有編譯器。何來的跨語言這種說法。

早在 .net 還沒出現前,C++、VB 都有相當久的歷史了。很多軟體用那兩個語言寫的,沒 .net 照樣運作。

windows 各代版本,有時會出現相容性問題,比如某個軟體在 XP 可以運作,在 WIN7 卻跑不了。所以微軟才會提出 .net 為解決方案,來跨 windows 版本。

只有 C# 是 .net 原生語言,而 C# 語法與 JAVA 有極大的相似度,論先後出現的時間,講好聽是借鏡,講難聽就是抄襲了。


沒有要比較 JAVA .net 誰是誰非的意思,

只是要說:.net 一樣是靠 runtime 執行環境運行的,意思即是:要透過一層轉換執行,非原生機械碼速度。

  • 5
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?