c#

位置:IT落伍者 >> c# >> 浏览文章

C#与C++谁更强?还是关公战秦琼


发布日期:2021年05月06日
 
C#与C++谁更强?还是关公战秦琼

我一直不明白C++真的比C#强大吗?望高手指点

困惑为什么飞信之前的版本用NET做的感觉不是很好用最终放弃了NET而使用C++重写了

感觉重写之后的版本好一点难道是他们的技术不好?还是C++真的比C#强大吗?

困惑为什么QQ一直使用C++开发(虽然QQ开发的时候C++还是最主流的C#还不是那么流行

)但是概念版QQ只是使用了WPF的技术实现了其界面但是内核还是C++现在C#已经流行起来了啊!

为什么不出现完全C#的QQ 呢?还是C++真的比C#强大吗?

讨论开始后有技术人员表示这个要看具体需求其实这里不太存在效率的问题现在的计算机效率已经不成问题了

如果效率有问题MSN怎么跑的?有人说所以MSN很慢?

MSN慢是因为MSN的服务器在美国而不是因为用了NET编写的才慢的就楼主所说的飞信QQ(还不止飞信和QQ还有很多)

这种软件一般都是使用C或者C++开发为什么不用NET呢?

这个就牵涉到一个用户群的问题

飞信QQ这种是即时通讯软件他的用户群非常广泛那么也就碰上一个问题如果你在安装飞信QQ的时候他先提示你去安装一个NET framework

你是不是要晕掉?

就算你知道这个是什么?但是你不能保证所有的老百姓都知道NET framework啊

那么你可能要问直接把NET Framework打包到飞信或者QQ中?!别天真了NET Framework太大了就算真的打包进去是不是都要下载半天?

那么用户体验就很差了!还有就是牵涉到跨平台的问题用C或者C++基本上不存在跨平台的问题你用NET呢?LinuxMAC OS上怎么办?

你不能让你的用户为了用一下飞信或者QQ全部先换OS吧?所以一般官方的版本都是使用C或者C++写的

那么开源的版本吗这个就是随便了你爱用不用!至于MSN那是微软的策略所以他就是用NET写成的而且官方的MSN只支持window

(不知道是否已经出了官方别的平台的版本?)一般情况下你要在Linux或者MAC OS上只能用开源的MSN客户端!

CTO编辑注意到上面这位技术人员的观点是从操作系统的角度来谈也就是不同系统对不同开发工具的适应程度

特别是NET Framework如何运行在Linux这样的开源系统中的问题

对于飞信用C++重写的问题有人表示了不同的观点新版飞信一如既往是NET的也不知道从哪里传出说是C++重写的其实根本没有

QQ的话不得不考虑组件重用的问题原本用的好好的核心没必要换不是吗

总体来说NET运行效率应该比不上原生代码的但是性能的差距肯定不会太悬殊毕竟虚拟机可以针对硬件平台优化代码原生程序则很难做到

NET难以保证代码的安全确实是个问题但是使用各种手段增加破解难度也是可行的毕竟就算是原生程序对于代码的安全也不能%确保

这样的观点是支持NET广泛使用性的不过也认为一套已经成熟的开发手段没必要做平台的调整

C#比C++多了一层中间语言Common Intermediate Language在运行的时候生成计算机的语言再去运行和C++直接生成计算机语言相比效率更差

最早的时候计算机编程是用打洞的字条进行输入的那个字条就相当于最后C++编译好的计算机认识的程序

NET强大在于开发效率易于维护(谁让C++这么多的宏啊常量啥的)NET并不慢第一次加载可能会因为要加载runtime需要更长的时间

一般的指令执行可能比C/C++慢百分之几十而已

是同一个数量级的如果说NET写的程序慢的不能忍受那么绝对不是NET的问题不过NET程序更占内存这个我同意谁让要加载虚拟机呢

谁让类型带了这么多元数据呢 这一点恐怕所有虚拟机语言都好不到哪里去

有技术人员提出这个问题主要是权衡吧托管的封装好的代码必然会给程序员带来很大的帮助想想当年程序员们为内存洩露而打飞干戈的年代吧

C++是很好就好比给你一把玄铁想打造什么样的锐利武器你自己打造把但是打造不好可怪不得C++而C#呢给你一半锋利的剑你去厮杀吧

但是随便你武力再好遇到一个比你锋利的剑你就要认倒霉

封装给我们带来巨大的好处物以类分这符合每个人的习惯而C和C++呢万物来自核心从核心出发吧这符合那些造物者的思维!

所以很多东西的核心是C++而至于界面或者快速开发那还是需要时间的而造物者却很稀缺如果所有的事情都让造物者来完成时代就要倒退了

考虑到效率问题我觉得正如上面某楼说的科学计算或者仿真等方面不用太忧虑其实让我们机子卡的程序还真不多!

上一篇:利用C#实现标注式消息提示窗口

下一篇:C# Design Patterns (2) -