本地代碼東山再起 C++死灰復燃

碼頭工人 13年前發布 | 9K 次閱讀 C/C++

編程語言的發展趨勢一波三折。起初最熱門的語言是Java,后被Python取代了,隨后Ruby突出重圍搶占了市場風頭,最終還是回到了JavaScript。不管你信不信,2011年的最終語言將會是C++。

上周,最新版本的ISO C++標準經過投票一致通過。這是C++語言13年來的首次重大修改,現正式稱為C++11。新標準的修改引入了新的設計更容易對并行處理架構開發,包括并行計算的Lambda和新的數據類型。

C++并非真的被取代。與年代更久的同類語言C相比,C++對于系統編程和性能密集型的本地代碼的應用程序來說仍是最熱門的語言之一。

近年來,傳統的系統編程語言已經慢慢淡出視野。現在越來越多的程序員轉向遠離本地代碼編程的環境,如Java和.net。另一些程序員為了在Python,Ruby和JavaScript的語法上尋求快捷,寧可犧牲一些性能上的優勢。

本地代碼可能性不大,包括谷歌

谷歌是對本地代碼一直情有獨鐘的少數公司之一。在谷歌憧憬的理想環境下,應用程序完全在瀏覽器里面運行;因此,谷歌開發了Chrome OS來證明自己的觀點。

谷歌也曾承認過,有時候經過解釋的JavaScript還不夠。我在以前的文章中介紹過谷歌本地客戶端(NaCl),這種沙境讓Chrome瀏覽器可以下載和執行本地二進制代碼,以便處理性能密集型操作。這絕非谷歌在閑暇之余的試驗活動。上周,谷歌在Chrome的最新測試版中發布了新版本的NaCl,此技術第一次在默認情況下被啟用。傳聞稱,谷歌悄然添加到最新版Chrome OS中的Netflix媒體流支持功能也依賴NaCl應用編程接口(API)。

NaCl也不是表明谷歌對本地代碼的唯一認可。這家搜索巨頭的Go編程語言之前就被廣泛稱為是“類似Java”,但這只說對了一部分。從語法上來講,Go某些方面的確類似Java,但Go代碼并不在虛擬機里面運行,而是直接編譯成了本地代碼。此外,谷歌甚至確保Go二進制代碼不但可以在桌面上運行,還可以在谷歌應用程序引擎(Google App Engine)云計算環境里面運行。

很奇怪的是,這些舉措使得谷歌與位于雷德蒙的競爭對手關系融洽和睦。作為世界上最大的桌面軟件開發商,微軟對待C++的態度一直比許多公司更友好。可是近些年來,本地C/C++開發人員覺得自己受到了一點冷落,因為微軟把大部分精力投入到了C#,這是面向.NET平臺的受控代碼C衍生語言。

但這種情形似乎在發生變化。Visual Studio 2010已經支持C++11的大部分功能特性。今年7月,微軟在其Channel 9開發人員網站上發布了一個新的視頻系列,名為“Going Native”(使用本地代碼),專門介紹本地代碼方面的發展,特別強調C++。與此同時,目光敏銳的觀察人士注意到了微軟在9月召開的Build大會前夕居然沒有.Net方面的宣傳。Build大會之前名叫專業開發者大會(PDC)。

本地代碼永不沒落

早在Java時代之前就懂得編程的那些人自然完全明白為何人們重新對本地代碼產生了興趣。傳統的軟件開發方法有著悠久的傳奇歷史,經過充分優化的本地二進制代碼仍是有可能從處理器獲取最高性能的最佳方法。

話雖如此,本地代碼也有其缺點。首先是我之前提到的安全問題。由于與C#和Java等受控語言相比,C和C++等語言讓開發人員可以更接近底層硬件,所以要認真考慮的問題就多得多,缺乏經驗的編程員可能會造成嚴重破壞。

移植性是另一個問題。對于處在Wintel環境下的Windows開發人員來說,編寫可以在多種處理器架構上編譯的代碼從來不是個大問題,甚至在過去也是如此。然而換成了Unix環境,情況就不一樣了。

現在,谷歌的NaCl環境重新帶來了同樣一些問題。Web開發人員習慣于自己開發的應用程序在任何基本上符合標準的瀏覽器中運行,但是NaCl模塊與特定的處理器架構死死地綁在一起。想讓同一個模塊在x86、x64和ARM等處理器上都可以運行,你就得編譯這三個不同的版本,然后把這三個版本都放到Web服務器上。對于長期習慣使用PHP和Perl的開發人員來說,這就需要一番適應。

但要牢記的最重要的問題是,為手頭的任務選擇合適的工具。誰也不想回到以前的糟糕年代:面對使用由C編寫的CGI腳本的Web,為文本數據而糾結。另一方面,不管手頭的任務是什么,把每一個應用程序硬塞進同樣的解釋語言或受控代碼環境同樣不是正確的方法。

現在的計算機異常尖端先進、用途異常廣泛、性能異常強大。要充分利用它們的功能,開發人員就應該使用盡可能廣泛的工具。本地代碼的卷土重來往正確方向邁出了一大步。(張祺/編譯)

來自: http://www.infoworld.com/d/application-development/hail-the-return-native-code-and-the-resurgence-c-170142

 本文由用戶 碼頭工人 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!