7 ms·
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 sof
by drmeister 5y ago
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 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 5y agoIn the realm of spoken languages, they say for a language to become immortal, it has to die. Latin is the classic example of this. Languages that continue to evolve will continue to "break" so to speak. In this vein, Standard ML (SML) is truly immortal, because the standard is set and it is "finished". Just a fun thought!
- hajile 5y agoThere's actually been a decent amount of work on SuccessorML to add a few things to the language.
- LargoLasskhyfv 5y agoI think I've recently read that the amount of Akkadian/Sumerian material is vastly more, than anything the Latin period has produced. Yet almost nobody is able to interpret it, in comparison to Latin.
- pjmlp 5y agoWell, the Vatican keeps updating it. :) https://www.vatican.va/roman_curia/institutions_connected/latinitas/documents/rc_latinitas_20040601_lexicon_it.html https://www.vatican.va/roman_curia/institutions_connected/la...
- WJW 5y agoI really enjoy modern translations like "night-club" -> "taberna nocturna".
- harperlee 5y agoAwesome also that this is perfect spanish.
- emilper 5y ago"modern" language teaching killed Latin before that they were teaching it without any stress on grammar, mostly memorizing phrases and short sentences and learning how to use it
- p_l 5y agoUntil "modern classics" education became a thing, Latin was arguably a still living language, if in limited use (mainly among the clergy, certain professions and educated circles, and effectively official language of certain countries). Then ~17th century modern classics turned latin education into navel gazing on the topic of bunch of roman republic/empire era works, and disregarded actually using it.
- TheFreim 5y agoIf I remember correctly there were still some scientific works being published in Latin in the 1900s
- User23 5y agoCommon Lisp's extreme extensibility thanks to macros means new features can be added without breaking the standard.
- kazinator 5y agoFirstly, programming languages are always extended when a program is written, because a program consists of new definitions. This is true of SML. Any SML program consists of the language, plus that program's definition of symbols, which effectively create a local SML dialect consisting of standard SML plus the program's vocabulary. 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.
- sokoloff 5y agoI could happily live with an English that didn’t accept literally to mean “not literally”. Informal: used for emphasis or to express strong feeling while not being literally true. "I was literally blown away by the response I got."
- kazinator 5y agoBut that English may have never existed! "Literally" has a long history of being used to mean "a kind of figuratively that is almost perceived like it's really happening" or something like that; perhaps as long as the word itself. What I could live without is the dialect of English in which "literally" is used to explain away some figure of speech as not being a figure of speech, whereby, oops, there is actually no figure of speech to explain away. Like "I literally just moved to this town yesterday, so I don't know my way around yet". What is that for? Nobody suspects that you figuratively moved into this town yesterday; if you moved here just yesterday, then "I moved to this town just yesterday" is perfectly adequate. (Now being born yesterday is a genuine figure of speech; we could make a meme in which a speech balloon next to a newborn infant's mouth makes a joke about literally having been born yesterday: that would be a valid use of literally.) Since being blown away is a genuine figure of speech, the expression of "literally blown away" which refers to a situation which is still only figurative is a well-entrenched use of the word: hundreds of years old, I think. It says that the figure of speech is so fitting that if you imagine me being literally blown away, that is actually fairly accurate, so much so that when the inevitable film adaptation is made of my life story, special effects will necessarily hav to be used to portray it that way.
- Turing_Machine 5y agoJavaScript probably qualifies, too. It's not going anywhere for a very long time, if ever. Same with COBOL. COBOL will have to be killed with fire. I'm assuming here that "eternal language" doesn't necessarily mean "good language". :-)
- musicale 5y agoUnfortunately JavaScript code is often built on DOM and NPM quicksand.
- nikki93 5y agoOne of the newer (newer than C, C++, Common Lisp, ...) languages I feel comfortable about regarding this is Go. Definitely feels like I can write a simple Go program to generate a static website for example and it'll probably still work in that same state for a while.
- exdsq 5y agoIt’s hard to say with any 1.x versions what’ll happen come 2.x
- AnimalMuppet 5y agoTrue, but... most languages wouldn't be on version 1.x after the amount of time (and progress) that Go has. Go has a track record by now, of being very careful about breaking things, and providing tools to help fix them when they do. Sure, Go could introduce breaking changes in 2.x. Will they? Track record says "no".
- randomswede 5y agoAs far as I can tell, the only reason for a Go 2 (as opposed to a Go 1.nnnn) is "we introduced a breaking change". Things that were considered "Go 2" are being worked in, as the language evolves, without the need to break previously written code.
- Ginden 5y ago> 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) 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.
- hajile 5y agoI was pretty sure that there were some subtle changes in ES5 and ES6 that were technically not backwards compatible (done because very little code depended on those behaviors)
- rmbyrro 5y agoOut of curiosity: would the 1995 JS code pass any modern code review?
- casion 5y agoJS from 2003 passed code review for me a few months ago... so, yes... maybe.
- deleted 5y ago[deleted]
- np_tedious 5y agoProbably depends what it's doing. If it's interacting with HTML and manipulating the DOM then probably not
- helsontaveras18 5y agoHow do modern frameworks display content? Must be interacting with HTML and manipulating the DOM in some way.
- 5y ago
- 41b696ef1113 5y agoMaybe Lua? Started in 1993 and LuaJIT is effectively frozen. I could see this one hanging in for a long time as the goto embedded language.
- medo-bear 5y agowas it you that said that the difference between writing templates in c++ and writing macros in common lisp is like the difference between filling out tax forms and writing poetry :)
- lenkite 5y agoThe only place LISP is eternal is on HN. A super-microscopic minority of engineers use it for real-world software development. The standard hasn't been updated for 2 decades. There is only one real compiler implementation. No WASM. No proper mobile support. Library support for real world tasks is abysmal. Common LISP's tomb is indeed shiny and eternal. Developers at HN will mourn at its graveyard for eternity.
- lispm 5y ago> There is only one real compiler implementation 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 5y agoI honestly think most languages belong to this category. I can't really think of a language that changed so much that old code no longer works (other than python 2 -> python 3).
- georgeecollins 5y agoI hope that Rust joins the pantheon of eternal languages. I feel like it has a lot of the advantages of a language like C, but is just more modern and well thought through. Also, you did not mention Java. I have very old Java code that still works fine.
- oblio 5y agoJava is probably the biggest "eternal" language we have these days. Probably tied with C and C++. There's <<so much>> Java code churned out that it's unbelievable. Business systems have a ton more code than infrastructure systems.
- chii 5y ago> [java] Probably tied with C and C++. i think java wins over c/c++, because there's very little low level, machine specific code you can do in java, where as you surely can do that in c/c++.
- pjmlp 5y agoTrue, and instead of rewriting the whole stuff, if some C or C++ is actually required there is always JNI, JNA, or the upcoming Panama.
- badsectoracula 5y ago> Java is probably the biggest "eternal" language we have these days Is it? I haven't followed it in years but i remember reading about people sticking with Java 8 because later versions broke backwards compatibility in some cases.
- pjmlp 5y agoYep, modules were a big break, however all the relevant libraries that actually matter on the Java ecosystem are available on latest versions. Basically it is the same kind of effect like school/university teachers whose idea of C++ is C with extras, and if they teach something more close to C++98 proper even in 2021, one should consider themselves lucky.
- duped 5y agoC/C++ languages are stable, but building actual software with them is extremely cumbersome on future systems. It is unlikely to "just work" because of how we have inverted the dependency structure of the vast majority of C/C++ programs.
- forrestthewoods 5y agoEhhh. Integrating an old C++ library into a new project may be difficult due to build systems or not useful due to dependencies. 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.
- deergomoo 5y agoTbf if you’re just looking to run an app on newer platforms you’d likely not need to do anything with the web app. They have a lot of issues but once stuff works it’s usually a very long time before it doesn’t. It would probably still be harder to add a new dependency to a 3 year old web app than it would be to integrate a 20yo C++ project though, I agree with you there.
- duped 5y agoimo that would be a "forever program" not really a "forever language." The lack of standard packaging and terrible paradigm of shared dependencies has made C/C++ incredibly fragile and non-portable when you need something from years ago to compile today.
- xapata 5y agoHow do you lose Python 2 code? The old interpreter still works.
- p_l 5y agoBut is no longer viable option for new work, and in this case a lot of the code IIRC was libraries for writing programs.
- happy-dude 5y agoInterestingly, Perl doesn't get a lot of love on HackerNews but I would classify it in the family of "eternal languages."
- jjav 5y agoI have quite a bit of personal scripting in perl that I wrote in the early 90s, still in use every week. Haven't changed any of the code in decades.
- oalders 5y agoSome of that code has been running for a long time. A lot of the Perl toolchain still works on 5.8.1 (released Sept 2003). https://metacpan.org/release/JHI/perl-5.8.1 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 https://metacpan.org/release/RGARCIA/perl-5.6.2
- throwawayapples 5y agoEven after the Perl 5 / Perl 6 / Raku debacle? Many developers left after that (Python pulled off the same trick a decade later.. apparently some language teams have very short memories.)
- yellowapple 5y agoSaid debacle arguably reinforced Perl 5's eternity, if anything.
- shakow 5y agoEspecially after de Perl5/6 debacle. The two separate languages solution let them have fun on Raku, all the while ensuring that Perl 5/7/... will preserve retrocompatibility.
- tzs 5y agoI think that to earn the title "Eternal Language" that should have to work in both directions. 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 5y agoGo is another that strives for backwards compatibility: https://golang.org/doc/go1compat https://golang.org/doc/go1compat 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 5y agoWhile Go strives for backwards compatibility, it's a bit too young for now at 12 years old, and already had a few changes around packaging and stuff like that. If we get to 20 years without Go 2 that will be a solid signal on the longevity of Go.
- jjav 5y ago> "Eternal Language" 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.