作者Andrew Binstock
单就这个原因,在系统级别代码中C仍然是非常棒的选择:速度快,可移植,易读易理解.然而对于重点多在开发效率的应用程序,显然C++会继续统治着本地语言并且很可能会扩张它的足迹.
概述:作者论述了C语言仍然屹立不倒,长久不衰的原因:过去C语言在性能和可移植上面有巨大优势,但随着时间的流逝其他语言(C++等)在性能和可移植上与C的差距越来越小.但为什么C还很火.作者认为是因为C语言的简洁性,使它在系统级别上仍然无可替代.但是对于应用程序开发还是选择其他语言较好,因为开发效率更重要.
偏好C而非C++的传统的理由正在慢慢的消逝.还有什么好的理由仍然使用C吗?
1. 性能. 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++会继续统治着本地语言并且很可能会扩张它的足迹.
作者:hitlion2008 发表于2013-3-17 23:16:38 原文链接
阅读:37 评论:0 查看评论