率先,把本身引见给独身不熟习我技术放的伴侣:

我失去嗅迹独身人 Linux 的 fans ,不管我出席的是对的 Windows 不注意好的觉得。,但我的最任务依然在 WIndows 互联网运用权软件切开,对 Windows 还算熟习。如今我也用错了 Windows 的零碎,但那是独身 FreeBSD 的机具,失去嗅迹 Linux 。

据我的观念是特定节日等用的仪式的。 C++ 相当熟习,包含市场行情。 C++ 最书,像 D&E of C++ 经典著作不止一次。。用 C++ 研究十万行行为准则,细阅过 STL 最的源行为准则,和 ACE / Boost 的一小平衡。

早已讲 C++ 正确地的迷,设想谁说 C++ 不,失去嗅迹,或许你会选择和他争议究竟。,不动的会对大叔嗤之以鼻。

以及一件事据我的观念很要紧:我根本的坠入爱意 C++ 是 15 几年前(1992) 年),过后渐渐地变冷了。,回归 C 的使有兴趣。这边是 2000 年,我又坠入爱意 C++ 。执意说,从爱 C++ 对立面它,依我私人的查明,有过两倍。它不战胜即将到来的有第三次的能够性。,但这是可以解说的。,反抗性的 C++ 这是出于报账的判别。,失去嗅迹一种兴奋。

写这些,不老不老。那是真的。,据我看来骂我 C++ 顺序员,更厌恶老境人和老境人的量 C++ 不,失去嗅迹。论资历,我在它下面 Linus 独身宏大的兑换。,由于他的背上有独身资格老的,卑鄙的的交谈可以是十足的。 🙂


C 是 C++ 子类(是人) C99 这失去嗅迹开端。,用 C 可以写作的行为准则。,C++ 也可以用同卵的的方法写信,过后你可以做得甚至更好。。

这是老手的自以为是的攻击力兵器。。Linus 以很说辞复仇:天然地,你可以用一点专门用语写作坏行为准则。。可是,有些人专门用语,显著地有些人心担负很重的专门用语。。”

没错,我最想说的执意这样地。C++ 这是一种带着决心装填的专门用语。。这对软件设计有很大的使发生。,不注意积年的软件切开完成,很难领会这点。。

从这点停止,把 ASM 和 C 较比成绩 C 与 C++ 彼此较比是不注意意思的。。

下独身查明点是,C++ 比 C 在分给这些东西后来的,这真的是决心担负吗?这是独身很难答复的成绩。。复杂地从 C++ 很难让本身置信认识和乱用是不容易的。,更不用说推理那比我聪明的的人了。,大量的坚苦的任务 C++ 顺序员们。据我的观念是特定节日等用的仪式的。类似 C++ 上进的特点依然纤细的。,用于大量的现实工程中。它们很风趣。,在一定程度上也不常见的无效的。。行为准则可以获得相当高的完成效力,它可以延长编码时期(增加秘密密钥量)。,他们也有很大的成就感。。

好了,让我再次援用 Linus 我本质上的简而言之。字母串/内存支配相对有关。。这失去嗅迹要紧的平衡的。,这不是复杂。。设计最好的真正要紧的平衡是设计。。”

设计!这是燃眉之急。。

设想至于,这是最新的 10 在顺序员的事业中我学到了什么?据我看来,我早已可以设计出比先前甚至更好的行为准则了。。更正确掌握设计的低劣的品尝。认识设计专门用语,熟习操作零碎,对任务互插知的领会等。那简单地天然地事情。,这些都是知的收集。,但不克不及借款容量。

“难解的”,“迎合女朋友”,“设计以图案装饰”,这些要紧吗?要紧的。这在附近软件切开不常见的要紧。。但要紧性失去嗅迹必须做的事的,无法摆脱的于难解的会让你离你越来越远。。当笔者屡次地抽象的事物的个性时,当构成难解的层时,笔者能够早已保持了实际。C++ 发扬光大了 C 相信顺序员的专门用语哲学,让顺序员扩大难解的层,省掉额定消费。他的receive 接收是为POSS提出尽能够多的专门用语器和设计得到或获准停止选择。,一点独身容许您转移额定的机能消融时,你失去嗅迹USI。

这是独身美妙的愿景。:C++ 顺序员怀孕扩大独身使成为一体敬畏的的可重用难解的层。,交谈究竟掌握详细的运用权。同时 CPU 完成挨次是在遍历这样地难解的的步骤中停止的。,它可以以波速(经过难解的层)使铭记。。使用着的这一点:C++ 社区使掉转船头了 STL ,使掉转船头了 Boost 。他们经用的词是:效力、复用。

