Re:Teaching Programming Languages by Experimental and Advers...
by elfprince13 on Monday May 07, 2018 @04:22PM
(#17016174)
Yeah, debugging possible outcomes of undefined behavior in C/C++ is pretty much exactly a mystery language exercise.
With older compilers, the usual question is "Will `-2 >> 1` perform sign extension or not?" With modern compilers, the usual question is "What arbitrary constant can the compiler choose for `-2 >> 1` to maximize the number of provably dead code paths?"
That includes teaching the very point you're talking about. There is nothing in the mystery language approach that precludes having programs whose behavior is non-deterministic, and this would then show students to prepare for it. Indeed, it's an excellent kind of mystery language, by providing a sandboxed version that can focus precisely on non-determinism.
(I will not reveal whether such behavior exists in the current suite or not, to avoid giving away solutions.)