【C#每日一帖】【转】C#与C++的区别

没有什么语言能比C++更加贴近Windows本身了,这一点也是不可否认的。如果哪一天C#也能写驱动的时候,那么C++就真的会淘汰了(这天可能不会太远又或者很遥远)。

C#能做的,C++不一定都能做,C++能做的,C#也不一定都好做,所以经常看到有人拿这2个语言对比,我觉得确实没什么必要。

C#繁杂的调用Win32 API的方式,确实让人很不舒服,C++这一点做得比它好。但是,C#强大的网络操作,代码量大大地低于C++,我们抛弃不用Socket,改用WinInet或是MFC中的封装好的网络类,比如CHttpFile,还是没C#简单。C#的傻瓜式的类库操作和面向对象编程的完美特性,确实让其成为了Windows平台上最受欢迎的语言。也许,是微软想将Win32 API渐渐地全部封装到C#的类库中去,我感觉微软有这个意图,也许将来C#就不需要调用那些繁杂的Win32 API了,类库中均有提供也说不定。

我们为什么学VC?这点我曾经也问过自己。圣经上说:你必须知道真相,真相会使你自由。我们学VC是为了自由,不受微软的框制。微软通过种种的FrameWork让你陷于其中,你觉得,哇,原来编程是这么容易啊,几句话就能搞定。你想知道微软在内部干了些什么呢?你不知道,当然,你如果认为你没必要知道,这个我完全赞同,我后面会说。就说杀进程吧,C#中不通过Win32 API就那么一种方式,通过System.Diagnostics.Process找到进程,然后Kill之(如果我说的不对,使用C#的朋友请指正),而C++中,我们完全有无数种选择,就说不邪恶的,TerminateProcess,邪恶点的呢?不计其数。进程内存填0,卸载模块,消息洪水,句柄强制关闭,强制释放它的堆,太多太多了,甚至我注入进去,内部Raise一个异常,它也就挂掉了。保护进程, 不管内核下还是应用层,C#肯定是做不了的,C++有自己高端的地方,其他语言无法涉足。你见过C#做的杀毒软件吗?

C#,极其简易的界面操作,令人看着很舒服的编码,他有太多的地方,C++根本无法涉足。拿C++做Web Services除非是大脑进水,用C++做网络蜘蛛,也根本是无聊之举,要么就C#,要么就拿Python来干(个人漏见),超级大量的数据,拿垃圾回收基本上为0的C++去做,简直就是自找麻烦。C#的WebForm,和Jsp占据着Web的大片江山,C++能吗?不能。C#是一门博大精深的语言,类库强大到变态,基本上可以这么讲,所以用C++的朋友也不能随便贬低C#程序员,C#的程序员的层次分得比C++多很多,高层的也是象牙塔级别的。C#的架构师,那种恐怖的实力,C++中级程序员是无法想象的。C#更加注重于软件工程的应用,各种设计模式的使用,C++则注重于实现功能。

C#的前景是不错的,我个人很看好它,MSDN 杂志每期的文章可能有8成是C#,C++不算很多,微软的重心可能在C#上,希望C#逐渐能取代C++。但是C++会这么容易被取代?不可能。就像一个搞管理的,你让他接管搞开发的人,让他从干一样到同时兼干这二样,会有这么简单么?c++的生命力至少还要7-8年,之后才会渐渐的淡出,但是只要追求自由的人存在,C++就不会消失;只要操作系统一天是用C++写的,C++就不会消失。

选什么语言,随自己高兴,需要哪个用哪个,这是不矛盾的。开发数据库,我倾向于用C#,做Windows底层,我肯定是C++,都掌握下没有坏处。VS2010中C++的新特性各位同胞可以关注下,不知道会加入什么,VC2008的特性我探索了这么久,还没有探索结束。C#是越来越好用了,Linq to Sql让不懂数据库的人都能去操做数据库了,辅助一些第三方类库,能发挥强大的威力。完全取代C++,等操作系统是C#写的,C#能开发系统中的一切组件的时候再说吧,至少现在C#还不能开发API,驱动吧?

你可能感兴趣的:(C++,C#,区别)