4 ms·
I agree. But the butthurt side of me wants to say: let those who wish for unsafety be unsafe.
by green_on_black 4y ago
I agree.
But the butthurt side of me wants to say: let those who wish for unsafety be unsafe.
- atoav 4y agoBut programming is multiplication. A programmers work multiplies. If some person once writes code that ends up leaking users data, that data might like a thousand users data in a way that cannot be unleaked. That broken code then multiplies through time. You would not say: Let those [civil engineers] who like unsafe bridges build unsafe bridges Because the people using them might not be able to judge the unsafety of the system. Because the work of programmers multiply we have a huge responsibility and a huge chance to improve the world.
- rapidlua 4y agoBut c’mon there’s no such thing as safe brain surgery. Would you then market brain surgeries as unsafe?
- rurban 4y agoActually working on safe brain surgery robots. It's marketed as safe, and the code is checked to be hard-realtime and safe.
- yakubin 4y agoYes? I wouldn’t even think that’s in any way controversial.
- samus 4y agoBad comparison. Brain surgeries are a method of last resort. They are unsafe because there are significant knowledge gaps in our understanding of the brain that might take centuries more to fill. Every time a neurosurgeon cuts, they are potentially doing irreversible damage to an important part of a person's consciousness, abilities and memories. Edit: and there is no way to prevent that damage except by detailed planning and by stopping to cut when the patient (under local anestesia) ceases talking or performing their craft. Other damage can only be detected later though.
- avgcorrection 4y agoIs surgery often a last resort, done when less invasive things have been ruled out or cannot be used? Yes. Is the human body the most complex “machinery” that we know, demanding our utmost respect? Is the brain the most delicate part of the body? Probably, yes.(?) Is brain surgery in turn a very delicate procedure that should be approached with a thousand-fold more caution than mere tinkering on human artifacts, such as programming? Yes. It’s like you have gone out of your way to prove the opposite point of what you were ostensibly trying to prove.
- spacechild1 4y agoNot everybody works in web development. Generally, C++ is mostly used for anything where performance is paramount. Personally, I write audio code. I rarely have memory issues because most of it is just number crunching. I am working in timespans of microseconds, so speed is the ultimate concern.
- GoblinSlayer 4y agoNot quality? What if an out of bounds access produces a noisy peak once per ten minutes of audio?
- spacechild1 4y agoI just fix the code?
- AshamedCaptain 4y agoIn fact, we have had bounds checking C and C++ extensions for decades, and practically no one uses them save for debugging purposes. This kind of shows how much interest there really is outside of some smaller circles where it may be relevant. I really doubt we are every going to see a "hardened C++" making any inroads, but at least I find that slightly more plausible than any other new language displacing it.
- jcelerier 4y agoYes, a comment mentions something that I have seen more than once in practice: project use bound-checked access on std::vector, but it was too slow, so instead people turn to calling data() to get a raw pointer and use operator[] on that one which removes all possible form of safety.
- pjmlp 4y agoThey won't have any alternative when running in platforms with hardware memory tagging, it will be only a matter of time until all new mainstream OSes are only available in such form.
- krater23 4y agoNo construction software for bridges will stop the engineer from building unsafe bridges. Why should we need a compiler that will do the same with software? What stops the engineer from building bridges are the law regulations and his work environment. This regulations and work environment exists in programming too.
- samus 4y agoThe crucial difference between construction engineering and software engineering is the level of accidental complexity it allows. Any junior software engineer can create and ship unmaintainable architectural monstrosities, and most stakeholders might be completely oblivious of that fact and what it means until much later. Software architecture and programming concerns can be difficult to communicate to non-technical people. Regulations and work environments seem to not exist to a sufficient degree in programming to prevent the sort of errors that efforts like from TA are directed against. The attitude of many programmers towards testing would be considered reckless in many other domains. On the other hand, compilers and IDEs have very much become part of our work environment and should help as much as feasible in avoiding as many errors ahead of time. We might also put construction engineering on too much of a pedestal here. Bridges are very well-defined artifacts that humans have been building for centuries. How well exactly are we doing with other infrastructure projects?