我從事Windows平臺下的C++編程和C#編程,對比兩者,毫無疑問C#的編程方式讓人非常舒適,雖然也有解決問題的難度,但是大多數(shù)時候,開發(fā)的過程中關心的問題都是業(yè)務上面的解決方案,而C++的開發(fā)至今位置還是困擾我心,對比了一下C#C++GUI編程,有以下的重要區(qū)別:

 

1.C#因為是基于.NET的,所以是RAD方式的編程方式,而C++雖然有所謂的VC IDE環(huán)境,但是相對于C#,簡直是處于史前時代;

2.又是因為C#基于.NET,微軟又給.NET提供了完善的支持,導致C#在語法的舒適程度上超越C++很多,C++的語法太復雜了,更多的時候會因為語法的困難帶來很多不必要的麻煩;

3.C#.NET框架提供了很多基礎的必要的庫,比如操作XML的庫、操作數(shù)據(jù)庫的庫、簡單而又方便的完全Unicode化的字符串,這些都是現(xiàn)在C++所不具備的,但是C++有強大的和CPU內(nèi)存一對一映射的關系,導致用C++寫代碼可以對各種資源做很好的控制,這一點C#又不是很容易做到;

4.C#因為是RAD工具,所以做起界面來,很方便,再加上語法級別支持的事件、委托、多線程等支持,令C#如虎添翼,而C++則需要借助一些很難使用很難理解,并且很難編譯的開源庫才能支持這些東西,這導致了C++的門檻很高。

 

現(xiàn)在我使用WTL發(fā)現(xiàn)WTL總體來講因為是建立在ATL之上,所以還是一個很輕便的UI Framework,但是整體的架構(gòu)還是比較完善,可以很方便的編寫Component,但是由于我的水平不夠,經(jīng)常在使用方式上有所錯誤,導致經(jīng)常遇到一些很難除的Bugs。但是同樣的WTL提供的是一種UI Framework,所以別的諸如Unicode/XML/數(shù)據(jù)庫這些東西的支持很差勁,基本上沒有,要么只有自己寫,要么就只有用微軟的COM組件提供的一些,但是它對COM組件的使用方式又沒有進行封裝,又導致使用起來非常困難。所以如果要加速C++開發(fā)軟件的進度,必須改善這些問題。

需要改善的內(nèi)容:

 

1.Unicode字符串的支持,可以方便的進行國際化軟件的開發(fā);

2.XML的完善支持,雖然有一些網(wǎng)絡上開源的XML庫,但是還是不好用,也許是因為國外的社區(qū)對Unicode并不關心,還有一些別的因素,包括.NET FrameworkXML的支持都不是完美;

3.徹底完善的掌握一個C++ UI Framework的使用,這點也是最重要的,否則不可能用C++Windows平臺下寫軟件;



當然,C++開源界提供了很多解決方案,但是想像一個項目中用到N多開源項目,對于任何人來講都是難以學習和掌握的,特別是現(xiàn)在C++開發(fā)人員整體素質(zhì)并不是很高的情況下。如果有一個C++ GUI Framework提供了簡易的學習曲線,強大的GUI設計,完美的Unicode支持(不要以為wchar_t那樣一下就叫完美Unicode支持了),C++的語言本身再進行一些改革,一切就完美了。

上面的文章有點語無倫次,各位不要見怪!謝謝大家聽我這么多廢話!