4 ms·
I've given this some brief thought and looking at other software and hardware being used in scientific research it is clear this isn't limited to Python, at all
by stinos 8y ago
I've given this some brief thought and looking at other software and hardware being used in scientific research it is clear this isn't limited to Python, at all. In other words: no matter what you use, it looks like at some point you're going to have to change something (or run the entire thing in a virtualized environment which will last way longer but has it's own problems). What exactly needs changing, and how much work it is, depends on the implementation originally selected and on the amount of time spent trying to avoid such change, but it looks like this is nearly unavoidable. From the top of my head these are problems we had to deal with in the past year or so:
- Matlab changes some behaviour here and there from time to time, deprecates functionality, ...
- both C and C++ have gone through quite some changes as well, and so have the compilers; so it's not exactly uncommon to find 20 year old code written without this in mind and making use of some specifics which now are unavailable
- assembly code written for specific DSP hardware can quickly turn obsolete: hardware unavailable anymore, build tools not running on recent OS etc
- not an uncommon problem in psychological research etc: parallel ports are disappearing
Problems with hardware/compiler/platform-specifics changing can usually be avoided in software with the proper abstractions (quite the work though, sometimes) but it's kinda hard to foresee what the evolution of a language/library is going to be in 10 or 20 years, let alone work around that. Or if you're going the other way and don't want to update to newer versions but are looking to recreate environments/dependencies: what is going to happen to the tools you are using to recreate environments in 20 years, what if they get breaking changes? And to the sources used to recreate the environment?
tldr; not sure if there really is a complete failsafe solution for this which spans multiple decades
Also looking just at the end results of science: suppose you need to reproduce a result of a dataset in 20 years, maybe there's a point where trying to make everything future-proof now is more work than starting over from scratch in 20 years (just the analysis, supposing the data is still there)? For example at some point there was C but not yet SciPy. I can certainly imagine cases where writing certain analysis again from scratch again now in SciPy would be less work than trying to get the ancient C working again.
- poster123 8y ago"- both C and C++ have gone through quite some changes as well, and so have the compilers; so it's not exactly uncommon to find 20 year old code written without this in mind and making use of some specifics which now are unavailable" C, C++, and Fortran have ISO standards, and if you write standard-conforming code, the committees that revise standards are very careful not to break things. It's not like Python where the BDFL changes the syntax of the print statement.