浅谈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









...全文
980 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
river_bird 2006-05-11
  • 打赏
  • 举报
回复
我的两大最爱Code::blocks 和dev cpp,都是好东西,扩展性强,就是牛.,有什么问题在http://riverbird.blog.com.cn上进行讨论.那里有最好的介绍及交流.
xiaocai0001 2006-05-05
  • 打赏
  • 举报
回复
发现将Vc6.0改造一下还是很好用的

VC6.0 + Intel C++ Compiler 9.0 + Visual Assist 6.0
吃狼的豆腐 2006-05-05
  • 打赏
  • 举报
回复
up
mekelly 2006-05-05
  • 打赏
  • 举报
回复
vc6+visual assist,
mfc and codeproject,
makefile and wxWindows,
roger_77 2006-05-01
  • 打赏
  • 举报
回复
这是学院派观点成分居多,
如果是企业实用派,就跟楼上所说的啦
alextooter 2006-04-30
  • 打赏
  • 举报
回复
看来楼主是不准备进行工业级别的开发了,就是自己玩玩,做试验呢。
WangGuangPing 2006-04-29
  • 打赏
  • 举报
回复
楼主的思考很有代表性,我也一直思考着这么个与楼主近似的想法,一直在寻求着一个完美的开发环境组合,我期望的完美是这样的:
1、跨平台的,这可以保证我的一次智力学习投资,获得多方面的收宜。
2、开放的,至少不会因为某一个商业行为而消亡。
3、可自由配置的,我可以任意选择自已喜欢的编译器,而不是由它来指定;我可以选择自已喜欢的类库,而不是非它自已的库不可。
4、有着清爽不繁杂,友好又不霸道,灵活又不失习惯标准的可视化操作环境。
5、是基于代码效率最高化为目标,兼容性占第一位的。如非要装个 .net或jre这类的,讨人烦。

根据以上的想法:
我目前的C++环境是这样组合的:
code::blocks + mingw + wxWidget+DialogBlocks
前三样都是开源的,跨平台的,可自由配置的。最后一样是为了配合wxWidget而选择的,是商业软件,这不能不说是个遗憾,但目前还没找到一个功能上能比的上它,又开源免费的工具。只能期望有更多的志愿者作奉献了。
song6295 2006-04-29
  • 打赏
  • 举报
回复
如果是自己学习用,要那么好的界面干什么,能看到结果就可以了,当然你也可以建立自己的模板
小改一下就可以用了
anyue417 2006-04-29
  • 打赏
  • 举报
回复
楼上的有道理,比如什么TURBO C++,也真太粗糙了
楼主的思考挺有道理的,但解决方案不太同意,但我又说不出来更好的,以后有经验了再来说吧
code_tin 2006-04-26
  • 打赏
  • 举报
回复
那当然.一个好的GUI主要是设计,不光是程序员能理解的内容,更涉及人体工学呢.呵呵
Wolf0403 2006-04-26
  • 打赏
  • 举报
回复
RAD 真的那么重要么?写一个好的 GUI 程序涉及的东西远远超过 C++ 本身……
lk_517 2006-04-25
  • 打赏
  • 举报
回复
Qt Designer 和 mfc比有什么区别和优势
llmsn 2006-04-25
  • 打赏
  • 举报
回复
楼主虽然有去思考,但有些想法太主观了,一面之词.
lk_517 2006-04-25
  • 打赏
  • 举报
回复
好文,谢谢

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