Wear the seat belt
Quit whingeing, and put on the damn seat belt.
Seat belts are nothing short of a miracle. They save countless lives each and every year. They’ve become a silent background in our lives. As automatic and axiomatic as putting on our socks or locking our front doors. They’re so ingrained in our lives it’s actually uncomfortable not to wear one. You notice that even in relatively mild driving as a passenger you’re sloshing about and have to tense up or lean to stay fully in place.
But there was a time when it was the opposite. People didn’t like them. It was uncool, viewed as a source of discomfort, a limitation. There was even a bizarre cohort for decades claiming that the seat belt made the car less safe. Others still thought sure they help if you drive dangerously, but I am a good driver.
You won’t make a mistake over the course of 100,000 miles of driving? Ok then. Lack of humility aside, there’s just one issue. You. Share. The. Road. There are other drivers who are not qualified, are not careful, are not paying attention. Even if you truly are better than everyone it’s wholly irrelevant.
Even I remember this sentiment hanging on by a thread in the early 2000’s. That’s about where we are with memory safe languages today like Rust and Zig. Really, it’s more like the early 90’s.
These languages have been around long enough where efficacy is incontrovertible. They’re mature enough, easy to use. It’s the programming language equivalent to them getting cheap enough to put in every car. Governments and businesses are starting to mandate their use. Those of us who’ve used them, even if we found having our hands tied annoying at first, have come to realize not only are things safer now they’re also more comfortable.
You’ll often hear these languages don’t actually solve problems and people should just get better at coding. It feels patronizing to even draw out the 1:1 comparison here, but for those people: even if you (and I for what it’s worth) use C properly, we still will occasionally make a mistake over the course of many years. We are surrounded by people who don’t know what they’re doing. We have to squint at other peoples code to figure out the ownership jumping down each layer of poorly written and/or documented functions.
I still see these issues come up in Rust code when people use unsafe
improperly. But here’s the thing, the default is safe. 99% of opportunities for issues are removed. Those that remain are clearly and literally fence posted as a code block labeled unsafe { ... }
.
I’m not once again linking to the data, or fully outlining the theoretical rationale here. That’s been done over and over. We’re past the debate, it’s time for you to put on your seat belt.