| ▲ | parasti 2 hours ago | ||||||||||||||||||||||
I have never in my 20 years of writing C heard so much about undefined behavior as I have in the past 6 months on Hacker News. It has never entered the conversation. You write the code. If it doesn't work, you debug it and apply a fix or a workaround. Why does the idea of undefined behavior in C get to the front page so consistently? | |||||||||||||||||||||||
| ▲ | simonask an hour ago | parent | next [-] | ||||||||||||||||||||||
Excuse me, what? I was writing both C and C++ 20 years ago, and UB was a huge part of the conversation (and the curriculum) back then as well. There were a few high-profile "scandals" around GCC 3.2 (IIRC) because the compiler finally started much more aggressively using UB in optimizations, which was a reason that lots of people stayed on GCC 2.95 for a very long time. GCC 3.2 came out in 2002. | |||||||||||||||||||||||
| |||||||||||||||||||||||
| ▲ | bregma 8 minutes ago | parent | prev | next [-] | ||||||||||||||||||||||
You've probably been churning out possibly malformed code for years. Now you're becoming aware of your shortcomings. This is usually considered the transition from intermediate- to senior-level programmer. | |||||||||||||||||||||||
| ▲ | dminik 11 minutes ago | parent | prev | next [-] | ||||||||||||||||||||||
If only it was that easy: https://silentsblog.com/2025/04/23/gta-san-andreas-win11-24h... The real answer is that proponents of languages like C seem to completely disregard the dangers/difficulty of hitting/difficulty of fixing UB. Proponents of languages like Rust overstate it instead. Pointless wars/drama is fun to read and gets clicks. | |||||||||||||||||||||||
| ▲ | summa_tech 31 minutes ago | parent | prev | next [-] | ||||||||||||||||||||||
Hacker News is still skewed towards people interested in programming languages (as opposed to actually programming). Probably some sort of Y-combinator Lisp heritage. There's also a persistent minority of CS grads who think that developing / using new programming languages is the most fascinating thing in the world, and some of them hold on to that thought. It's reasonable that such people would also be interested in design aspects of languages, and UB in C is in that field. Though I would argue that a lot of it was originally accommodating old CPU architectures without compromising performance too badly, and about as much a "design choice" as wheels being round... | |||||||||||||||||||||||
| ▲ | Etheryte 2 hours ago | parent | prev | next [-] | ||||||||||||||||||||||
Because the production environment might be a completely different architecture, these details matter a lot. Works on my machine is not useful if your actual target is a small embedded system on top of a cell tower in the middle of nowhere. Granted, most people don't work on stuff like that, I imagine the vast majority of devs here are web developers, but even still it's an interesting discussion even if you haven't run into it yourself. Maybe even more so in that case. | |||||||||||||||||||||||
| |||||||||||||||||||||||
| ▲ | kzrdude 22 minutes ago | parent | prev | next [-] | ||||||||||||||||||||||
After the rise of Rust, it has gained more visibility? But some people were interested in C in this way long ago too, I used to hang out in some godforsaken irc channel where people competed in out-pedanticing each other over the C standard. I trust your historical C usage was more productive than that.. | |||||||||||||||||||||||
| ▲ | rramadass 3 minutes ago | parent | prev | next [-] | ||||||||||||||||||||||
Because most of the people who post/write these articles do not actually know the C language specification nor understand its design. Understanding three important concepts properly in C allows one to easily identify what can/cannot result in UB viz. 1) Expressions 2) Statements 3) Sequence Points and "Single Update Rule". I wrote about it here with links to further reading provided - https://news.ycombinator.com/item?id=48144734 | |||||||||||||||||||||||
| ▲ | keyle an hour ago | parent | prev | next [-] | ||||||||||||||||||||||
Computers used to be cool; now they're dangerous. Every company keep harping on about safety and being exposed (being in the news): so the narrative against 'unsafe' is up the wazoo. The new world is basically a bunch of city dwellers who haven't seen raw nature and you show them a lawn mower, they freak out. Blades that spin?!?!?! Madness!! | |||||||||||||||||||||||
| |||||||||||||||||||||||
| ▲ | aldanor 44 minutes ago | parent | prev | next [-] | ||||||||||||||||||||||
If there's no UBs then what will we programmers do, there won't be enough to debug and fix? | |||||||||||||||||||||||
| ▲ | sethev an hour ago | parent | prev | next [-] | ||||||||||||||||||||||
I wonder if it’s just the colorful metaphors and an opportunity to bring out examples of surprising behavior. Plus it’s a topic that can always stir up debates. | |||||||||||||||||||||||
| ▲ | jakobnissen an hour ago | parent | prev | next [-] | ||||||||||||||||||||||
I would guess that the continued success of Rust have shown that we don’t have to live with the user-hostility of C in order to write system programs. Therefore, people are understandably growing less and less patient with C and its unending bullshit. Although I haven’t noticed a spike the last 6 months, just a slowly increasing realization that C isn’t fit for humans and should go the way of asbest: Don’t use it for anything new, and remove it where it already exists, unless doing so would be too expensive or disruptive. | |||||||||||||||||||||||
| |||||||||||||||||||||||
| ▲ | benj111 an hour ago | parent | prev | next [-] | ||||||||||||||||||||||
1. It's been talked about for much longer than that. 2. You don't really appreciate the issue. Signed integer overflow is undefined. If you check for that overflow after the fact the compiler can, and demonstrably has pretended that the overflow can't happen and optimised away your overflow check. You may not even come across that failure mode to know to 'fix' it. And good luck finding the issue unless you know about UB and what the compiler can and will do in such situations. | |||||||||||||||||||||||
| ▲ | account42 2 hours ago | parent | prev [-] | ||||||||||||||||||||||
There are a lot of Rust/whatever hipsters here that have defined their whole identity around hating C and C++. | |||||||||||||||||||||||
| |||||||||||||||||||||||