計算機的革命----編譯器體系的戰爭<二>-----集團軍的危險信號

Symantec C/C++ 已經不見蹤跡,Symantec如今專心作他的安全軟件,諾頓殺毒軟件,還有一些其餘的,Boland C/C++最後仍是被收購了,如今的RAD C++ Builder混的一直不慍不火,WATCOM 被Sybase敗落後終於開源了,如今是Open WATCOM 1.9,Open WATCOM 2.0正在構建中,前幾日我還編譯了 2.0Beta1 如今呢,Microsoft C/C++也還不錯,代碼質量什麼的也很好,在微軟的內部,C/C++的壓力也不小,.NET託管的還有C# Visual Basic F#這些都在爭取微軟的資源,微軟也曾經推出過C/C++編譯器的研究項目Phoenix,如今呢,是推出Roslyn,C#,Visual Basic的編譯器項目,WPF直到Visual Studio 11纔在Windows 8上正式支持C/C++構建,以往,若是不是本身設置,C/C++代碼不用C/CLR是沒法支持的,固然就算WPF支持也要C/CLR。不過,在Windows平臺上,最佳C/C++應用開發Visual C/C++是最佳選擇,前提是你有足夠的錢支付軟件受權費用。GCC在Windows上有兩個著名的移植版本一個是cygwin,也就是windows 上模擬Linux,通常而言開發基於Windows的程序不太建議,由於這樣的程序還要調用cygwin庫,這個cygwin庫是在Win32API上封裝模擬出一個POSIX系統,因此運行起來效率仍是有問題的,通常應用是沒有關係,可是要實現殺手級應用仍是有影響,還有一個比較好的就是MinGW,封裝了最簡單的win32API,在Windows上編譯爲原生代碼,效率比較高。固然不管如何,他們都只是GCC的一個分支。此時此刻,在編譯器領域只有GCC才能夠和Microsoft C/C++相媲美。 linux

有一個項目發展好幾年了,蘋果的發展,還有該項目的逐漸成熟,前途不可小覷。這就是LLVM。 c++

先不談LLVM如何牛逼,不過在Windows上使用LLVM/Clang仍是很尷尬的。任何一種C/C++編譯器的配置都比Clang的配置簡單,Windows風格的環境變量彷佛對LLVM無效,而Broland C/C++編譯器,OpenWatcom,連GCC的都很好配置,還有LCC什麼的。但不能否認,LLVM/Clang仍是有它的特點!也在快速發展。 windows

要說編譯器的大戰,就如今而言,不像十幾年前那樣是孤軍混戰,如今更像集團軍對峙。 安全

MS大棒,Microsoft Visual Studio'tools+Microsoft.Net 框架

開源鬥士 GNU-GCC 模塊化

蘋果的尖兵 LLVM/Clang 性能

先談跨平臺能力: 優化

跨平臺能力最好的仍是GCC,GCC針對不一樣的平臺有不一樣的實現,並且交叉編譯能力也很強大。 ui

在就LLVM在不少平臺上也實現了,可是LLVM在其餘平臺上的實際性能仍是不夠理想,特別是在Windows上。 編碼

因爲MS的東西並無開源,因此並不知道其實際跨平臺性能,但微軟的跨平臺性能並不夠理想,只支持微軟本身的平臺,不過純編譯器是能夠脫離操做系統而實現跨操做系統平臺的,並且微軟也有實現arm的cl,因此微軟的Cl移植到linux 也並非難事。比較難實現的是連接程序和外部庫。

代碼效率:

對於MS來講自家的東西就在自家的園子,本身知根知底,因此MS的代碼效率仍是不錯的。GCC衆人拾柴火焰高,代碼效率仍是不錯,傳說中Clang如何神奇,不過這個還真的是事實,Mac OS iOS最近的都是基於LLVM/Clang+GCC搞出來的,GCC原來在MacOS上飽受詬病。不過,對於最大的windows平臺,LLVM仍是那麼的不盡人意。

總的來講 出現了三個集團,一個是微軟以Visual C++ + .NET的微軟的VS系列,一個是LLVM/Clang系列,一個就是GCC系列,不管是多種語言的集成仍是商業化,支持的項目,很難找到與這三個相提並論的編譯器集團,雖然Open Watcom開始支持多個平多種系統,甚至支持三種語言,可是仍是很孱弱,爲何不說JDK,由於JDK不可能實現整個系統從底層到上層的開發 ,JDK限制與應用方面。能夠說將來數年,這幾個編譯器集團的鬥爭將變得很是激烈,LLVM/Clang一心想取代GCC,而MSVS想的是如何保持氛圍,GCC要保持地位和搶佔MSVS的高地。    MSVS的優點就是編譯器和快速開發環境的集成,極大地下降了開發門檻,支持的處理器有x86 AMD64 ARM,這些和GCC,LLVM都是差很少的,GCC則是一個純編譯器,超強的平臺支持能力並且開源,極強的定製能力,而LLVM優化編譯的能力和底層虛擬機這些先進的理念也將衝擊那些古老的編譯器,不過相似於LLVM的框架,微軟早有研究,那個是叫 「Phoenix」,而GCC也在使用C++編寫源代碼,而且在GCC 5.0時實現模塊化 向LLVM靠攏,很期待這些編譯器集團軍的做爲,讓咱們拭目以待吧。

                                                          未完待續

                                                          2012.11.23 


LLVM/Clang的設置是硬編碼的問題,主要要利用MSYS來支持。在Windows下仍是可使用的 可是還有一部分額外的項目沒有在Windows上很好實現 如libc++,vmkit....  

相關文章
相關標籤/搜索