I’ve come to Julia after having previously worked within the SciPy ecosystem, so I’d say there are two forks here:
- Some of the stuff that Yuri identified, like the aliasing issues of
sum!is really bad. This is the kind of thing that theSciPyteam really hammered out early on, and you never had to worry about the correctness of the output. - I give the Julia developers a bit of a pass on other stuff, like the issues with
Zygote.jl, which is really beyond “core” Julia. But automatic differentiation is a generically important tool, and Julia should have it.
This leads to a gripe I’ve had since the beginning, which is that by ceding the direction of the ecosystem to the community, you get buggy and redundant packages. As noted elsewhere,ForwardDiff.jlworks for a lot of smaller scale stuff, but is inadequate for the ML stuff that promptedZygote.jl. Right now, we’ve got people developing for both. But would it be better to have everyone work together to either extendForwradDiff.jlto be suitable for ML or should all the efforts be on gettingZygote.jlfixed?
I know there are arguments in favor of having this kind of massive community driven flexible ecosystem, but I really think it ends up creating confusion and disappointment with redundant and/or incomplete packages. A good example of this is interpolation; there have got to be at least a half a dozen different tools for 1D/2D interpolation. This is the sort of stuff thatSciPyresolved, with the main developers slowly adding in “official” routines to the main package over time.