以及另独身成绩呢?:无能难解的设计典范,或许两年后,你会注意到有些人难解的的使发生失去嗅迹VE。,可是掌握的行为准则都依赖于设计的美丽的女朋友典范。,设想不重写运用权顺序,无法沙化。这依然是同卵的驿站 Linus 语,我不住援用,这是由于我领会这点。,但不克不及更明确地表达。

运用 C++ 顺序员不休加强重用性,不休改写行为准则。设想行为准则段不克不及重写,这次要是由于改写工程量的妥协。。是的,其实,笔者可以运用它 C++ 在各式各样的特点上写得甚至更好,更美丽,更高效的行为准则。两年前,这样地表达不是圆房。,失去嗅迹 C++ 专门用语弄错,两年前,我的容量保密的。。可是由于设计表达需求重写,这说明笔者必须做的事遵照早已零钱的功能模块。,或添加桥接层。

实在,STL 和 Boost 它是球体的末版的顺序员。行为准则大多很高(天然地)。,我对 Boost 保存平衡。我不叙述编辑者互换性和可移植物性或波湾阴谋全速前进。,不外,这的确是个成绩。,可是忍受是不敷的。 C++ 根本类库的报账。

好好使用它 C++ 天然地,你必须做的事好好使用它。 STL ,Boost 笔者也必须负责把眼光投向它。。可以甚至更好地读取源行为准则。合格的 C++ 顺序员必须这样地做。若非, C++ 你要忍受的顺序员 C++ 专门用语设计哲学:C++ 相信了你,你的相信是特定节日等用的仪式的,找出你写的每当事人行为准则的在身后,这些机具做了什么?。

可是,STL 过于大量的了,Boost 每件东西是。我并失去嗅迹在埋怨折磨和时期和精神。。反倒,我在学术它们时丰富了生趣和感谢。。最高年级的专家经过这些高大多的行为准则教给我很多东西。。我惧怕的是,非常友好亲密宏大的行为准则,可能不能够设计它。。两年后来的,他们的设计必须做的事是特定节日等用的仪式的。,两年或及其他。但我险乎可以必定,把它放在更长的时期内,它必然在有些人设计接守找到。这失去嗅迹最好的选择。。到那有朝一日,笔者会选择零钱吗?据我看来 C++ 社区逼上梁山选择妥协。可是,C++ 顺序员的心会丰富疾苦。

C 这样地成绩的选择是差别的。。使用着的效力成绩的根究,C 顺序中最使成为一体撕咬的是功能要求的消费。。C++ 顺序员最风趣的要求是 STD::排序 彻底跳动 C 库说得中肯 qsort 。C 专门用语毛病在被冗余功能要求所消费。。

可是,从一开端 C 您选择告知已收到功能要求的消费,这险乎是最好的的独身。。在指前面提到的事物本钱后来的,设计绝对偏差惹起的效力倒退成绩险乎可以处理。。C 和 C++ 都可以选择重写设计失律的平衡,但这是不大可能的。, C 顺序员很难思索折说得中肯成绩。。同卵的是顶点效力的专门用语。,C 专门用语交谈缺陷,它很合身。 KISS 根本的。

我对这样地成绩的姿势,可再次介绍人 Linus 作为独身集中的驿站。设想你想用更炫耀的的专门用语,C 相对是最坏了的选择。设想你打算真正的优级特点,那就选择有渣滓回收或许好的零碎集成的,而失去嗅迹既缺少C的简明的(sparseness)又缺少C的直线并且不注意要紧手势的高层绑定(high-level bindings to important 手势。”。这是我在过来几年里一向僵持的观念。:C++ 的开展,一定要加出来。 GC 忍受所需特点。

加强一下,我不恨它 C++ 🙂 。 C++ 风扇可以惩戒我,但不要把阶级敌视。


ps. 两年多先前,我在做独身游玩引擎项主语。这样地项主语如今有第三个版本。第独身版本被运用 C++ 获得的,可是不注意用一点已在的类库(包罗 STL)。第二份食物版,我分给了掌握的运用 C++ 优级特点获得的平衡的,只运用 C++ 根本特点获得全体。当年改写的第三个版本,整个换上衣服 C 行为准则了。项主语切开,我可以对我的私人的所有权作出答复 C/C++ 领会步骤。

Leave a Comment

电子邮件地址不会被公开。 必填项已用*标注