programming-languages - 泄漏抽象的含义?

标签 programming-languages functional-programming memory-leaks abstraction leaky-abstraction

术语“泄漏抽象”是什么意思? (请举例说明。我经常很难理解纯粹的理论。)

最佳答案

这是一个meatspace示例:

汽车对驾驶员有抽象。最纯粹的形式是有方向盘、加速器和制动器。这种抽象隐藏了引擎盖下的许多细节:发动机、凸轮、正时皮带、 Spark 塞、散热器等。

这种抽象的巧妙之处在于,我们可以用改进的部分替换部分实现,而无需重新培训用户。假设我们用电子点火装置替换分电器盖,并用可变凸轮替换固定凸轮。这些变化提高了性能,但用户仍然用方向盘转向并使用踏板启动和停止。

这实际上是相当了不起的......一个 16 岁或 80 岁的人可以操作这台复杂的机器,而无需真正了解它的内部工作原理!

但是有泄漏。传动装置有小泄漏。在自动变速箱中,您可以感觉到汽车在换档时暂时失去动力,而在 CVT 中,您会感觉到扭矩一直平稳上升。

还有更大的泄漏。如果发动机转速太快,可能会对其造成损坏。如果发动机缸体过冷,汽车可能无法启动或性能不佳。如果您同时打开 radio 、车头灯和空调,您会发现油耗会下降。

关于programming-languages - 泄漏抽象的含义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3883006/

相关文章:

c++ - 您更喜欢哪种方式发送参数?

language-agnostic - 有没有内置垃圾收集的编译语言?

javascript - 如何使用 React 功能 Hook 在异步操作后获取更改的状态

c++ - 可以从进程核心访问释放的内存段吗?

memory-leaks - 通知程序潜在的内存泄漏

ruby - Traits vs. Interfaces vs. Mixins?

c - 在 C 中表示大数?

vector - Clojure - 合并两个不同大小向量的向量

functional-programming - 使用 Hindley Milner 类型推断的 SML 中类型定义的增长

iOS内存泄漏与 Nib