大大多数人都以为 C++ 是相当庞杂的编程言语,可究竟有多庞杂呢?我经过完好进修一个编程言语所需求把握的“观点”数对此实行量化。
“观点” 在我的定义中包括大的分类,如类、操作符和更细粒度的 if-else 语句和 while 轮回等等。分歧的观点其庞杂度的差异十分大,因而观点数只能作为一个大略权衡言语的庞杂性的目标,但是我却感到很风趣。
我选择 C++,CoffeeScript 和 Ruby 作为比较的工具。CoffeeScript 和 Ruby 是静态类型言语,所以他们和 C++ 是有很大的纷歧样的。可是他们都是多范型(multi-paradigm)的通用型言语,支撑面向工具,函数,进程和泛型编程。所以这篇文章比照的是 C++ 和静态类型言语。
假设能和 F#,Scala 等静态类型言语一同比较会更好,可是我不熟习他们,所以就不委曲了。
起首我们来看看 CoffeeScript:
CoffeeScript 包括 68 个观点,分为 8 组。
留意我把元编程作为一个观点,由于它首要基于可履行类体的观点之上。
很明显,Ruby 愈加庞杂,有 96 个观点,分11组。比 CoffeeScript 更庞杂的类模子,还包含常量、块和操作符重载。
最初是 C++:
C++ 有 189 个观点 11 个分组,是 Ruby 的 2 倍,是CoffeeScript 的 3 倍。
C++里的某些观点(比方定名剖析)由于有非常多奇妙的规矩,所以愈加庞杂。并且由于有太多分歧的范围,C++里的称号观点也比其它言语更庞杂。比拟之下,在静态言语里,简直一切工具都是常量或许变量(包含类名和函数名)。另有一点,我成心地疏忽了“编译”和“链接”,由于CoffeeScript和Ruby里并没有这些功用。
从上图可以看出,C++庞杂是有非常多缘由的,此中之一就是静态类型系统(static type
system),另外一方面是由于模板(template),另有就是定名系统(name system)和庞杂的类模子(complex class
model)。底层的驱动一定是功能和类型平安的。
上图还缺少哪些信息?
我没提到顺序员在操练中需求把握几多技能,比方:
这一点在从入门到通晓时更加分明。
我置信在这一点C++异样是最庞杂的。比方像《 C++ Coding Standards 》如许的书:《101 Rules》、《
Guidelines 》和《Best Practices》和《 Effective
C++ 》等等。这些书固然曾经触及非常多内容,可是旨在处理平常问题,并没有思索到庞杂的运用。C++绝比照这些书里说的要愈加胸无点墨!
异样,其它编程言语也有最好典范和习语需求进修,但我感到大部分言语的会比C++少得很多。
重点是甚么?
我并非为了埋怨C++究竟是何等宏大和庞杂。关于硬件、功能限制分明的大型项目,综合思索Tools、库和开发者方面的要素,没有哪一种言语可以替代C++。
可是,你需求要留意到C++编程里哪些是必需了解的,这一点很主要,由于这深深影响到课程讲授和作为项目言语的选择。
本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译任务按照 CC 协议,假如我们的任务有进犯到您的权益,请实时联络我们。2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务