手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

为什么使用C [3]

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

  C 里有多少技巧?C 里有多少诀窍?总之,C 有多少复杂之处?

  公平地说,大多数窍门和技巧在最近几年都已被发现了(例如,modern C ),已用在了真实需求中,特别是实现高灵活性和属性类库组件的需求(考虑任何在boost中的组件)。他们确实(在一些程度上说)引导了一些现实问题的完美解决方案。能够这样考虑这件事情:假如您处在这样一种情况下,您得使用窍门来实现一些确实有用的事情;或您不使用窍门实现他,那么其他人就不会从使用他上得到好处。您会选择哪种?我想聪明的人会选择前一种,不管窍门有多难,实现有多麻烦。

  但是任何的争论都不能改变这样的事实:那就是我们值得拥有一种能够在代码中干净地表达我们的想法的语言。以boost.function/boost.bind/boost.tuple为例,variadic templates(可变模板)能够很容易地(通过减少通信线路为原来的十分之一)实现这三个(将来会更多)类库,代码会变得简洁,尽可能地简单。Auto, initializer-list, rvalue-reference, template-aliasing, strong-typed enums, delegating-constructors, constexpr, alignments, inheriting-constructors,等;任何这些C 0X的特性,他们都有一个一起的目标——去除语言中的各种附属复杂性或阻碍

  就像Bjarne Stroustrup说的,显然,C 太复杂;显然,人们有些恐惧他而放弃他。但是“人们也需要相对复杂的语言来处理绝对复杂的问题”。我们不可能减少语言的特性来使语言变得更有力。像是模板这样复杂的特性,或是更复杂的多重继承,这些可能会对您的需求更有用,您只需要很认真、必要地了解他们,这样就不会搬起石头砸到自己的脚。在C 的任何复杂性中,唯一妨碍我们的就是附属复杂性(有人称他为“阻碍”),他不是语言所支持的范例(只支持三个)。这就是我们为什么要加强C 0X的重要原因,因为他的目标是去除C 中长期存在的附属复杂性,使任何的诀窍变得融合(这种东西数量绝对很大;您能够参看有关C 的书籍或是C 根库,您就会明白我在说什么了),这样我们才能清楚、直接地表达我们的想法

  结论

  C 很难,难于正确使用。所以当您决定要用他的时候,一定要小心谨慎,一定要清楚您处在什么位置,您真正想要什么。下面是个简单的导引:我们需要高效吗?假如需要,那么在我们的代码中需要抽象吗(这个问题一定要慎重考虑,因为很难估计使用C 的高水平特性所带来的好处是否超过了正确使用他们的风险;正确的答案取决于您的编程水平训练的有多好,您遵循什么编码标准,连同这种标准加强的有多好,等)?
假如需要,那么就使用C ,否则,我们需要C 类库来减少我们的工作量吗?假如需要,那么就使用C ,但同时要谨记您在做什么——假如您的代码并不真的需要任何梦幻抽象,那就不要勉强使用他们;不要仅仅因为您写的代码是.cpp,您使用了C 编译器,就使用类或是模板

  否则,就使用C ,但是您可能会怀疑为什么不用C 的C编码核心。同样的理由:人们很容易被稀奇古怪的语言特性所迷惑,即使他们真的不知道这些特性对他们是否有帮助——我能够不厌其烦地告诉您,我写过一串类,只是为了找出“这些类到底是什么鬼东西”。所以,假如您能坚持C核心或是带有部分C 的C核心,并且保持事情简单(KISS);或假如您的代码需要从C移植到C ,那么就使用C 吧!但是一定要小心。另一方面,假如您的代码既无需高性能特性,也无需C 类库,因为您要做的事情很简单,以至于您甚至无需像是containers或是strings这样方便的组件;或您认为您的项目中使用C 能给您带来的好处不足以值得您冒险;或只是因为您没有足够能正确使用C 的人员,那么您应该还是坚持用C。

  最主要的:保持事情简单(KISS)(但是要记住这种简单能够通过使用高水平类库来达到);必要的时候(即使是必要,也要少用;遵循好的设计原理,养成好的习惯)使用抽象。

[1] [2] [3]




文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

热点关注
IDC资讯 虚拟主机 域名注册 托管租用 vps主机 智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 价格总览 | 资讯中心 | 友情链接 | 网站地图 | 招贤纳士 | RSS