What platforms do you see having the best code longevity in 20 years?

11 points by gnarbarian ↗ HN
My dad wrote some engineering cost estimation software for excel in VB 20 years ago and it's still in use and working today in current versions of excel. I find this pretty cool that his code written so long ago is still useful.

Besides Java and .Net, what platforms do you think will have the most longevity, relevance, and interoperability decades from now?

What languages and programs do you think will still work on systems (with the future version of their VMs and interpreters) without needing to refactor.

The volatility I've seen from most languages is difficult to contend with. Even a project written 5 years ago can be a huge pain to get running on a current OS with current packages. Three examples of subsequent versions breaking compatibility with existing code: Jquery, Angular.js and ColdFusion.

17 comments

[ 170 ms ] story [ 722 ms ] thread
Wordpress will never die.
I could see that being around for a while. but do old projects actually work on the latest version of the platform?
Breaking changes used to be the norm. These days, I think it's less likely, but no way it stays that way for 20 years.
Any command line program that is compiled and plays by *nix's rules or by Win32's rules, in theory, should still be able to run in 20 years.

UI is always the sticky issue, it will almost always change, and the underlying api with it. Will iOS and Android stick with their apis and run times? They're just too new to say. The browser is, almost by definition, supposed to change.

I think that's why my dad's software is still usable. the UI was simply an excel spreadsheet. Since spreadsheets haven't changed that much it continues to do its thing.
Some Java code is rather remarkable for longevity. I also expect the core Unix and GNU tools to still be in use for decades at the least. The Linux kernel will also probably still be around in some form.
C++ on Windows. And only because Microsoft always changes things slowly and with backwards compatibility. Even a sudden shift like the Modern UI didn't change the backend. It's more or less the same since Windows XP.

Apple always moves fast and discards old concepts. If you don't keep up, you quickly become irrelevant. Linux is stable, but unpredictable. It's always the flavor of the month. And the lack of unification means that it's hard to fully support all distros in the present. Never mind the future.

And the web is changing faster than I change my phone or laptop. It's probably heading towards a fast and messy death. Maybe it's just me. But web apps and sites are just begging for a revolution.

I agree. The main thing working against C++ is that bugs in the software, which (by luck) have no bad effects, might behave differently with new versions of the runtime. I think that Microsoft's SxS runtimes might even help that not happen either.
I think java for sure ( not only in a Cobol way, but still strongly used) and well, most probably some evolution of javascript
Scala. You get to leverage the JVM and existing Java libraries, without losing access to modern language features like type inference, for comprehensions, typeclasses, etc.
I think Scala is awesome and I love the idea of multiparadigm programming languages but I've read quite a lot about scala's compiler being nearly impossible to maintain due to its complexity. This means future changes in all likelihood WILL break old code like they did before in the 1.7-1.8 migration. That plus the fact that there is no binary compatibility between major versions probably makes Scala the best Anti example for what I was asking.
The Scala team has a large test suite and compiles against more than a million lines of code from published Scala code bases in the wild on regular intervals.

They also guarantee that if something compiles against a major version without deprecation warnings it will also compile against the next major version.

The only difference with Java is that Scala developers actually deal with deprecated things instead of letting them accumulate with every release and that binary artifacts are forward compatible.