放假回来,去CSDN上一转,第一次发现了VC.NET版,因为我以前一直是不瞄.NET社区的(不是狂妄,是不懂),在上面看到一篇问对于VC.NET的种种顾虑的文章,突然想起在学校的BBS上也有人问类似的问题,突然想说两句。于是起了一个很狂的题目,说点鄙人的见解,希望对后来者有帮助。
那位老兄的问题中有一个是关于有VC6到VS.NET的转移的顾虑,这种顾虑我以前也是有的,例如我暂时不想学.NET,那么VC.NET是不是可以便以我的C++程序呢?如果学习VC.NET,是不是一定要学.NET呢?很多人就是在.NET的庞大面前失去了转变的信心,仍然使用着VC6,仍然受着使用STL时成百上千个warning的困扰,VC6转向VC7,真的这么难吗?
你也许看到了,我没有像大多数人那样使用VC.NET这个名称,而是使用的VC7,虽然MS是这样称呼的,因为我觉得这样称有歧义,也许我应当先澄清几个概念:
.NET是微软提供的一个Framework,对于这个Framework的特征等等,我不敢多说,精通.NET的大虾们可以告诉我。
VS.NET即Visual Studio.NET,是MS提供的一个IDE,在其中可以编辑C++、C#、Basic等语言的源程序和编译,其实其中的.NET好像一个表示,并不一定是一定要使用.NET。
C++是一门语言,你可以用BCB写,可以用VC6的IDE写,可以用VS.NET写,甚至可以用记事本写,这些都没有关系,因为它只是一门语言,而上面说的都是工具。
VC7是VS.NET附带的C++的编译器(我先这样称呼,没有任何官方这么说),是VC6编译器的升级版本——当然它可以编译带有.NET托管代码的C++源程序,那是另一回事——支持C++的标尊并带有MS提供的功能强大的古老的Windows的Framework MFC。
VC.NET是使用了.NET Framework的C++,是C++的一个变种,是MS对C++的一种扩充,出现了#using,__gc,__property等新的关键字,使C++可以使用.NET Framework;也可以理解成是一个编译器,是把C++编译出的二进制文件架构在.NET Framework上的一个特定的C++编译器。
还有一个就是我们对于VC6的称呼,VC6是一个IDE是不是?是的。VC6是一个编译器是不是?也是的。VC6是C++的一个带有MFC类库的版本,是不是?也可以这样认为。
所以你明白我为什么使用VC7而不使用VC.NET了?
这样来看,我们可以从几个层次上理解VC6到VC7的转变,这几层层层递进:
IDE和与C++语言严格程度(或者说编译器)层面上:这个转变应当说是VC6到VS.NET的转变,仅仅是如何适应新的IDE和一些细微的编译区别,不应该有任何的难度。
MFC层面上:这个转变其实也没有很大的障碍,由于MFC的向下兼容性,这一层面的障碍仅仅是上一层面的细微的编译器差别引起的小小改动和对MFC与IDE的集成方式的适应,例如ClassWizard的消失等等,这些仍然很容易解决。
平台层面:这个转变就是大家最担心的了,由于在VC6下只有一个Framework可以使用,就是MFC(或者你认为ATL也是一个Framework),或者你就要用SDK裸调API,其实他们最终还是Win32的平台;但是在VS.NET开发环境下,可以使用SDK,可以用MFC,最重要的是可以使用一个新的平台就是.NET Framework。如果你决定从Win32转变到.NET Framework,那么无疑这将是一个浩大的工程,可能这是大家望而却步的原因。
那么,你担心的是哪个层次?
从我在CSDN和BBS上看到的情况来看,很多人不清楚这三层转变的区别,于是想着进行前两个层面的转变却被第三层面吓倒,进而谈.NET色变,对.NET望而却步,守着VC6继续做这一切。
其实这也怪不得他们,没有用过VS.NET怎么也不可能明白它与VC6IDE的差别的,所以不如今天用我的精力把它挑明,免得再有人受苦 ^_^。
说这么多,其实就是一个意思,不要以为名字带个.NET就是.NET,使用Visual Studio .NET一样可以写出驱动程序,一样可以像你在VC6下面那样写C++程序,用STL库(而且.NET对STL的支持更好啊),一样可以用你的MFC,一样可以写出你想写的东西……一切只要一个前提,只要你不用#using,只要不用类似__gc,__property等VC7扩展的.NET关键字,那么写出的程序与.NET没有任何的关系,管它什么.NET。
既然我们使用VC6转向VS.NET的顾虑在.NET框架上,而一旦将VC7和.NET框架独立开来看,还有什么顾虑呢?这个转向本该和VC5转向VC6一样自然的,都怪微软,大肆宣传.NET,导致.NET滥用,到处都是这个东西,于是大家无所适从……
更何况VS.NET拥有比VC6更强大和好用的IDE,试试在VS.NET如何下断点,看看VS.NET的类视图,大胆的装上VS.NET,安装时只留下Visual C++,400M硬盘而已,然后鼠标动动,就可以把它的界面打造的和你熟悉的界面一样,然后跑上一杯茶,enjoy the new IDE and enjoy the new compiler!
//在下一介书生,第一次在自己的Blog上写这么多的字,不敢认为自己是大虾,但是实在不愿看到有人迷茫。
//其实我也没有用太长时间的VS.NET,如有错误,请指出并多多包涵。