3 ms·
I like Techdragon's idea "I’d write it in math" and Onion2k's "I'd build a mechanical system." A lot of it depends on the complexity of the software and the co
by irchans 8y ago
I like Techdragon's idea "I’d write it in math" and Onion2k's "I'd build a mechanical system."
A lot of it depends on the complexity of the software and the complexity of the interface to the user(s). If the software merely needs to do something simple like accounting, I think a mechanical system could be made, especially one that processes punch cards (see Vaylian's answer). Mechanical systems usually require some maintenance, but if you made many copies of the mechanical system and many copies of the documentation, then you could probably still run it in 100 years on one of the mechanical computers.
If the software is an unchanging, complex, but it has a simple interface (like terminal standard input/output ascii), then consider:
1) writing the software in an old language like C or Lisp,
2) compiling the software into a Turing machine, and
3) writing a program in Fortran, C, or Lisp that can run the Turing machine quickly. (In particular the implementation should make memory access a constant time operation.)
If the interface is complex, like the internet, or graphical, then you are pretty much hosed. Somebody is going to have to maintain the interface, but you could still use the Turing Machine idea to implement the logic that is not tied to the interface. As Patio11 said, your #1 problem is "making an organization which persists for 100 years." I suggest finding an organization that has lasted 100 years and making one person responsible for the software with the idea that he/she will maintain the software/hardware for at least 40 years and then pass along the responsibility to someone else. You would need some good contracts to make this happen, but it is not too unusual for a teacher to teach in the same high school for 40 years, so you could probably design the contracts accordingly.
You should probably write the documentation in English and put it on acid free paper.
The bottom lines are:
1) Compile into a very very simple language,
2) Implement on very simple hardware (Onion2k), and
3) Set up a human organization (Patio11) as simple as possible with good contracts that will last 100 years.