Fifnmar edited 4 年,8 月前
以前,我一直坚持使用 C 的输出和 C++ 的输入。但最近我的想法产生了改变。
随着对 C++ 的使用和了解一点点加深,我开始理解它的一些设计哲学。而且,我发现大部分情况下 ostream
还是很好用的。再说,如果我连 map
都可以忍受,对 ostream
也能加以理解。
ostream
有一些独特的功能,包括和 <algorithm>
库相搭配,而这些是我没有深入了解过的。
一点题外话,C++ 像一罐烈酒,一开始喝又辣又刺,但慢慢回味才能理解其中的深意。
渐渐地,我放弃了「C++ 子集主义」的思想——不是说一定要只使用它的一小部分,而是说要理解各种功能是为什么而存在的。另一方面,很多人说 C++ 太难太臃肿、功能越搞越复杂,说这是不好的,我也渐渐地不赞同了。C++ 所「臃肿」的地方,正是软件工程各个领域交叉应用产生的结果。在学习和了解它的过程中,其实我们学习的还有不少其它领域的知识。或者更准确地说,我们是在学习整个计算机体系的过程中一点点明白 C++ 的用意的。C++ 的复杂,主要不是因为设计上的缺陷,而是因为计算机知识体系的庞大和工程应用上的复杂。让我们来看看被誉为「简单」的 Java,Core Java 有多厚?再学学 JVM,再学学 Spring,扪心自问,学的比 C++ 少吗?我觉得,如果以「精通」的标准对比 Java「能写点东西」的标准,那太不公平了。但也的确,初学者写的屎,放 C++ 里的话会让程序原地爆炸,而放 Java 里的话可能只是堆在一坨屎山上。
我也不得不承认,C++ 太啰嗦了,而且历史包袱的确是一大问题。在这一点上,我非常看好 Rust。我认为等它稳定以后,辅以优秀的入门教材,它一定可以成为非常棒的新时代语言——在此就不赘述了。