GeruzoniAnsasu
2021-07-15 20:52:39 +08:00
更友好,开发速度更快 是可以
但是 zero-cost abstraction 怎么办?明明这才是 c++的立足之本
虽说零开销本身肯定是过于理想化了,但直到今天世界上能有多少语言能做到写出一行代码你能确切估计开销,而且你有信心开销只会来自可控的自己产生的代码中的呢?
另外“更友好的 c++” 我不知道这些吹捧者是怎么想的,rust 想解决的 c++中最大的问题(对象生命周期)在今天 c++基本已经自行解决了,两个差不多复杂的怪物我至今没看到哪里能解释到底所谓的“更友好”从何体现。从 c 和汇编学上来的 c++我基本能搞清楚运行时都会发生什么,虚表、构造函数、空间分配、ABI,这些东西在汇编上的反映写 c++的都心里有数。尽管 c++加入了非常多的编译期和语言特性,但运行时或者说成品机器码一直没怎么变(换了一套 ABI 但抽象的实现方式没变),我可以一边写抽象的容器模板一边考虑 CPU 缓存友好性,甚至能用 constraint 去约束这个容器的空间分配策略是缓存友好的。(比如要求空间连续,即要求实现随机迭代器这种方式)
可以说 c++虽然从复杂的怪物正在变成复杂的缝合怪物,但它逼近问题解决方案的“精神”其实没怎么变,只是绝大多数学过 c++的人还体会不到或者不需要这种求解方式而已。