
C++
其实反感这种说法的不仅是
C++程序员,而是所有编程语言的开发者。当然,并非所有人都反感,通常编程经验越少的人越容易产生这种情绪。精通
C++这个说法早已成了一个笑话,很多人从接触编程的第一天就听说
C++是无法被完全掌握的。这种观点传得多了,几乎成了公认的真理。既然是真理,自然没人敢挑战,否则就会被人嘲笑无知。于是,大家心照不宣地接受了这个说法,继续在这个复杂的语言中摸索。编程时间短的人容易轻视这种观点,就像
小学生争强好胜、喜欢攀比一样。就像传说所言,
C++确实难以完全掌握,这是许多使用了十数年的程序员的共同感受。其复杂性源于多个方面:语法繁多、特性复杂、标准不断更新以及应用领域的广泛性。
C++内容繁多,语法琐碎,细节丰富,用法多样,学习起来颇具挑战性。
C++的更新速度非常快,目前每三年发布一次新版本。对于像
C++14、17、23这样的小版本,只需少量时间就能掌握。然而,遇到像
C++11、20、26这样的大版本时,所需投入的精力几乎相当于学习一门全新的语言。因此,开发者需要根据版本的不同,合理安排学习时间。
C++在众多行业中广泛应用,不同行业使用方式差异巨大。由于行业特性和个人理念的不同,导致用法千差万别。可能张三的用法,李四不仅没见过,甚至闻所未闻。这种现象十分常见。最近在cppcon上看了不少不错的视频,前几天刚看完一个关于RVO的讲解。这个视频详细展示了
C++的复杂性,让人明白完全掌握它几乎是不可能的。演讲者是一位非常幽默风趣的女生,讲解清晰易懂。有时间的话建议看看,肯定能学到不少新知识。RVO,即返回值优化,是
C++编译器常用的一种优化技术。许多开发者对它略知一二,但具体哪些代码会被优化,哪些看似会被优化实则不会,这些问题并不容易解答。她在这个演讲中巧妙地组织了内容,并通过互动环节让观众猜测代码是否触发了RVO,猜对的还能获得奖品。其中一些例子非常具有挑战性,难以轻易判断,这使得整个过程既有趣又富有教育意义。
这些都是细节问题,在C++中类似细节繁多,且这些知识会随C++版本更新及编译器发展持续变化。其他知识的学习可能只需几十分钟,但实际应用却需耗费大量时间。以概念为例,语法并不复杂,但具体功能的定义、概念的数量划分、功能切分以确保高复用性和无歧义性则相当困难。如何将功能合理地分解为多个概念,使其既易于重复使用又不会产生误解,这需要深入思考和实践。以下是标准库中概念功能划分的示意图:
大多数cppcon视频的PPT都可以下载。如果觉得看视频浪费时间,可以直接下载相关的PDF阅读。可以根据标题和内容找到感兴趣的资料,再决定是否观看视频。这样更高效。我对感兴趣的都会去了解,既能学到东西,也能开阔眼界。