gpt4 book ai didi

c++ - Bjarne Stroustrup 访谈——抽象和手工代码

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:59:40 28 4
gpt4 key购买 nike

我读过 interview与 Bjarne Stroustrup 一起探讨 C++ 及其设计。我对他在那里使用的术语感到困惑,所以我希望能澄清一些这样的时刻。

I documented my design aims and the constraints on the design in my book “The Design and Implementation of C++” and in my two History of Programming Languages conference papers, but briefly, I aim for

  • zero overhead compared to hand-crafted code when using abstractions,
  • a machine model very similar to that of C,
  • an extremely flexible set of abstraction mechanism, and
  • static type safety.
  1. 在这种情况下,“手工编写的代码”是什么意思?.. Stroustrup意味着一些手工制作的工具,用于抽象概念程序员可以创造吗?
  2. 在这种情况下,“机器模型”是什么意思?一种语言与硬件交互的方式?

我看了他提到的那本书(我相信这实际上是“C++ 的设计和进化”),但我仍然不太确定。这两个术语也没有很好地用谷歌搜索。

最佳答案

“机器模型”是指计算机在语言中表现自己的方式。因此,例如,C 和 C++ 以或多或少相同的方式处理字节、内存位置、指针、整数类型。

这里的“手工制作”是指不使用 C++ 提供的抽象,而是用 C 或汇编(或 C++,只是不包括该抽象)高效编写的等效代码。这是一个“目标”,而不是一个“约束”——C++ 并没有在所有情况下都精确地实现它。

举个例子,vector<int>并不总能达到与使用 malloc 编写的类似可调整大小数组完全相同的性能和 free ,因为该代码可以(并且自然会)使用 realloc必要时调整存储大小。 realloc不会经常为您节省任何时间,但是当它这样做时,它会节省一大笔钱。 vector不能那样做,因为分配器接口(interface)没有等同于 realloc 的东西,因此引入了一个小的开销。但是vector具有大致相同的性能,几乎所有时间,因此几乎达到了零开销的目标。

再举一个例子:在 Release模式下使用一个像样的 C++ 编译器,编写 myvector_of_int[3]与编写 my_int_pointer[3] 相比,真正的零开销.与访问指针类型的局部变量 ( myvector_of_int ) 相比,为什么访问局部变量的数据成员(存储在 my_int_pointer 中的数据指针)没有开销可能不是很明显,但它不需要任何成本额外的。

关于c++ - Bjarne Stroustrup 访谈——抽象和手工代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20134585/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com