我从事Windows平台下的C++编程和C#编程,对比两者,毫无疑问C#的编程方式让人非常舒适,虽然也有解决问题的难度,但是大多数时候,开发的过程中关心的问题都是业务上面的解决方案,而C++的开发至今位置还是困扰我心,对比了一下C#C++GUI编程,有以下的重要区别:

 

1.C#因为是基于.NET的,所以是RAD方式的编程方式,而C++虽然有所谓的VC IDE环境,但是相对于C#,简直是处于史前时代;

2.又是因为C#基于.NET,微软又给.NET提供了完善的支持,导致C#在语法的舒适程度上超越C++很多,C++的语法太复杂了,更多的时候会因为语法的困难带来很多不必要的麻烦;

3.C#.NET框架提供了很多基础的必要的库,比如操作XML的库、操作数据库的库、简单而又方便的完全Unicode化的字符串,这些都是现在C++所不具备的,但是C++有强大的和CPU内存一对一映射的关系,导致用C++写代码可以对各种资源做很好的控制,这一点C#又不是很容易做到;

4.C#因为是RAD工具,所以做起界面来,很方便,再加上语法级别支持的事件、委托、多线程等支持,令C#如虎添翼,而C++则需要借助一些很难使用很难理解,并且很难编译的开源库才能支持这些东西,这导致了C++的门槛很高。

 

现在我使用WTL发现WTL总体来讲因为是建立在ATL之上,所以还是一个很轻便的UI Framework,但是整体的架构还是比较完善,可以很方便的编写Component,但是由于我的水平不够,经常在使用方式上有所错误,导致经常遇到一些很难除的Bugs。但是同样的WTL提供的是一种UI Framework,所以别的诸如Unicode/XML/数据库这些东西的支持很差劲,基本上没有,要么只有自己写,要么就只有用微软的COM组件提供的一些,但是它对COM组件的使用方式又没有进行封装,又导致使用起来非常困难。所以如果要加速C++开发软件的进度,必须改善这些问题。

需要改善的内容:

 

1.Unicode字符串的支持,可以方便的进行国际化软件的开发;

2.XML的完善支持,虽然有一些网络上开源的XML库,但是还是不好用,也许是因为国外的社区对Unicode并不关心,还有一些别的因素,包括.NET FrameworkXML的支持都不是完美;

3.彻底完善的掌握一个C++ UI Framework的使用,这点也是最重要的,否则不可能用C++Windows平台下写软件;



当然,C++开源界提供了很多解决方案,但是想像一个项目中用到N多开源项目,对于任何人来讲都是难以学习和掌握的,特别是现在C++开发人员整体素质并不是很高的情况下。如果有一个C++ GUI Framework提供了简易的学习曲线,强大的GUI设计,完美的Unicode支持(不要以为wchar_t那样一下就叫完美Unicode支持了),C++的语言本身再进行一些改革,一切就完美了。

上面的文章有点语无伦次,各位不要见怪!谢谢大家听我这么多废话!