In most cases, the language they work with is chosen for them by the company they work for.Young people choose what they like to work with, especially the talented ones.
I appologize for hurting your feelings. I did not answer to your demographic argument because it is a red herring. If just a minor percentage of the young folks decides to acknowledge the wisdom that has been put into “legacy” code like FreeBSD, that will be enough. Yes, the C programming language, OS-Design, etc. may become niche in the future, but niche is good, because it provides, e.g., job security.
The way to fix things is to fix things. Introducing a new programming language won't help here.
It's really sad that programming in assembly nowadays seems to be implying being stupid or braindead. The C compiler was once called a “portable assembler” and, indeed, it directly reflects how a CPU works. I concur with Torvalds here who said: “If you think like a computer, then C makes sense!”
It may be true that other, more “modern” (yikes) languages are more convenient, but convenience is irrelevant, unless you are a coding monkey that just wants to “get the job done”.
Rewriting/reimplementing is a huge pain.
Exactly. But it usually makes more pains, unfortunately.Don't forget the 2nd system effect.
Second-system effect - Wikipedia
en.wikipedia.org
People can't resist "improving", which comes down to adding things, when re-implementing anything.
I do not see this either. First of all, we lack a guru. Then we lack the missionary zeal. Then … are you sure you are not talking about Linux?Frankly, I fail to see the potential of the FreeBSD code base for starting a religious cult around it.
If I recall correctly, your assumption was that new and talented developers would prefer working with Rust instead of that legacy C-thing that currently is FreeBSD. This is were the “legacy” thing came from.[…], you came up with this unrelated legacy thing. Might want to try a borrow-checker on that.
No. Machine code coming from C is prefectly debuggable. Sure, some operations might be optimized away, but the general structure is still clear. This is in stark contrast to, e.g., C++, where constructors, destructors, template-metaprogramming etc. create a stark distance between the source code and what is generated by the compiler.That was true for the first generation of compilers and CPUs back then. Any serious compiler from the last 30 years will optimize your code far beyond from how you would map that C code to assembler. Same goes for performance-oriented CPUs. So nowadays as an excellent programmer, you have to think like a compiler first, and then like a computer. Whether using C or a higher level language.
Yes, I do use strong language from time to time. Sorry for that. But what drives me up the wall (and what I'm reading in your posts) is the trend in the tech industry to simply throw away stuff that has been worked on for years simply because it is not “modern”, “cool” or “convenient” anymore. And when I use the word “dumb” in this context, I mean exactly this trend.Go on with that ranting if it makes you feel better. I'm getting snarky, sorry, so I'll leave it at that.
As well as removing things they don't like. At Google they used to say version N was obsolete but version N+1 (a rewrite) was not ready for prime time.Don't forget the 2nd system effect.
Second-system effect - Wikipedia
en.wikipedia.org
People can't resist "improving", which comes down to adding things, when re-implementing anything.
Gotta love your determination to provide an example of the arrogance and smugness of the typical Rust developer.Gotta love your determination to provide us with a hands-on demonstration of "non-technical nonsense".
Don't forget about 3rd party kernel modules like x11/nvidia-driver.This way they are not constrained by the current way of doing things or current internal kernel interfaces (which have evolved over decades and gotten rather messy).
Not to worry. Since Linux guys will rewrite it in Rust, this API will also be in Rust ;-)Don't forget about 3rd party kernel modules like x11/nvidia-driver.
C part in the kernel for interface (hopefully, headers only?) should be mandatory even the case you mentioned.
Rust for Linux maintainer steps down in frustration
Community seems to C Rust more as a burden than a benefitwww.theregister.com
Trouble in paradise?
If leadership allowed Rust in, to evaluate it on technical merits, leadership should not allow nontechnical abuse, as it contaminates the evaluation. If you about that, then I would be lead to assume you didn't want the evaluation to succeed.
That is not how I saw it. The guy quit because he had no answer to Ted T'so's very reasonable argument. So he blamed his quitting on nontechnical nonsense as a justification.Well, you need thick skin when introducing a new language to an existing project. The "nontechnical nonsense" was bound to happen. Have to shake it off and keep trucking.
And he concluded his message with a reference to a YouTube video from the Linux Storage, Filesystem, Memory-Management, and BPF Summit in May. Pointing to a portion of the video as an example of the kind of interaction that led him to step down, Filho wrote, "[T]o reiterate, no one is trying [to] force anyone else to learn Rust nor prevent refactorings of C code."
That remark is a response to a comment on the video that, according to Filho, came from Linux kernel maintainer Ted Ts'o: "Here's the thing, you're not going to force all of us to learn Rust."
The video depicts resistance to Filho's request to get information to statically encode file system interface semantics in Rust bindings, as a way to reduce errors. Ts'o's objection is that C code will continue to evolve, and those changes may break the Rust bindings – and he doesn't want the responsibility of fixing them if that happens.
He was asking for a defined interface spec so that if the interface changes, the C code has to change AND the Rust code. The interface change precipitates all code change, not C code change precipitating Rust code change.subsequent C code change causes the rust code to break in some way,
I got the sense that was merely the last straw from his "four years" comment, but I have not been paying a lot of attention to this.hard to control a conference audience
Heh, I noticed that 'four years' comment too ... oh dear... Well, maybe m'sieur Tso is no angel, either... 'twas ever thus!I got the sense that was merely the last straw from his "four years" comment, but I have not been paying a lot of attention to this.
This is because I want LLVM project developing Rust frontend.He was asking for a defined interface spec so that if the interface changes, the C code has to change AND the Rust code. The interface change precipitates all code change, not C code change precipitating Rust code change.
In this way, just "writing C" does not break Rust, which is what they were trying to emphasize, but writing C that breaks the agreed upon interface does.
Bring it.I am no visionary but if Linux doesn't internalize this, I'm afraid some other kernel will do to it what it did to Unix.
Whiny baby!I expected we would be past tantrums from respected members of the Linux kernel community.
Who are you replying to Jose?Bring it.
Whiny baby!
Ted Ts'o's code has stored terabytes of my own data reliably for decades, and untold amounts of my employer's data for at least as long. What has Mr. Whiny delivered besides tantrums?