The difference is that in python or matlab, you are limited to explicitly provided abstractions from libraries (written in C, mostly), or slow to a crawl. In julia, an explicit loop is just as fast as in C, and a user-written kernel (the
process part you allude to) is just as fast as a library provided one.
Sometimes, an explicit loop, e.g. a
while-loop, maybe even containing
@goto, is really the correct level of abstraction for thinking about an algorithm. Sometimes, a user-defined function that is called often is the correct level of abstraction. Both are important tools that are missing in python and matlab, if you care about speed.
If you never need this, e.g. because all your time is spent doing GEMM in libraries, then you don’t gain anything over python+numpy.
But julia is much, much more convenient than writing your inner loops in C and using
python.h; it is imho even more convenient than
cython. I don’t know how convenient the matlab-C interface is, so I can’t say how it compares.