The if statement not requiring brackets caused this bug. Rust fixes these issues with pattern matching and mandatory curly braces in if body statements
Yeah, it’s not optimal, I don’t think anyone argues that it is. It has a bunch of ways to shot yourself in the foot, no questions about that, people were writing books about that for decades. Not like there is an optimal language that doesn’t allow you to make some stupid mistakes.
But also, a lot of that non-optimality is what gives it advantage. Well, that and enormous amount of legacy code and expertise.
Sometimes you need to pass around raw pointers without caring about memory ownership, and for that situation it’s optimal. I’m glad you have your mandatory curly brackets, but sometimes I just want my microcontroller to blink an LED and for that I’m in turn glad that I can be as quick and dirty as my filthy mind allows me.
And for serious projects we’re all MISRA compliant anyway, and it mandates curly brackets for ifs and proper cases for switch.
Let’s not get too abstract. Just because Rust made its own mistakes doesn’t mean it didn’t fix the mistakes I pointed out
Serious projects have huge memory safety issues that don’t exist in Rust. More than half of security CVEs are due to the nature of C. Rust just has fewer bugs like Heartbleed because it doesn’t let you do a buffer overrun
That’s because serious projects basically don’t exist in Rust. Yet, probably, Rust seem to be a good language that people like, so those are to follow, but for now they’re rare.
Or don’t, if we discover that Rust has some other issue that only happens when the project grows old enough.
Personally, I’m sticking to the devil I know, the one that has almost 60 years of accumulated knowledge and best practices.
Nobody is arguing C is complex. The argument is that it’s not the optimal syntax.
For example, case statements needing breaks can cause logical issues with incorrect merges.
How about this
https://en.wikipedia.org/wiki/Unreachable_code#goto_fail_bug
The if statement not requiring brackets caused this bug. Rust fixes these issues with pattern matching and mandatory curly braces in if body statements
Yeah, it’s not optimal, I don’t think anyone argues that it is. It has a bunch of ways to shot yourself in the foot, no questions about that, people were writing books about that for decades. Not like there is an optimal language that doesn’t allow you to make some stupid mistakes.
But also, a lot of that non-optimality is what gives it advantage. Well, that and enormous amount of legacy code and expertise.
Sometimes you need to pass around raw pointers without caring about memory ownership, and for that situation it’s optimal. I’m glad you have your mandatory curly brackets, but sometimes I just want my microcontroller to blink an LED and for that I’m in turn glad that I can be as quick and dirty as my filthy mind allows me.
And for serious projects we’re all MISRA compliant anyway, and it mandates curly brackets for ifs and proper cases for switch.
Let’s not get too abstract. Just because Rust made its own mistakes doesn’t mean it didn’t fix the mistakes I pointed out
Serious projects have huge memory safety issues that don’t exist in Rust. More than half of security CVEs are due to the nature of C. Rust just has fewer bugs like Heartbleed because it doesn’t let you do a buffer overrun
That’s because serious projects basically don’t exist in Rust. Yet, probably, Rust seem to be a good language that people like, so those are to follow, but for now they’re rare.
Or don’t, if we discover that Rust has some other issue that only happens when the project grows old enough.
Personally, I’m sticking to the devil I know, the one that has almost 60 years of accumulated knowledge and best practices.