Take the 2-minute tour ×

What languages are more suited for long term projects (will have to be recompiled in 20 years, with the minimum amount of changes in the source code), in terms of minimal amount of rewriting what's already written due to changing of the versions of the language & changing of compilers & OSs (i.e. backward compatibility), as far as we can judge from past references?

(we can't tell what the future will bring, so no predictions here - just base your answer on so far known ones)

IMHO, yes, *nix oriented ones will have some advantage in here.

For example,
Perl (good, AFAIK), vs.
Python (bad with it's v2.5 -> v3.x rather large backward compatibility breakup - it has also been said that back compatibility will not be kept in future versions).

If you could explain your arguments as to why did you choose a particular language, along with what were the larger changes in it.

share|improve this question

closed as primarily opinion-based by MichaelT, GlenH7, gnat, Kilian Foth, thorsten müller Jan 14 at 15:50


add comment

4 Answers

I would have to say without a doubt that if you go with a compiled language which has a steering committee you are going to have the longest longevity. Take a look at C for example except for the very earliest C code you can still compile your code and have it work.

Another issue to take a look at is what OS features and third party libraries/components you depend on. For example you could have written some very portable code in the late 80's that depends on certain features of Netware and no matter what you do today you would have to revisit that code.

share|improve this answer
+1 for C -- that was going to be answer also. –  tcrosley Oct 9 '10 at 19:31
+1 for C also... –  user281377 Nov 24 '10 at 22:28
add comment

This is why companies go with IBM and MVS. Programs on the MVS system are compiled into "TEXT" decks (object files) and those text decks are guaranteed to run on all of their hardware that supports MVS. IBM supports 360 version, from the 60's and 70's, text decks today on their latest hardware. All that is required is to link to the apprpriate libraries and those libraries are available.
I am not a lover of IBM, but I find this guarantee to be one of the main reasons that IBM stayed on top for so long.

share|improve this answer
+1 - good points. I remember IBM in good memory from the old days. –  Rook Oct 9 '10 at 20:49
add comment

There are many saying that Java is the new Cobol. (As such, it's fitting that Oracle has it.) There are so many millions of lines of Java code out there, many of which will not be replaced or rewritten any time soon, it's a safe bet that we'll still have Java compilers in 20 years.

If any changes are made to the language to break backward compatibility, they will likely be minor (like adding assert to Java 1.4) and there will be mechanisms to compile the older versions. Again, the same argument applies: There are so many lines out there, no one is going to change the language to break it.

I could maybe see some libraries get deprecated, but supporting that might just mean linking to older implementations, or mocks acting like them. We are probably past the worst of the deprecation, being the changes to Thread, and the Java language community seems fine if the language has some cruft still, like the old Vector class.

share|improve this answer
Yes indeed, Java (as much as I like those Java knock-knock jokes :-) does seem to be one of the ones that are holding its own! But still, I would be careful - since, although it is an actively developed lang.; it is still changed between versions. (Help me out here, since I'm not a Java guy - how much in the language has changed in the past, let's say 10 years. Can it be compabible with today's language/compilers?) ... +1 –  Rook Nov 24 '10 at 22:45
add comment

For the long term, the language doesn't matter. VMs will be forward-ported for a lot longer than compilers or libraries. Just make sure your program uses a simple standard interface like http, json, or text with newlines so it can keep a link to the outside world.

share|improve this answer
add comment
