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? 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.
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.