实际上C++98及以后的大部分改变都是为了把标准库(和其它库)做好(不如说稍微弥补之前做烂的部分),不是为了普通人直接用。
究其原因,C++和C,Rust都受数学的极简风格影响,能用库实现的就绝不添加核心语言特性。
例如,C就没有print语句,一定要核心语言给个varargs然后用库实现printf。printf容易类型错误?那编译器给warning。其实都走到编译器给warning这一步了,核心语言直接支持print工作量也差不多吧...
C好就好在核心语言这么多年真的保持了最小化。C++(和Rust)就是为了用库实现的东西不比其它语言直接给的差太多,反而不停地加核心语言特性,这其实和极简是矛盾的。本来核心语言可以用10的工作量做出90分的string,考虑到用户们可能想自己写string,那么我们在核心语言用100的工作量让你们(和标准库)可以写个60分的string。
go就还是C的风格。哦我理解了现代的系统编程需要string, vector和map,好我语言直接给你。你问语言没有泛型怎么自己实现一个map?不能。下一个问题。
【 在 likely 的大作中提到: 】
: 我觉得C++设计成这个样子就是想提供很多选择,只不过用不好就会比C带来更多问题。C++的主要问题是标准委员会越来越高估普通码农的水平,搞出来一堆普通人用不好的东西,不如扎扎实实把标准库做好,在标准库里尽量减少出错的机会。
--
修改:ilovecpp FROM 58.37.58.*
FROM 58.37.58.*