Was It Really a Billion Dollar Mistake?

Coders feud over whether “pointing at nothing” is genius, harmless, or chaos

TLDR: The article argues the infamous “null” value is easy to catch and not the real cause of most crashes. Commenters split: some say null is a useful, cheap marker, others call out selection bias and demand clear rules on where it’s allowed, because design choices affect real-world reliability.

The internet lit up over Tony Hoare’s famed “Billion Dollar Mistake” — the idea that the special “null” value (a pointer that means “nothing”) has wrecked software and wallets. This new piece pushes back, saying null is actually the easiest crash to catch and not the real villain. Cue the comment brawl. Some readers cheered: it’s a rounding error, folks! Others rolled their eyes at calling decades of outages “no big deal.”

Team No-Null says killing “pointing at nothing” forces developers to check every value all the time or pretend everything’s always valid. As Kinrany notes, constant checking is “really annoying,” and assuming safety can be worse. Team Pragmatist, led by jonathanstrange, argues that invalid stuff is inevitable and null is a cheap, clear badge for “this is broken.” Meanwhile, fauigerzigerk wants rules: tell library users exactly where null is allowed and stop the flood of “just in case” checks that bury real logic.

The drama peaked with accusations of selection bias: preommr claims seasoned system programmers forget that newbies trip over null more often. Memes flew about the “drunk under a lamppost” theory — we fix what’s easy (null) and ignore the monsters like use-after-free bugs. Verdict? The community’s split between Team Nil and Team No-Null, with a chorus chanting: clarity over dogma, please. Read the Hoare lore here.

Key Points

  • Tony Hoare introduced the null reference in 1965 while designing ALGOL W and later called it a “billion-dollar mistake.”
  • The article argues null pointer dereferences are easy to detect at runtime and are relatively uncommon among invalid memory issues in memory-unsafe languages.
  • In garbage-collected languages, null is the most common invalid address; in systems languages like C or Odin, other invalid memory errors are more prevalent.
  • Modern platforms reserve early virtual memory pages so null (conventionally mapped to a designated invalid region) dereferences trigger faults, easing detection.
  • Removing null does not address broader invalid memory problems such as use-after-free, incorrect pointer arithmetic, and unmapped memory regions.

Hottest takes

"The former is really annoying" — Kinrany
"I don't believe it is possible ... to completely avoid invalid objects" — jonathanstrange
"forgetting about selection bias - yea null ptr errors are easy when you've had years to learn to avoid them" — preommr
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.