7 ms·
> But I will say this, I've long been thinking that there should at least be a programming language and OS that does its best to not change. A sort of whole env
by strangetortoise 5y ago
> But I will say this, I've long been thinking that there should at least be a programming language and OS that does its best to not change. A sort of whole environment where every single piece that's out of beta commits to minimal interface changes over time
At the risk of this being interpreted as trolling; don't we have this, for crucial OS interfaces at least? Linux is famous for "we do not break user space" (yes, I know it's not 100% true, but it's closer than anything else I've seen), and afaik the posix standards are pretty stable too.
The C language also has a stable ABI, which is basically the ffi for most languages, and most static libraries that were developed decades ago can link just fine.
In my mind, the problem is caused by at least two things:
- Languages that are not compiled to machine code have no incentive to have a stable API or ABI. This has the effect that code reuse now necessitates replicating the state of the machine it was developed on (Which might be using a different language version, runtime, etc).
- Programming culture has progressed to a "get it done quickly, just grab a library" culture. This is not to say you should develop everything in-house, but on a spectrum, I have the hunch that this easy accumulation of dependencies induces a culture that does not vet the stability of the dependencies. Once one of your dependencies is unstable, the project on which it depends cannot be stable.
- moonbug 5y ago> a programming language and OS that does its best to not change you've heard of this thing called Windows?
- Jensson 5y agoSince when do windows break most programs every few months? Having to write a patch every few years when Microsoft releases a new OS is pretty low maintenance. And most of the time windows is backwards compatible nowadays, so usually you don't even need to do that. Most 10 year old games still runs on modern windows even without patches etc.
- selcuka 5y agoYes. Windows is extremely backwards compatible. This could be, ironically, one of the reasons some people don't like it too much. See Raymond Chen's The Old New Thing [1] for some technical details. [1] http://ptgmedia.pearsoncmg.com/images/9780321440303/samplechapter/Chen_bonus_ch01.pdf http://ptgmedia.pearsoncmg.com/images/9780321440303/samplech...
- nitrogen 5y agoThe latest Windows update won't install for me. It pops up an error saying "Uninstall this app now. It is not compatible with Windows 10." Yes, it says "now," in command form. And the app, VirtualBox, works just fine in Windows 10. Doesn't seem very backwards compatible these days.
- GoblinSlayer 5y agoIf the program manifest doesn't advertize compatibility with the current version of the system, its window will be scaled.
- TedDoesntTalk 5y agoYeah, C and Java have had non-breaking changes for years. Java code from 1995 can still compile and execute in Java 17 (2021). I imagine COBOL is similarly stable but I have no experience there.
- seiferteric 5y agoYa I was thinking java is closer to the mark as well, even coming from someone who has never programmed in java... But I have long thought that it would be nice if there was some sort of universal standard for pseudo code that could be compiled into other languages.
- moffkalast 5y agoMeanwhile Python: "Yeah if you could rewrite your entire codebase every few years because of some changes nobody fuckin asked for, yeah that would be great. Oh and by the way, we're dropping support for non-latest versions of the language lmao."
- bombcar 5y agoBut Java 8 -> 16 doesn’t work without changes.
- frant-hartm 5y agoDepends, some libraries work, some need special parameters, some don't work at all
- TedDoesntTalk 5y agoCompletely depends. You can write Java in 2021 that works with both old and new Java, especially if you don’t use any dependencies.
- bombcar 5y agoSure and you can write code that is valid C and valid shell- but there have been major breaking changes to Java (iirc Minecraft barely started working with Java 16 this year).
- 3pt14159 5y ago> At the risk of this being interpreted as trolling; don't we have this, for crucial OS interfaces at least? For crucial OS interfaces, yes. For the ecosystem of libraries and packages, no. But ultimately Linux is more than just crucial interfaces. The ecosystem of applications and libraries that we need to get anything really useful done does constantly change, and it would be nice if there was a OS + programming language + culture for "forever apps" that are designed to work for centuries without a material risk of an auto-update breaking anything. Sort of how Rust is designed around safety, that's what would be nice. I know it wouldn't be perfect, for the reasons I listed above, but for the areas where we are at least trying to have things work for good I think it would materially help.
- zokier 5y ago> The ecosystem of applications and libraries that we need to get anything really useful done I'd argue that you can get lot of useful things done with plain POSIX/C > a OS + programming language + culture for "forever apps" Isn't POSIX + C exactly that? Sure, not many people stick within those bounds, but those who do tend to care a lot about not breaking stuff.
- pjmlp 5y agoyeah, except POSIX and C also aren't set in stone, also evolve, deprecate stuff, remove features, just like everything else.
- eptcyka 5y agoGood luck running a binary from 2005 on a modern Linux distro.
- remram 5y agoGitHub was built to host source code though.
- OneWingedShark 5y ago> The C language also has a stable ABI, which is basically the ffi for most languages, C is honestly terrible to target/use as FFI, doing so precludes doing things correctly, or more advanced things like... say arrays that "know their own length" or numeric-types that are range-constrained.
- GoblinSlayer 5y ago>say arrays that "know their own length" There's a fair amount of C code that does just that and does it for a long time. >or numeric-types that are range-constrained. Those don't need astral and can be passed through C ABI just fine.
- OneWingedShark 5y ago>>say arrays that "know their own length" > > There's a fair amount of C code that does just that and does it for a long time. No, there isn't. There can't be because of how arrays in C degenerate into pointers/addresses; see Walter Bright's "C's Biggest Mistake" -- here: https://www.digitalmars.com/articles/C-biggest-mistake.html https://www.digitalmars.com/articles/C-biggest-mistake.html >> or numeric-types that are range-constrained. > Those don't need astral and can be passed through C ABI just fine. No, they can't. If you're passing a "Positive" through C's ABI you lose the fact that the value can be neither negative, nor zero. (Unless you mean "passed through" as in, "not mangled", but this is setting the bar so low as to be laughable.)