3 ms·
There's a big downside to this that I don't hear people talking about here on HN (likely because our demographic isn't representative of the average programmer
by verdagon 4y ago
There's a big downside to this that I don't hear people talking about here on HN (likely because our demographic isn't representative of the average programmer at all).
C-like languages are much simpler for newcomers to pick up. There are people out there who don't have extensive CS experience and can't easily pick up complex concepts like mutability, ownership, lifetime subtyping, and so on.
There are some anecdotes of people picking up Rust as their first language, but they usually have something else going for them, such as a lot of time, a very patient and involved teacher, or some sort of extra external motivation.
We also often hear how easy Rust is to pick up, but from actually talking to people who have tried, it's clear that this is mostly survivorship bias; people don't tend to broadcast their failure to learn a language. For every N people that successfully learned Rust, there are M people who couldn't push past the learning curve and had to go with something else.
If the entire industry is going to jump straight to Rust and require it for all new projects, I hope it doesn't become a moat of gatekeeping, where only the smartest and most tenacious programmers are allowed to do low-level programming and everyone else is harassed out of the field. That's how a field becomes an isolated echo chamber and stagnates.
I'm not saying we should stop investing in Rust. We should definitely keep at it. But we should also invest in languages that prioritize simplicity and a more merciful learning curve, and make it clear which situations in which they are acceptable/encouraged.
(This might sound biased from me, but the language I'm involved with is a high-level language, so I have no dog in this fight.)
- bsder 4y ago> C-like languages are much simpler for newcomers to pick up. They're really not. The moment people hit "**"--pointer-to-pointer--most of them bounce off. There is a reason why an Operating Systems class is one of the most fearsome things in the CS curriculum--you have pointers everywhere that, once corrupted, are a nightmare to track down due to the lack of support in the language. If I were teaching an OS class, I suspect it's a tossup--Rust might make teaching the class harder than C (not convinced, though ...), but I suspect more students would get an actual working OS at the end of the class. The worst part is that pointer chasing is a performance anti-pattern nowadays. Everybody wants to make data structures look like FORTRAN common blocks--base declaration+index. That having been said, I wouldn't teach either C or Rust as a beginning language. A GC language is fine for 95%+ (I'd argue 99%+ actually ...) of programming tasks. And the experience people get will stand the well for the time when they finally need to step outside that--if they're lucky, they never will.
- kevlar700 4y agoAda offers security and simplicity and is already part of GCC but also has llvm now. Linux kernel drivers have also been demonstrated. Perhaps it would be healthier for Rust to have competition? https://www.linux.com/audience/developers/hacking-the-linux-kernel-in-ada-part-1/ https://www.linux.com/audience/developers/hacking-the-linux-... https://github.com/alkhimey/Ada_Kernel_Module_Framework https://github.com/alkhimey/Ada_Kernel_Module_Framework https://alire.ada.dev/ https://alire.ada.dev/ Nvidia also chose Spark; a built in subset of Ada as being more cost effective for secure code than C++. https://youtu.be/2YoPoNx3L5E https://youtu.be/2YoPoNx3L5E Assembly is also supported by Ada and I found it far easier to add than with C even. C interface support is also excellent.
- bsder 4y ago> Ada offers security and simplicity and is already part of GCC but also has llvm now. Linux kernel drivers have also been demonstrated. Yet the Rust Evangelism Strike Force(tm) got Linus to finally agree to use a language other than C within a couple years while Ada couldn't pull that off over a couple decades. Community, for better or worse, is relevant to programming language acceptance.