int64_t age = now - then;  // UNDEFINED BEHAVIOUR if overflow!

  uint64_t age = now - then;  // DEFINED: wraps at 2⁶⁴
Seriously, fuck C. Since this book focuses on safe, reliable, bugfree programs, why not use Rust?

I'm going to go out on a limb and say because rust didn't exist 30 years ago?

Anyhoo... seems interesting. I've been trying to convince Claude to produce a verified JavaCard VM implementation, just for the hell of it, and this probably has a bunch of information to help with that.

[deleted]

Ya gotta start somewhere, and just about every IC starts at some point with C.

IC?

Integrated Circuits.

Integrated circuits don't "start with C". What does that even mean? C is just an interchangeable language the compiler frontend parses.

A microprocessor starts by executing the machine code at the reset vector. This machine code is generated by an assembler or a compiler backend. It has no idea what programming languages are.