I can chip in that we are developing a Julia based library for Powergrid
dynamics. We intend to loosely couple this to PSA.jl where
possible/appropriate.
Our experience has been absolutely stellar with it. We are building on
DifferentialEquations.jl which already is outclassing everything else
out there for dynamics.
I think the comment on auto-vectorization vs vectored code misses the
point a bit. I have worked extensively with Python numpy/numba code, and
it's all fine as long as your code does things that fit within the numpy
framework. The issue is, as soon as your code doesn't you're either
writing plain C in Python syntax (numba) or you're back to being very
slow. So you're constraining the behaviour of the models you code to fit
the framework. We have definitely had to make modeling decisions based
on the limitations of Python rather than the subject matter.
In order to achieve the required speed in Python we've ended up
metaprogramming Strings together to then compile functions with numba.
That lead to slow start up times, was brittle and just all around
annoying. We ended up not really publishing or even using our library much.
Misc stuff:
+ Julia has a proper type system, making more complex development much
nicer.
+ We can benefit from Automatic Differentiation techniques.
+ Our code is considerably simpler and cleaner than in Python.
+ Performance is great, even though we haven't invested anything in
optimizing it yet.
+ The Library Ecosystem is rapidly developing best in class libraries [1].
- The tooling isn't quite there yet.
- Types + Multiple Dispatch confuses people who are used to objects +
classes.
Best,
Frank
[1] This is why the DiffEq Author thinks that is:
http://www.stochasticlifestyle.com/like-julia-scales-productive-insights-julia-developer/