当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:56:00  来源:本站整理

<b>为什么利用C++</b>[VC/C++编程]

赞助商链接



  本文“<b>为什么利用C++</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

问题

为什么利用C++?在你皱眉预备关掉这个网页之前,试着答复这样一个简单的问题.

答案是效率,是吗?每个人都知道答案.但是,我们应当以更专业的角度来谈论一种编程语言或是与之相关的事情.那么,让我再问你一个问题:效率能否是人们挑选利用C++的唯一来由,为什么他们不用C呢?C的效率公认比C++高(当然,我知道,现已证明在某种程度上说,C并不比C++高效,但请不要在此挑错,因为即便他们是等效的,问题仍旧存在).

神话

我知道你大概会说,这是一种“择优挑选”,因为毕竟C++就是计划成了C的优化,是C的扩大,大概它没有想象中的那么高效,但同时它却有很多梦幻的高水平的特点.那么问题就归结为“开辟者真的需求这些梦幻特点吗?”我的意思是,毕竟我们都据说过KISS(Keep It Simple,Stupid!保持简单)和stuff(质料),我们也都听过这种说法——与C++相比,C更KISS,所以我们应当挑选C.这样无停止的争辩使得C和C++之间的对比变成了一个神话(大概是一片混乱).令人惊奇的是,仿佛很多人偏向于C,而来由是C++太难精确利用了.乃至是Linus也这么想.

这种现象产生的真正严重的影响是,差遣更多的人在C与C++之间衡量利弊的时刻,他们挑选了C;一旦他们开始利用C,他们很快就会感到满意和舒服,就是所说的“令人称心”的体验.这样,当争辩产生的时刻,他们就会站出来说与C++相比,C是更好的挑选.而实际上,他们都没有真正试着利用过C++,大概他们根本不是充足好的C++程序员.而真实的答案,常常开始与“它取决于”.

那么,我说过“它取决于”,取决于什么?明显,在一些范畴挑选C比C++更好.比方,设备驱动程序的开辟普通就不需求OOP/GP(面向对象程序计划/概念编程)技术.它只需求简单的数据操作;最重要的是,程序员能精确的知道系统若何工作,以及他们该做什么工作.再考虑OS(操作系统)的开辟,我自己历来没有参与过任何OS的开辟,但是读过大量OS代码(大部份是Unix),我感受很多OS重要部份的开辟也都不需求OOP/GP技术.

但是,这就意味着,在全部夸大效率的范畴,C都比C++好吗?实际上不是.

答案

让我们具体问题具体解析

首先,当人们关心效率的时刻,实际上就关心两类效率——时间效率(比方:OS,运行时间,及时软件,高要求系统)和空间效率(比方:全部嵌入式系统).但是,这种分类并不能真正帮我们决意应当挑选C还是C++,因为C和C++在时间和空间上都是非常高效的.真正影响我们挑选哪类语言(当然是在C和C++之间)的是商业逻辑(这里的“商业”并非指“企业利用商业”).比方,是不是利用OOP/GP来表达逻辑更好,大概是不是除了考虑数据和程序还应当考虑保持软件美好.

从这点上来说,我们可以模糊地把利用分为两类(当然前提是我们只关心C/C++,不关心java/C#/ruby/erlang等):低水平利用和高水平利用.低水平利用的意思就是,在这里并不需求那些梦幻抽象如OB(基于对象)/OOP和GP;高水平的意思当然就是需求了.明显,在全部需求C/C++的范畴(由于它们的高效性)里,有大量“高水平”利用(参看在Bjarne Stroustrup主页上列出的),在这些范畴,C++就会更有效.

不过,换个角度想想,即便在这些范畴,程序员在他们的代码中不利用那些高水平的抽象,还是有他们应当利用C++的来由.为什么呢?因为你的代码不利用类和模板并不意味着不利用类库.考虑全部便捷的C++类库工具(行将有校准扩大tr1/tr2)的实用性,我认为在这些情形下,有非常充分的来由挑选C++——编码的时刻你可以仍旧利用C的情势(以任何你想要的方法来保持KISS).同时,你还可以利用强盛的C++类库(比方,STL尺度模板库,tr1/tr2组件等).终究,就会发现这件大概会被很多人忽视的事情——有时KISS依靠抽象.我想,Matthew Wilson在他的新书“Extended STL,Vol1”的序言中,极端透彻地阐明了这个概念.书中提到了两段代码,辨别用C和C++编写:
  以上是“<b>为什么利用C++</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .