Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

If the handle of the hammer you're holding was a chainsaw that randomly turns on and off. And also sometimes explodes killing your entire family and pet dog. Don't blame the explodey-chainsaw-hammer, it's just a tool. Okay an idiotically dangerous too that nobody in their right mind should use, but still just a tool.


Eh, no need to overreact that much. Look. Hardware is hardware, and this is where tire meets the road so people can lay the foundation for the upper levels.

It is what it is. It's not user friendly because hardware just isn't, low levels aren't, and it has to just perform.

> 'idiotically dangerous'

Well, I don't want to sound harsh, but nobody forces anybody to do systems programming if they perceive C as such. There is JavaScript, python and plethora of other safe and cozy languages, but: the low level has to be done.


Hardware is hardware, but C is not. People need to stop pretending that it is.


Look at all his comments in this thread. He is just fishing for an argument/attention.


Oh, I see it's not that there's such a thing as a bad tool, or that C is unsafe.

Simply most of us don't have your towering intellect to appreciate it. Got it.


Maybe I was too harsh, I apologize. But c is far less dangerous than a kitchen knife.

Tools are tools, some are used with a great amount of care: jackhammers, routers, compression hammers, chainsaws etc.

Heck: driving a vehicle is probably the single most dangerous activity we do on a daily basis.


> If the handle of the hammer you're holding was a chainsaw

Except it isn't.

It's just a hammer, with a handle of a hammer.

> And also sometimes explodes killing

Except it doesn't.

At best, some people are reckless and end up causing problems due to their recklessness.

Enough with these silly hyperboles. Cushioned environments lead to less problems.


C is utterly predictable. Maybe you're the exploding chainsaw in this metaphor.


How detailed is your knowledge of undefined behavior?


We know when undefined behavior will occur(the specs are written very clearly), but not what will happen when it occurs. Our job as competent C programmers is to avoid undefined behavior. C isn't hard(perhaps tedious to do correctly) - it does exactly what you tell it to.


It does, but it's unnecessarily difficult to keep track of all the places undefined behaviour might occur and make sure you don't step into any of them under any conditions ever.

We shouldn't have to work like this anymore. C's been an amazing language, but it's getting time to gently, respectfully, move on. There's active and interesting development in alternatives which attempt to retain C's primary advantages while also allowing the compiler to keep you out of trouble as much as possible.

We have hugely powerful computers available to use as developers. We can contemplate designing and compiling languages with a complexity which would have completely defeated the systems available when C was developed. Why shouldn't we use some of that power to make our lives easier?


You'd be hard pressed to find a non-trivial C program that doesn't contain any undefined behavior.


Depends on what you mean by "non-trivial," I should think.


> it does exactly what you tell it to.

This is a tautology.

What do you expect to happen on signed overflow?


> sometimes explodes

thought you were talking about java bloatware for a second. Oh your OS doesn't have 1.2gb for HelloWorld.class? Enjoy your OutOfMemoryException!




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: