浅谈Windows下C++实验环境的建立
jorge 2006-04-25 03:19:50 文/jorge
看了这个题目首先请不要笑,这并不是一个容易的问题,至少是本人一直在探索的。
也许你会说:安装个VC谁不会呀,还用你在这里“浅谈”?
没错,如果你一直用VC用得很好,也打算一直用下去,本文可能确实对你没有多大用处。不可否认VC是个好的开发工具,但它并不是个好的实验工具,至少,不能算是个好的C++实验工具。在这里,我们的思路很简单,抛开各种大的话题,什么平台之争、方法学、开发效率之类;我们的目的就是:为C++的学习者建立一个最适合学习的环境。所谓最适合学习,应该具有以下特点:
1.不能像某些IDE那样,屏蔽太多的底层细节,而是要让使用者直接接触C++程序的生成和运行过程。曾见过许多初学者,只知道C++程序在VC环境里运行,从不知编译出来的exe为何物;或者只知道"#include <stdio.h>"是死记硬背下来、不写不行的例行公事,对文件包含机制一无所知,更不用说库的链接了。这种无知,不能不说,有一部分是拜那些太方便的IDE所赐。IDE给初学者一种错觉,认为C++等同于IDE,或者命令行是淘汰的低效的东西,图形界面才是先进技术的体现。这,已经构成了学习C++的巨大的障碍。我有理由怀疑微软是用这种东西来惯坏别人,让他们在舒服和自以为是之中被真正的先进技术越拉越远(Windows本身亦是这样一个例子)。
2.要有最好的RAD功能。不要惊讶,这和第一条不是矛盾的。学习或可分为两个阶段,模仿与创新。在前一阶段,好的RAD功能,可以让你大可不必为了学习Socket而写一个即时消息demo的时候,花一大半时间来构筑用户界面;而在后一个阶段,你可能需要随时快速的把你的idea付诸实现,这时,好的RAD亦可让你的工作量中那些繁冗的部分倍减。注意这时的重点在于idea,而当你学习用户界面本身的时候,切不可受RAD的诱惑。这是之所以我把RAD放在第二条,学习的时候,也应该先学习命令行,而后再RAD。
3.功能要强大。这不是指“帮你快速搭建完美解决方案”的能力,而是指,要能够方便地应用各种先进的技术外延,如网络、数据库、图形等方面的新技术体系等,因为,你可能要在C++的基础上去学习它们。注意,仍然强调一下,你是在学习,就是说你的目的是了解其所以然,而不是快速开发出一个应用。这一条,此时此地,或可理解为编译器的兼容性,及其被支持的程度。
基于以上三点的过滤,也许你会发现,好的环境已经所剩无几了——至少我自己的感觉是这样的,这也是之所以我到今天还在努力思考这个问题地解决方案。而写本文的目的,就是把我目前的思考结果与大家分享。
首先,我选择的编译器是MinGW。它系出名门,是大名鼎鼎的GCC在Windows下的移植版,也是Eclipse CDT的基础,和Borland C++ Builder X支持的编译器之一。选择它并不是为了沾什么名牌的光,而是因为多种原因:
首先,GCC的背景让它具有一流的兼容性。我想你一定不会愿意刚打算学习的新库拿到你的编译器上无法编译吧?——MinGW的特殊位置,使得它对源自Windows和Linux的库都支持得如此之好,这种兼容性我还没有见过第二个,连Cygwin都无法相比。MinGW是Windows与Linux(Unix)之间的一个极好的切合点,就是说,你将来无论在哪一种平台上开发,MinGW打下的基础都会让你受益。
其次,同样GCC的背景使它具备了众多的功能。——要那么多功能有什么用?为了学习,就这么简单。真正从业开发的时候,你可以认为,多余的功能没有必要存在,认为片面追求那些永远用不到的功能是一种浅薄行为,但是我们是为了学习,我们不知道以后用什么,对编译中各种选项的理解是我们所需要的,对我们掌握编译过程的各种原理具有重大意义。
第三,嗯——并不想引起太多讨论,这超出了本文范围,但我自己认为,用一个免费软件,比用一个盗版的,更厚道一些。
当然,MinGW也有缺点。我最大的体会,是它的速度比较慢。然而,与优点相比,这几乎不值一提了,尤其当我们的目的是学习的时候。
其次,关于RAD工具。C++的RAD工具本也不多,这让我一度苦于每一个idea的小小demo都要手动写GUI代码,甚至产生了用Delphi构建用户界面再调用C++的核心的想法。的确,我用过的RAD工具中,Delphi是一个不可超越的概念,没有一个别的工具比它更便捷。
然而,最后,一个工具让我看到了曙光,那就是Qt Designer。Qt不是刚认识了,但出于种种原因,最近才深入研究,也发现,也许它正是我要的东西。Qt4已经没有了Qt3的直接建立项目的功能了,但在命令行使用qmake同样相当简单,而且限定于以学习为目的的时候,Qt4甚至比3更贴近第1条的要求。使用Qt库构建用户界面其实并不难,在我觉得,甚至比wxWidgets更加简单,稍加学习即可入门。它还是跨平台的,而其开源版同样是免费的,更要命的是开源版在Windows下仅支持MinGW,简直是为我们的需求订做的。——在这里需要重申,使用RAD的目的不是让你学会懒惰,去荒废Windows或Linux的GUI SDK,而仅仅是一种快速建立demo的手段。C++下的GUI库并不少,之所以选择Qt,不为别的,只因为它提供了最好的RAD。当然这只是个小小的推荐而已,C++领域图形库众多,每人都有自己的需要和喜好,并不想将“自由软件圣战”等口水引到这里^^
以上是本人对于Windows下C++实验环境建立的一点不算成熟的看法,同样这句话,希望给适当的人带来适当的收益。关于MinGW + Qt环境的具体建立方法,本人即将另发一篇文章详述,敬请关注(当然,网上此类文章也众多!)。
本文出自jorge的博客:http://blog.csdn.net/jorge