5 ms·
As expected, the people problem is the biggest factor. Turns out getting C folks to learn Rust is a difficult proposition (hello, lkml) but the other way around
by baq 2y ago
As expected, the people problem is the biggest factor. Turns out getting C folks to learn Rust is a difficult proposition (hello, lkml) but the other way around it isn't too much of a problem.
I wonder how much of it is low-level experienced developers only ever using C fail to see that C is not the universally best tool (or, 'if all you have is a hammer, everything looks like a nail' question).
- dunefox 2y ago> I wonder how much of it is low-level experienced developers only ever using C fail to see that C is not the universally best tool I'd say that's it. From my own experience with software developers, convincing some of them to learn something new is practically impossible.
- lawn 2y agoIt's surprising because I personally jump at an opportunity to try something new. Well, with some exceptions...
- marcyb5st 2y agoI generally speaking agree, but I would be more specific: If the person in question has a true passion for the craft, you can regardless of the age/seniority of the developer (at least in my experience). In fact, learning something like a new programing language is a big undertaking and if your work doesn't offer incentives/rewards the will has to come from the person him/herself and so that's why the passion bit I mentioned above. In my experience I also notice that more senior/older devs are more reluctant to learn new things, but I am unsure if that's due having their passion destroyed by many years of bullshit companies politics, pointless meetings/trainings, and adherence to the latest flavor of agile development every quarter or simply an age thing (I'm not there yet and so I can't tell first hand).
- Lanolderen 2y agoWould this not also be partially connected to not wanting to throw away your 15 years experience with C for 1 year experience in Rust assuming the company actually ditches C? (or any other direct replacement language/tool scenario) Sounds like a way to replace yourself by 2 low pay students who also have 1 year of Rust experience.
- nsteel 2y agoI'm genuinely surprised there are Rust developers out there that don't know C. Perhaps I'm showing my age, or my ignorance to how much CS education (even self-taught) has changed.
- Lanolderen 2y agoIt's still thought but it's mostly a pointer course from my recent experience. It's a low credit subject where you play around with arrays and strings, maybe there will be an overflow calculation as well. Whereas something like Rust you'd do in a high credit course project where you have freedom over the tech stack and actually produce something with functionality. Edit: My point with the replacement is not that juniors don't/won't have C on their CV but that a manager would be more willing to replace an experienced dev with 1 year exp in the current tool with 2 worse devs also with 1 year exp in the current tool compared to replacing an experienced dev with say 10 years of experience in the current tool with 2 worse devs with 1 year experience in the current tool.
- nsteel 2y agoI understood (and agree) with your original point. My comment about not having C experience/knowledge came from the article, where it really did sound like just that.
- jcgrillo 2y agoI studied physics, not CS, so I can't really speak to the CS curriculum part. But I am someone who has written rust professionally for a few years so I'll describe how I got there. I think the most experience I've ever had with C was writing a fourth order Runge-Kutta routine and calling it from python for a college project. Maybe 20 lines of C? In industry for the first 5yr I wrote lots of python and java code for web APIs and "big data" systems. Simultaneously around 2015 I started getting interested in rust because it seemed interesting, and like it would probably play a big role in the next 20yr--memory safety without a garbage collector is inherently compelling if you've spent time trying to make java GC act right. Eventually I got a job which was a full time rust gig. After about 3 years of that I ended up in a golang shop. So I've written some tens of thousands of lines of rust and only a few lines of C. I read C, but it would take a while for me to get comfortable writing it. But I wouldn't, probably, because I can use rust instead.
- wmil 2y agoThe big problem with learning new programming languages is that you're going to suck at it for years until you reach the same level of familiarity with the new one. Suck here is more of an emotional thing. They can output high quality code fairly quickly. The issue is not knowing all of the quirks of the language and all development being slower and more difficult. Dropping down to simpler tasks while learning the language is a huge ego blow.
- baq 2y agoAnd this is where LLMs help tremendously: you know exactly what you want to do, you don't know how to do it specifically like it should be done in the language you're learning, you query the latent space of the internet using plain english and you get an answer. It was a good argument literally a couple years ago less a few weeks before the chatgpt first release. Nowadays it's basically a moot point.
- dunefox 2y agoI'm surprised at how useful the latest openai model is for me when it comes to either learn a python library or a new language, such as cl, for example.
- netdevnet 2y agoWhen you learn a language, you don't just learn how to use the syntax of that language idiomatically. You also need to learn to use the different tools in that ecosystem
- netdevnet 2y agoIt's a RoI. Are you just telling them to learn something new or are you explaining the benefits and costs of learning Rust when they could be learning X?
- fulafel 2y agoThe complexity of Rust is on another level, it's a huge language.
- baq 2y agoIt’s a tradeoff. The ownership rules are mostly the same as C. The difference is that Rust enforces them at compile time.
- fulafel 2y agoHrm. These are the top level Rust ownership rules according to the book[1]: Each value in Rust has an owner. There can only be one owner at a time. When the owner goes out of scope, the value will be dropped. C has none of these. Or borrowing, etc. [1] https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html https://doc.rust-lang.org/book/ch04-01-what-is-ownership.htm...
- baq 2y agoTo get robust software out of C you don't have many options other than to adopt these rules. You can have useful software which breaks all of these, but you don't want to maintain it.
- throwawaymaths 2y agoRobustness is relative. You can certainly write a cli that does everything in an arena; your GC is the OS and so going out of scope -- who cares. doing nothing and eliminating whole classes of errors from consideration (UAF e.g.) is incredibly maintainable. Or, as the old tale goes, your GC might be the software literally exploding (it's in an air to air missile)
- zifpanachr23 2y agoIt's widespread practice to notate who owns what in the comments in C code. "Ownership" as a concept comes from well established C best practices and a good C developer is going to understand exactly what you mean if you say something like "Caller owns the memory returned from this function" etc.
- whazor 2y agoGetting Rust developers to become Embedded Engineers is very interesting. Since it is easier to learn Rust than it is to learn C.
- wyager 2y agoI think writing broken C is easier than writing correct Rust is easier than writing correct C. A lot of C(++) devs just like that they can mostly get away with writing broken code
- bboygravity 2y agoHow much of the embedded jobs are Rust? Maybe 1 percent?
- ndiddy 2y agoThe article says that the author wanted to hire someone who knows both Rust and C to maintain his company's embedded projects, but was unwilling to hire a C developer and wait for them to learn Rust. I'm not sure how this supports your point. I would argue that it's more that most companies aren't willing to let their employees spend a significant amount of time learning new skills.