Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Design tips for a program to be run in 25 years [closed]

If creating an application (that does mostly data processing) that needs to be run now and maybe (maybe not) 10 or 25 years later, what design tips are out there for such applications?

The general rules apply: rely on open source software and proven platforms and failsafe data formats.

The language must be a high-level language for readability reasons (maybe the only option will be re-writing the application in 15 years by someone who has little knowledge of the original code).

I'd go for UNIX(Linux)+Python+YAML/JSON(/CSV/plaintext), any tips for this selection or an alternative toolset? Scheme/lisp has been around for ages and is really hard to screw up the language basics as well, given that everything would be self-contained.

EDIT: please don't forget tips about actual design and code, like 2038 year issue!

like image 684
Martin Paljak Avatar asked Aug 18 '11 06:08

Martin Paljak


2 Answers

Actually, the #1 requirement would be "use a popular language with an International Standards Organization formal spec". This is far more important than any of the other things you mention. ("Open Source"? Please... There are thousands of public domain programs from the 80s and 90s that it would be nigh-impossible to run today.)

For example, if you code rigidly to the C99 or C++98 or C++03 or even C++0x specification, the odds are roughly 99.9999% that a compiler will exist for your platform 10, 20, and 50 years from now that can handle your code with zero changes. This is, arguably, the most useful thing about a formal spec for a popular language.

Coding rigidly to such a spec may not be easy, since many non-trivial programs (e.g. anything with a GUI) cannot be written 100% portably.

But that is still where I would start. Implement as much as you can in 100% standard-compliant code, then isolate the rest (like the GUI) in platform-dependent modules. Minimize the size of the latter, and you will minimize the work your successors have to perform.

Free 3rd-party tools -- whether something like Boost or something like Python -- are great answers to some questions, but not this one.

like image 95
Nemo Avatar answered Oct 14 '22 07:10

Nemo


considering that you'll be providing a well documented source code, they could always optimize the code if any new technology comes up that's compatible with your current code. Else, they'l just have to port it themselves.

like image 24
Bahamut Avatar answered Oct 14 '22 07:10

Bahamut