朱莉娅拥有一个相当庞大的自动微分生态系统,可能现在已经有十几个不同的包涵盖了前向模式(ForwardDiff.jl, ForwardDiff2.jl),反向模式(ReverseDiff.jl, Nabla.jl, AutoGrad.jl)和源到源(Zygote.jl, Yota.jl, Enzyme.jl),以及一些更奇特的东西,如NiLang.jl。在这些包之间,对于不同的语言结构(控制流、变异等)有哪些支持,是否有任何规则来选择给定任务的自动微分呢?我相信在Julia Slack上曾经有一个比较和对比表,但我似乎无法在相关讨论线程或其他可能的地方找到类似于此的内容(1, 2)。