

The 7 Rules for Writing Software That Won’t Die When You Do - bluedevilzn
https://goel.io/7-software-writing-rules/

======
informatimago
One important point that is missed in this article, is for your software to
still run when you die, it has to be written in a programming language that
will still "exist" then.

Is your current C compiler still able to compile K&R C code from the 70s? Then
what makes you think the standard C of 2040 will be able to compile C99 code?

Is your current python 3.3 able to python 2.7 code? Then what makes you think
that python 42.2 will be able to run your python code?

Is your current perl, err, does that still even exist?

On the other hand, if you choose a programming language that is standardized,
and whose standard is not updated every two years, say, ANSI Common Lisp, that
is able to run LISP programs from the sixties in 2015, that you can extend and
make evolve with user code in libraries and your applications, without having
to wait for standard comitees to decide whether it should be added, perhaps in
an incompatible way, then, since this language can run 50 years old programs,
perhaps you could bet it will be able to run your programs in 50 years.

At least, that's my bet.

[http://www.informatimago.com/develop/lisp/com/informatimago/...](http://www.informatimago.com/develop/lisp/com/informatimago/small-
cl-pgms/wang.html)

[http://cliki.net/Getting+Started](http://cliki.net/Getting+Started)

Edit: Cobol and Fortran are disqualified, for they get new standards; I had to
edit a couple of small cobol programs I wrote in the 80s quite a bit to make
them work on OpenCobol on Linux last year... Only LISP is good!

~~~
yeahdude
The ANSI C standards are backwards compatible. K&R C is not one of them. If
you write in C89/C90 it will last as long as any LISP program.

~~~
informatimago
The track record is not encouraging. Perhaps some pair of standard keep
backward compatibility, but I've already read reports of programs that don't
compile anymore with gcc 5.0.

~~~
yeahdude
Is the conflict you read about a bug in the compiler or a bug in the standard?
A bug in the standard is much worse, whereas implementation bugs can be fixed.
Maybe you read about undefined behavior? Implementations are free to change
how they handle it.

