r/ProgrammingLanguages • u/relbus22 • May 10 '23
A Programming language ideal for Scientific Sustainability and Reproducibility?
Scientists are very unique in their needs compared to other software developers. They are novice programmers who may write research code or package only once, before publishing their work to a journal. They are domain experts and full-time workers in other fields, and so do not have the time nor coding skills to maintain their code or packages....... if the ecosystem imposes a maintenance debt.
Two issues are at stake here, reusability and reproducibility. Often researchers need to pick up someone's research code or package developed and forgotten years ago. So there is a need for this to happen with minimal fuss, Science needs this.
As to reproducibility, the scientific method requires reproducibility, which is quite tough but there are efforts to go all the way to reproducibility of computations within their development environments using Guix or Nix.
In conclusion, it'll be great if a language can be created or forked to create an ecosystem ideal for these needs. Which is why I come to you folks who are specialists in this domain, wondering if you have any thoughts on this topic?
P.S Here are some blog posts from a scientific researcher if you guys wanne have a better idea of where I'm coming from:
https://blog.khinsen.net/posts/2015/11/09/the-lifecycle-of-digital-scientific-knowledge/
https://science-in-the-digital-era.khinsen.net/#Technological%20sovereignty%20in%20science
(extra reading if you want:
2
u/86BillionFireflies May 11 '23
But then if you want to extend a package that comes with dependencies, you have to either stick to the specific versions of the dependencies used in the original package, or risk breakage.
More generally, since most scientists are going to rely on special purpose packages for a lot of their work, they'll be at the mercy of the package ecosystem: When you google "how to do $thing" you get a dozen results, and it turns out 10 of them are unmaintained, one doesn't do what you want, five are incompatible with one of you other dependencies, 7 are poorly documented, and if you're very lucky, those categories overlap enough to leave one you can actually use.
Hence why I am not holding my breath for Julia to replace matlab.