Dear earth science community,
I am seeking a language to modernize a large Fortran project that works with geospatial NetCDF files. The requirements for this language include:
- A rock-solid NetCDF library (we do not want to reinvent the wheel).
- Excellent support for vectors and matrices (e.g. via operator overloading or something similar).
- Native performance is needed (compiled or JIT-compiled).
- Must be open-source.
- Ideally, simple bindings with Fortran (not a strict requirement).
Python
+numpy
isn't really an option because of customized number-crunching with native performance.
Even if numpy
is implemented in C, the project includes custom algorithms that operate on matrices, and we do not want to write those in C.
I know that Python could be optimized by calling into C or Fortran, but I just don't think that such optimization is going to happen with our team. Therefore, I am seeking a language that is "fast by default". Julia
seems to deliver much better on this "fast by default" promise, whereas Python is more like "fast if you have the right optimizations in place".
Matlab
is a non-starter because of its proprietary license.
C
is a non-starter because it does almost nothing to "modernize" a Fortran codebase.
Go
is probably not sufficiently well-established for scientific computing?
Julia
could be a promising option because it combines the ease of Python with native performance.
Kotlin
might be interesting because it combines the strength of the JVM with the possibility to compile to native code.
Swift
would be a great language, but I am not sure whether it is sufficiently mature for my targeted domain.
C++20
and Rust
are additional options that might be interesting, but I fear the complexity of those languages (remember that this is for earth scientists, not computer scientists).
Which options would you prefer for a gradual Fortran replacement with NetCDF files?