为什么仍还用C编码?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/08 20:12:35
为什么仍还用C编码?

为什么仍还用C编码?
为什么仍还用C编码?

为什么仍还用C编码?
偏好C而非C++的传统的理由正在慢慢的消逝.还有什么好的理由仍然使用C吗? 一个Dr Dobb's的长期读者最近问我一个问题:为什么人们还要用C去编码.这个主题最近出现在发布在我们网站上的一些评论中,更早些时候也出现在与一些特别是来自Microsoft的业界人物的对话中.在C++的早期时候,有很多理由根据需求来选择C还是C++;但是因为C++已经进化了,许多传统的有区别的C的特性已经变得不那么有优势了.因为这些优点当比较二种语言时总是首先出现,我们来审视一下:\x0d1. 性能. C++过去总是比起C慢很多.但是在许多主流平台上,在今天这区别已经很小了.例如,Alioth上的计算机标准检查程序显示在32位Linux上C++运行一系列测试比C要慢27%.其他调查显示这种区别略高或略低.但是在大多数情况下,C++是除以外最快的语言.它通常要比JVM和.NET上的语言快多了.所以尽管C在标准测试上仍然有优势,在大多数应用都能接受Java的性能情况下(比如,任何企业级应用或者面向客户端的软件), 这种区别并不严重.2.普遍性.在C仍然作为首选语言的嵌入式世界里,偏爱C是因为每一个硬件厂商都提供C语言编译器.过去C++在嵌入式世界里并不强势.然后今天大多数提供编程工具的组件厂商都会提供一个C++编译器.(PIC 微控制器总是一个例外).这是一个在退化的优势.3. 可移植性.C++曾经很难移植(C89标准出现以前的C也一样难移植).然而今天的编译器已经足够地实现了C++语言核心保证软件可以在需要的情况下做很小的调整就能重新编译,前提是代码能够像Brian Kernighan曾经说的在语言的中间写.库的可移植性是一个更多麻烦的因素,但是C语言库也存在同样的问题.对C和C++二个语言,各种编译器对标准的支持程度差距非常大,所以使用没有完全支持的特性(C99,C11和C++11)风险是一样的.那就是说,C89可能是世界上最具移槙性的代码了.(也是基于这个原因,当移槙性是绝对顾虑时总是选择C语言.例如,Lua团队基于性能和这个原因而选择C).凭心而论,对于性能,普遍性和可移植性C比C++有优势,但是这些优势正在渐渐的消逝.从这看,C++社区做的很好,通过它的使用者解决了曾经是采用的严重障碍.问题是:这些缩减的优势补偿了C++的好处了吗?包括面向对象,异常处理,更好的类型管理,模板,更加丰富的标准库等.没有了这些益处,C的每个项目都感觉像在用剪刀在修剪草坪.那些特性确实可以帮你实现代码,但是它们是有复杂性代价的,这点上C跟C++还是有巨大的不同.C是少数几个小巧且足够简洁到可以整个怀抱下的编程语言之一.完全知道语言的来胧去脉以及对标准库了解到不用查看API手册就能用的很好是完全可能的.我相信这在其他语言中是不大可能的,起码确信在C++中不行. 这种小巧是语言的一个魅力.你可以快速的学习它也可以快速的达到卓有成效.别外一个少有提及的特性:最高的清晰度提升了这种简洁性.我的意思 是除了句法外的语义上的清晰度.从语义上讲,在C中仅有一些有限的方法做事.因此,当你阅读任何其他人的代码时,能确切的知道他们在做什么.对比在C++中,有太多不同的方法能达到同样的效果,这是程序所喜爱的灵活性.因为这个层面上的C的清晰性,对于实现复杂的架构来说C是卓越的语言.基于这个原因,JRockit JVM(现在是Oracle的首要JVM)的原作者选择了C.几年前的一次对话中,他们阐述了选择了C而非C++的观点,他们可以让开者更快速的上手.并且当深入代码之中时,他们可以比在C++更容易理解他们看到的代码.单就这个原因,在系统级别代码中C仍然是非常棒的选择:速度快,可移植,易读易理解.然而对于重点多在开发效率的应用程序,显然C++会继续统治着本地语言并且很可能会扩张它的足迹.