• C#与C++抉择【z】


     【篇首语】这篇文章对两种语言的评价我很认同。快速开发用C#比较好。如果考虑效率,C++内核配合C#界面也是我常用的方式。

     

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

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

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

        困惑2:为什么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呢?Linux,MAC OS上怎么办?

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

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

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

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

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

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

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

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

      .NET难以保证代码的安全确实是个问题,但是使用各种手段增加破解难度也是可行的, 毕竟就算是原生程序对于代码的安全也不能100%确保。”
    这样的观点是支持.NET广泛使用性的,不过也认为一套已经成熟的开发手段,没必要做平台的调整。

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

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

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

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

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

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

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

      C++是很好,就好比给你一把玄铁,想打造什么样的锐利武器,你自己打造把,但是打造不好,可怪不得C++;而C#呢,给你一半锋利的剑,你去厮杀吧,
      但是随便你武力再好,遇到一个比你锋利的剑,你就要认倒霉。

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

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

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

    原帖:http://www.wrsaw.cn/Article/Print.asp?ArticleID=13191

    image

    欢迎访问我的专业知识博客!
    博主:白途思(begtostudy)
    微信/QQ:370566617
    Email:begtostudy#gmail.com
    欢迎访问我的其他博客:我的编程知识博客 我的学术知识博客

  • 相关阅读:
    事件处理之二:点击事件监听器的五种写法 分类: H1_ANDROID 2013-09-11 10:32 4262人阅读 评论(1) 收藏
    如何解决安卓SDK无法下载Package的问题 分类: H1_ANDROID 2013-09-09 10:26 1199人阅读 评论(0) 收藏
    adb常用命令 分类: H1_ANDROID 2013-09-08 15:22 510人阅读 评论(0) 收藏
    用IBM WebSphere DataStage进行数据整合: 第 1 部分 分类: H2_ORACLE 2013-08-23 11:20 688人阅读 评论(0) 收藏
    三大主流ETL工具选型 分类: H2_ORACLE 2013-08-23 11:17 426人阅读 评论(0) 收藏
    ETL概述 分类: H2_ORACLE 2013-08-23 10:36 344人阅读 评论(0) 收藏
    POI操作Excel常用方法总结 分类: B1_JAVA 2013-08-23 10:01 349人阅读 评论(0) 收藏
    段的创建表user_segments 分类: H2_ORACLE 2013-08-10 11:13 714人阅读 评论(0) 收藏
    让android项目支持boost 支持c++11
    unity中全屏背景图缩放
  • 原文地址:https://www.cnblogs.com/begtostudy/p/1833708.html
Copyright © 2020-2023  润新知