181 karma · joined November 17, 2022
I don't have the exact quote on hand, but in the Mojo Discord, Chris Latner explicitly said he wants no "compiler magic" in Mojo. With that idea in mind, Mojo makes it a lot easier to do optimizations like SIMD vectorization by hand, but you will still have to do it manually. My guess is that many scientists who don't like programming would find it annoying to hand-write those kinds of optimizations. If you want a language that gives you nice, performant code on your first attempt, Julia is always a decent option.
These are the docs for some of Mojo's higher order functions that implement vectorization, parallelization, tiling, loop switching, etc. https://docs.modular.com/mojo/stdlib/algorithm/functional
I do think they are a good idea and relatively easy to use; I'm just not convinced that the non-programmer scientist will like them.
"Over time we expect to open-source core parts of Mojo, such as the standard library."
In the most recent keynote, Chris Latner said the standard library will be open-sourced starting next year. I have never seen anything about the actual rest of the language. I worry that they don't actually plan to open-source all the core parts of Mojo and they're just letting others put words in their mouth to hype up the language.
I'm not sure how they define this because I find conflicting info elsewhere. Our world in data has global cereal production only going up [0]. That data only goes until 2021 so there could have been a decrease in 2022 but then it would probably be wrong to say "recent years".
[0] https://ourworldindata.org/grapher/cereal-production?tab=cha...
https://www.statista.com/statistics/270034/percentage-of-us-...
This is really interesting to me. I've heard discussions about doing this, but is this the first time we're actually seeing it implemented in image software?
Furthermore, while I love Julia the language, I'm disappointed in how it really hasn't taken off in adoption by either academia or industry. The community is small and that becomes a real pain point when it comes to tooling. Using the debugger is an awful experience and the VSCode extension that is recommended way to write Julia is very hit-or-miss. I think it would really benefit from a lot more funding that doesn't actually seem to be coming. It's not a 1-to-1 comparison, but Modular has received 3 times the amount of funding as JuliaHub despite being much younger.
1. Brazil: 3,287,957 sq miles
2. Argentina: 1,073,518 sq miles
3. Peru: 496,225 sq miles
Python is the de facto but it's so slow for anything that can't be well represented as vectorized NumPy operations. There are ways around that like Numba, Jax, Cython, etc. but their use cases are pretty limited, and they don't work well with other Python packages.
There is, of course, C and C++ which are commonly used to speed up Python or as standalone packages. However, C++ is such a complicated beast that writing performant and correct code takes forever. C is much more manageable, but I find that there are not a lot of scientific packages written in pure C. This isn't even touching on the horrendous build system that is CMake.
Fortran is a pretty simple looking language and would probably be the closest to Julia in terms of speed and expressiveness, but the writing is on the wall and Fortran's days are numbered. I am not aware of many new packages being developed using it.
Other than that, there's languages like Rust and Go but those have ecosystems that are so small, they make Julia's ecosystem look like Python's. I really don't want to spend my time as a grad student writing basic numerical libraries from scratch.