gpt4 book ai didi

julia - 是什么让 Julia 可组合?

转载 作者:行者123 更新时间:2023-12-03 21:42:56 26 4
gpt4 key购买 nike

我在很多地方都提到过 Julia 是“可组合的”。我知道 word itself means :

Composability is a system design principle that deals with the inter-relationships of components. A highly composable system provides components that can be selected and assembled in various combinations to satisfy specific user requirements.


但我很好奇 Julia 的具体组件是什么使其可组合。是否能够用我自己的实现覆盖基本功能?

最佳答案

我想我会冒险回答,虽然我的理解可能不比你的更完整!
据我了解(在很大程度上来自 Stefan 的“多次调度的不合理有效性”JuliaCon 谈话,由 Oscar 在评论中链接),我会说部分是:

  • 正如您所说,该能力用您自己的实现覆盖基本功能[并且,至关重要的是,由于多次分派(dispatch),它可以在适当的时候“正常工作”(被分派(dispatch)到)] ...因为这意味着如果您制作自定义类型并且定义该类型的所有基本/原始操作(如 https://docs.julialang.org/en/v1/manual/interfaces/ 中的 +-*/ 等用于数字类型,或 getindexsetindex! 等用于类似数组的类型等) ,那么基于这些基础构建的任何更复杂的程序也将与您的新自定义类型“正常工作”。这反过来意味着您的自定义类型也可以与其他人的包一起使用(AKA compose),而无需(例如)显式兼容性垫片,只要人们没有过度约束他们的函数参数类型(顺便说一下,为什么过度约束函数参数类型是 Julia antipattern )
  • 在 1) 之后,事实上有这么多 Base方法也只是简单的 Julia,因此只要定义了正确的基本操作,也可以使用您的新自定义类型
  • 事实上 Julia 的基本类型和方法通常足够高效和方便,在许多情况下不需要做任何自定义的事情,所以你可以将所有操作的 block 放在一起,例如,普通的 Julia 数组或元组等。最后一个与 Python 这样的语言相比,这一点可能是最值得注意的,例如,生态系统的每个足够大的子集(numpy、tensorflow 等)都有自己的(例如)数组的重新实现,为了更好的性能,这些最终都实现了完全使用其他语言(C++,用于 numpy 和 TF),因此可能不会相互组合。
  • 关于julia - 是什么让 Julia 可组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66370179/

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