C++、Java/C#之比較 (轉)

worldblog發表於2007-12-12
C++、Java/C#之比較 (轉)[@more@] 

  一、關於跨平臺問題。

  這點我未深入研空,只談談我的感覺,我感覺/的跨平臺實際上是個比較巧妙的騙局。因為它們的跨平臺性還是要某個廠家或廠家聯盟的支援,這種平臺不過是透過在不同的“硬平臺”基礎之上設定一個介面統一的“軟平臺”,這梓表面上是跨越了“硬平臺”,實際“軟平臺”的限制仍是無法跨越的;或若廠家未生產某一“硬平臺”的“軟平臺”那這個“硬平臺”你還上跨不上去的。真正的跨平臺技術是互聯上的“htm/”,這是目前任何廠家無法據為己有而又不得不遵守的標準。

  二、關於指標問題。

C#/Java 借鑑了C++,但去掉了C++的雙刃劍——指標(當然不是完全去掉,在某種形式下還是可以用的,或者在使用時受到了比較大的限制)。於是關於C#/Java、C++的優劣問題往往圍繞著指標展開,“用C#/Java,還是用C++”對於許多C/C++員來說,就象哈姆雷特的“是生存,還是死亡”讓人躊躇徘徊。其實指標的使用與否,其本質就是的分配、訪問與釋放權由誰掌握的問題。

使用指標,由程式設計師根據需要分配、訪問記憶體,程式執行時動作明確直接沒有額外的處理步驟,程式的就高,但若程式設計師忘了釋放記憶體或釋放記憶體的策略不夠周全,就會產生不可預知的問題,而且這種問題往往是比較嚴重。

不使用指標,並不意味著記憶體的分配、訪問與釋放不須處理,只不過是這些工作由生成的通用“記憶體管理器”完成了,因此程式執行時,必須增加額外的記憶體管理動作,所以執行效率相對上種方式而言有所下降。由於“記憶體管理器”的運作是基於業內專業人士制定的比較完善記憶體管理機制,因而程度較高。但實際上,由於記憶體的分配、訪問、使用、釋放的情況比較複雜,這種安全性並不是100%的。也就是說安全的保證是由“另外的人”負責的,這種情況下,一旦出現問題,你無法查清問題所在,或即使你查清問題所在,也無法糾正。

好了,關於指標,一邊是100%的效率、60%的安全性、100%的自由,一邊是60%的效率、99%的安全性、100%枷鎖,你選擇吧。我想對於“高手”而言,自信也罷、固執也罷,選擇指標是他們骨子裡自由與冒險精神的決定。

“是生,是死——這是一個值得考慮的問題。”——但不要喪失了行動的能力。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991794/,如需轉載,請註明出處,否則將追究法律責任。

相關文章