2011-08-30 31 views
-2

我只是想知道什麼是在本地代碼的管理確有必要

便攜管理langage的真正優勢代碼: C#/ java的需要有一個虛擬機實現每個plateforms,C++已經有編譯器

垃圾收集器:我們可以在C++,其檢查內存分配/ desaloc線程

反射:也許我們可以與本地代碼與之相似機構(???)

今天的託管代碼已經獲得了很多人氣,但是本機代碼的優點是總體上效率更高,更輕便,即:目標平臺上沒有虛擬機。另一方面,根據我,託管代碼的優勢並不大,我錯了?託管代碼是大多數應用程序遵循的好方法嗎?

+0

是的,你錯了。如果將功能添加到編譯爲本地代碼的語言中而沒有詳細的運行時,則基本上有相同的開銷,但是失去了JIT的聰明才能緩解其中的一些問題,並且必須重新編譯才能獲得更好的實現。而且你仍然需要讓人們安裝*一些*運行時,即使它比較小。唯一的區別是每個可執行文件都有5 MB的靜態鏈接stdlib代碼,而不是用戶安裝一個稍大的虛擬機一次。 – delnan

+0

可能是一個更好的問題programmers.stackexchange.com(如果) – jadarnel27

回答

2

您對便攜性的語句:

C#/ java的需要有一個虛擬機實現每個plateforms,C++必須有一個編譯器

並不完全正確,或明確真實的 - C# ,VB.NET,Java等需要編譯一次IL,字節碼等,但是C++需要編譯爲每個平臺的不同版本,這也可能需要更改所使用的DLL(如果有)或方法管理記憶。對於垃圾收集,我不太瞭解C++中的線程,但在託管代碼中,您無需做任何工作即可擁有垃圾收集器。它已經在那裏。另外,在託管語言中,您傾向於編寫更少的代碼來執行您需要執行的操作,並且這在清晰度方面有很大的優勢。 (我發現在設計應用程序的UI時尤其如此。)另外,可以使用託管代碼執行實時優化,並且可以對引擎進行更新以使其更好。

託管代碼和非託管代碼都有幾個優點,最終取決於您正在執行的操作。我認爲大項目更適合於託管代碼,並且需要速度的部分可以通過非託管代碼完成。畢竟,託管代碼中可以使用非託管庫,反之亦然。

所以,在我看來,是的,你錯了。但這是一個主觀問題。

+0

主觀的問題是啊這似乎是真實的東西在這裏,我無法得到這個問題的科學答案,ty您的意見 – Guillaume07

1

託管代碼是適用於大多數應用程序的最佳方式。原因在於它的實現速度會更快,對於單元測試和維護更簡單。

肯定有應用程序,情況並非如此。必須快速的應用程序或需要特別訪問硬件的應用程序可能應該是本地應用程序。是的,您可以使用本機代碼重新實施託管應用程序中向您提供的服務,但您爲什麼要這樣做?

+0

易於編程,測試和維護是語言的一種屬性(以及其中的一種可爭論的和主觀的),而不是基礎代碼。 Haskell的支持者會聲稱它在所有樹上都擊敗了大多數流行的語言,但這種語言最流行的實現方式是完全成熟的提前編譯器吐出本地代碼。 – delnan

相關問題