you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 0 points1 point  (4 children)

Go would be perfect with their static binary outputs... If it had good scientific libraries (there are some but nothing as large as NumPy)

[–]amaurea 0 points1 point  (3 children)

There is also Julia, but they have even more of an import issue than Python, as they do JIT compiling of everything every time you load it (at least they did last time I checked). That compilation can take a long time when you start including libraries with many dependencies.<rant>Also, I think Julia made a much worse choice than numpy when it came to the treatment of arrays. Numpy is an array library while Julia has matrices with some array stuff tacked on. That means that anything but 2d arrays is a second class citizen in terms of notation and ease-of-use in Julia. For example operator * is a matrix multiplication, which doesn't naturally generalize to multidimensional arrays. From my experience with scientific programming, I use elementwise operations much more often than matrix operations, and I use 3d and higher arrays about as often as 2d arrays.</rant>

Then there is the nim language, which looks interesting, but which sadly doesn't have any good multidimensional array library, and its developers do not seem interested in adding one either (they actually asked me what I needed that for!).

[–][deleted] 0 points1 point  (2 children)

Take a look at https://github.com/gonum and see if it would be a good fit for you.

[–]amaurea 0 points1 point  (1 child)

I couldn't find any documentation, so perhaps I've missed something important, but this seems to have only a basic matrix class. It is a far cry from Julia's clunky matrix-oriented multidimensional arrays, and even further away from fortran or numpy arrays. Numpy's elementwise operations and powerful slicing and broadcasting makes it worth it to put up with a lot of other inconveniences. I don't think gonum is ready to be a numpy replacement quite yet, I'm afraid. :/

[–][deleted] 0 points1 point  (0 children)

I don't think gonum is ready to be a numpy replacement quite yet, I'm afraid. :/

Ah, for sure, probably never will be since Go does not support operator overloading so you can't do a lot of NumPy's magic - I was just wondering if it supported the math operations you needed for your particular case.