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....