我对C++的前景看法 C++和C#的对比

转载 2012年03月29日 10:34:53

  从我进入CSDN VC/MFC的那一刻起,总能在这个版块看到这样那样的讨论VC、C++语言是不是要淘汰,被C#彻底取代诸如此类,这就是传说中的“月经贴”。一些新手可能就会因为看到这些帖子感到迷茫,比如他们正在开始学VC,要是突然发现被淘汰了,岂不是白学了?对此我认真看了每次的“月经贴”,论坛中的一些老大们的言语我也都看在眼里,他们对此是看得很清楚的。接下来我将会用中肯的语言说说我的见解,各位有什么意见可以跟帖讨论。

  先说语言,C++作为数据结构入门的最佳语言的说法不少,其实有人认为Java更加适合做数据结构入门的语言,我感觉其实要看个人的喜好。但是C#肯定不会用来做数据结构入门的语言,C++我认为是一个比较好的理解远离的语言,是一切之本。Java中所说的引用,其实也就是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++的生命力至少还要4-5年,之后才会渐渐的淡出,但是只要追求自由的人存在,C++就不会消失;只要操作系统一天是用C++写的,C++就不会消失。

  下面说说语言的选择问题,这2种语言各自的优劣,我在上面都做了简要的比较。我在月经贴中总看到争辩,讨论这2种语言哪个更好,甚至会出现不和谐的字眼。我觉得这是何必呢?各自有各自的天地,请你也不要再说什么C++会没落的的话,那是你自己不用,就说C++没落?就像MSDN英文你看不懂,你就说API垃圾?你自己心里认为它不行,怎么贬低,这个随便你自己心里高兴,别拿出来充专家,更别用自己幼稚的思想左右别人。微软7年前就放言,C#将要取代C++,今年都2012了,每年还不是一样有人跳出来叫嚣?

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

相关文章推荐

c++ 与C#比较

对于新手来讲 vc比c#难很多(入门学习) 实现同样的功能,vc的代码量要比c#多很多 对于高手来讲 他要考虑是项目的需求 是要程序运行速度快的那种,还是开发速度快的那种   C#...

C#和C++的速度大比拼

C#目前是微软.NET平台首推的应用程序开发语言。C#编写的应用程序必须运行在一个特殊的环境中,即受控环境(managed)。与以往非受控(unmanaged)的C++相比,C#应用程序的性能到底如何...

C#与C/C++的交互

C#与C/C++的交互 欢迎转载,请注明出处及作者 最近在编写Warensoft3D游戏引擎,并预计明年年初发布测试版本,底层引擎使用DirectX和MONO来编写,上层的逻辑使用C#来编写...

在Asp.Net中使用JQueryEasyUI

JQueryEasUI: 官方下载 官方演示 官方文档 其实是用类似的框架,看看官网的文档也就OK了,本文是我最近是用JQueryEasyUI的一个总结,也可以让初使用JQueryEasyUI的朋...

Qt/C++ 开发Android平台《林中伊人》消球小游戏全记录3——Qt控件的两员大将QLabel和QPushButton

引子         前面的文章介绍了设计小游戏的灵感起源以及开发环境的建立,终于该说说重头戏了,这个游戏在程序上是如何来实现的~         对于一个游戏来说,程序部分是它的...

用Qt制作的Android独立游戏《吃药了》发布

一个多月的努力终于有了回报,我自己研究制作的独立游戏《吃药了》,终于在360应用商店上线了。 这一款游戏呢,使用的是Qt开发的。其实开发这款简单的应用之前,我经历了端游和页游,但是对手游...

NumPy简明教程(二、数组1)

NumPy数组(1、数组初探) NumPy数组 NumPy数组是一个多维数组对象,称为ndarray。其由两部分组成: 实际的数据描述这些数据的元数据 大部分操作仅针对于元数据,而不改变底层实际的...

让天堂的归天堂,让尘土的归尘土——谈Linux的总线、设备、驱动模型

写代码,适用于同样的原则,那就是把正确的代码放到正确的位置而不是相反。同样的一个代码,可以出现在多个可能的位置,它究竟应该出现在哪里,是软件架构设计的结果,说白了一切都是为了高内核和低耦合。

Qt动画框架的学习

Qt动画框架的学习 近一年,学习游戏开发遇到了瓶颈,主要是因为游戏中有很多复杂的状态要维护,以前使用的switch–if方法现在看来已经穷途末路了,因此,我开始学习游戏开发更加高级的内容。我觉得...

C# 与 C++ 数据类型对照表

/C++中的DLL函数原型为 //extern "C" __declspec(dllexport) bool 方法名一(const char* 变量名1, unsigned char*...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)