“scientific computing” is almost synonymous with arrays.
I would go further and say it’s about 2D arrays (even n-D), i.e. matrices (and tensors). While this (with ndarray), i.e. linear algebra is possible in Rust, it just seems non-ideal there, unless I missed something looking into it, and the same in C, C++, and even Python. Unlike in Julia which is ideal regarding indexing/bounds-checking (and syntax).
https://news.ycombinator.com/item?id=19271953
steveklabnik on Feb 28, 2019 | root | parent | prev | next [–]
You only pay for bounds checks if you use them, same with the overflow stuff, or option types. That’s not in contradiction to this principle.
That’s the main Rust guy, so he should know. But it’s unclear to me if this is even easy, and possible locally as in Julia, as opposed to only disablable at some more granular level (I know e.g. in D it’s globally or at best for “@safe
functions”). And also as with C++, when you build up libraries like ndarray, as with Vector in std in C++, I think the bounds-checking logic may be in library code, so maybe non-trivial if not impossible to disable (I’ve asked, and tried to look up, but not yet had an answer for C++).
C++ doesn’t have the ideal arr[1, 2]
syntax until C++23 (not yet approved as a standard). http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2128r6.pdf
We make the expressions deprecated in C++20 ill-formed while allowing multi-dimensional
subscript expressions in new standard types and user types. We do not propose modifications
to C arrays, so as to leave a cycle before giving new meaning to syntax that was still valid in
C++20.
The syntax for (construction of) at least 2D arrays wasn’t too bad in Rust, while not as natural as in Julia, and the small linear algebra section I found in docs, suggested Rust is immature for it, has a lot of catching-up to do. It’s not the target audience of Rust, and so I doubt that will ever happen. This is all before you bring up the REPL issue Chris brought up, but I think they may have some interactivity (also even C++) by now, e.g. can use Rust in Jupyther. I don’t think it changes the picture.