I like the term "Eternal Language" - programming languages where if you write code now - you will be able to compile and use that code ten years from now (a software lifecycle eternity). Common Lisp, C, C++, Fortran, (edit: Java) are close to eternal languages. After losing a huge amount of Python 2 code (I wasn't going to rewrite it) I implemented Clasp, a Common Lisp implementation that interoperates with C++ (https://github.com/clasp-developers/clasp.git) so that I can write code that will hopefully live longer.I am one of the few software developers with code that I wrote 27 years ago that is still in active use by thousands of computational chemistry researchers (Leap, a frontend for the computational chemistry molecular dynamics package AMBER, implemented in C).
chillpenguin|4 years ago
In this vein, Standard ML (SML) is truly immortal, because the standard is set and it is "finished".
Just a fun thought!
pjmlp|4 years ago
https://www.vatican.va/roman_curia/institutions_connected/la...
User23|4 years ago
kazinator|4 years ago
Secondly natural language evolution isn't controlled by people who know what the are doing, or care about language immortality. They sometimes break things just for the heck of it.
Random examples:
- the "great vowel shift" in the development of English: a linguistic buggery that caused what sounds like "a" in just about any language that uses the roman alphabet, to be written using "u".
- random reassignments of meaning. For instance, the concept called "sensitivity" today was connected to the word "sensibility" just around two hundred years ago. That's pretty gratuitous; I could easily live with a branch of English which had kept it the way it was.
LargoLasskhyfv|4 years ago
hajile|4 years ago
georgeecollins|4 years ago
Also, you did not mention Java. I have very old Java code that still works fine.
oblio|4 years ago
There's <<so much>> Java code churned out that it's unbelievable. Business systems have a ton more code than infrastructure systems.
bsder|4 years ago
I'm torn about this. On one hand, Rust is so much better than C it is ridiculous and I really hope it does become a language with decade-long longevity.
On the other hand, Rust is the first new "systems programming" language in forever and is finally prying the door open to something other than C/C++. I'm really hoping that Rust opening the door and paving the way means that now we can get something better.
What worries me about Rust is the impedance mismatch down at the very primitive hardware level--bytes and registers. The embedded guys are doing an amazing job papering over it, but the abstractions leak through quite a lot and you have to twist things around to satisfy them.
The problem is: that's a lot of fiddly code with all kinds of corner cases. So, you either have a lot of work or you throw up your hands and invoke C (like Zig does).
uoaei|4 years ago
ahohokla|4 years ago
pharmakom|4 years ago
xapata|4 years ago
Ginden|4 years ago
Fun fact: code written in JavaScript in 1995 will work in 2021, after 26 years.
If you are talking about "good practices" - few weeks ago I worked with C code from 2001 and it was just awful. Yes, it compiles - but it wouldn't pass any modern code review.
musicale|4 years ago
Sure, as long as you run it in Netscape Navigator 2.0.
In 2021 you're lucky if a JavaScript web app that worked fine on Tuesday still works on Wednesday. And shocked if it works in any browser other than Chrome.
kazinator|4 years ago
:)
koonsolo|4 years ago
hajile|4 years ago
rmbyrro|4 years ago
tzs|4 years ago
If I am an expert in language X and take a solar powered laptop and go spend 10 years living as a hermit in some isolated place while working on some big X program, with no communication with the outside world other than idle non-technical chat with the people of the village I go to monthly to buy supplies, if X is an Eternal Language then
1. My code that I wrote as a hermit should build and run on the outside world's systems,
2. I should still be an expert in the language X, only needing to learn library changes, fashion changes (such as coding style changes), and tooling changes to be ready to take a job as an X programmer at the same level as I had before I became a hermit.
Alternatively, suppose I don't know X but wish to learn it. To earn the title "Eternal Language" I should be able to go into my library and read the "Learning X" book I bought 10 years ago but never got around to reading and that should mostly be equivalent to buying and reading a recently published book on X.
throwawayapples|4 years ago
After seeing the Perl5/6 schism, I was hopeful that the Python devs wouldn't make the same disastrous mistake, but.. the same happened with us with approximately 100k lines of Python 2 code (which we are now in the process of porting to Go and Rust), precisely for this reason.
It's exceedingly difficult to form trust in language developers who are willing to break working, production code in use all over the world for decades over a new unicode type and a few wishlist library items.
Zababa|4 years ago
nikki93|4 years ago
exdsq|4 years ago
41b696ef1113|4 years ago
happy-dude|4 years ago
throwawayapples|4 years ago
oalders|4 years ago
https://metacpan.org/release/JHI/perl-5.8.1
Test::Simple still targets 5.6.2, which looks to have been released around the same time (November 2003).
https://metacpan.org/release/RGARCIA/perl-5.6.2
jjav|4 years ago
duped|4 years ago
forrestthewoods|4 years ago
However if you want to take an old C++ game written in 2004 and ship it on modern platforms and consoles you only need to update a very small amount of platform specific code.
Updating a 20 year old C++ project is probably easier than updating a 3 year old web app.
Turing_Machine|4 years ago
I'm assuming here that "eternal language" doesn't necessarily mean "good language". :-)
musicale|4 years ago
xapata|4 years ago
p_l|4 years ago
jjav|4 years ago
Even more than being able to compile and run it in a few decades (which is awesome) there is also the part that such eternal language ecosystems grow excellent tooling (debuggers, tracing, performance analysis, source tooling, build tooling, library maturity, etc) thanks to the stable platform and all the years dedicated to making it all ever better.
I greatly dislike the language of the year hype not so much because the language change itself, but because all the wonderful mature tooling doesn't exist in the new shiny thing so we're back to debugging via print and performance analysis via guesswork.
lenkite|4 years ago
Common LISP's tomb is indeed shiny and eternal. Developers at HN will mourn at its graveyard for eternity.
lispm|4 years ago
what kind of meaning of 'real' reduces the several compiler implementations to just one?
Example: I use two native code compilers (SBCL and LispWorks) on my Mac. Both are available on other platforms, too. Is one of those not 'real'?
What about, say, ECL or Allegro CL? Are they unreal?
SCLeo|4 years ago
medo-bear|4 years ago