I've recorded the compiler podcast for http://handmade-seattle.com and boy do @andy_kelley and @TheGingerBill DELIVER. Here's a fascinating (and edited) excerpt on default values
#programming #gamedevpic.twitter.com/VoaC8yM3zS
-
Show this thread
-
"Default to zeroed and be meaningful" sounds like a neat goal, but also like one that doesn't really pan out as soon as your program gets any level of complexity.
2 replies 0 retweets 1 like -
Replying to @Lokathor @AbnerCoimbre and
I disagree. I introduced this a long time ago and called it "ZII", "zero is initialization". It's by far the best way to program that I have found. I use it everywhere.
1 reply 0 retweets 12 likes -
Replying to @cmuratori @Lokathor and
(You can watch me acronymify it for the first time here: https://guide.handmadehero.org/code/day341/#1684 …)
2 replies 0 retweets 4 likes -
Replying to @cmuratori @Lokathor and
Here's an example of Valgrind catching a bug and pointing out a stack trace directly to the problem. Second screenshot shows the bug going undetected because of zero initialization.pic.twitter.com/DGv8A4n63l
1 reply 0 retweets 7 likes -
Replying to @andy_kelley @cmuratori and
This works in C too. The problem with "ZII" is the same problem as null pointers: you have communicated to the compiler that zero is a valid state and therefore the type system and and other static analysis tools cannot help you find bugs.
2 replies 0 retweets 4 likes -
Replying to @andy_kelley @Lokathor and
But that isn't ZII code in the first place. ZII code means that the initial state of zero is a valid state of the program. You wrote a program where zero _isn't_ a valid state! You have two valid states, neither of which are the zero state.
1 reply 0 retweets 5 likes -
Replying to @cmuratori @andy_kelley and
I think you are confusing ZII with "clear everything to zero but otherwise the program is the same", which is not ZII at all.
1 reply 0 retweets 2 likes -
Replying to @cmuratori @Lokathor and
ZII cannot be used with all data types. As a simple example consider a pointer which is never supposed to be null - which is many if not most pointers. Zero initializing such a pointer gives it the wrong value.
2 replies 0 retweets 0 likes -
Replying to @andy_kelley @Lokathor and
"Pointer that can't be null" is not a data type, it's a data type plus a condition. ZII obviously cannot be "used with all conditions" because the definition of ZII is that it is telling you that zero is the default state of everything. But that's the point of it!
2 replies 0 retweets 6 likes
The point of ZII is that it is the right condition to use, because app memory is always zero on allocation, and thus by definition if you structure the program this way, you have no overhead while still having initialization determinism.
-
-
Replying to @cmuratori @Lokathor and
(1) not true for embedded and other OS's (2) the hot path is going to be using recycled memory from an allocator in which case the memory is undefined, not 0
1 reply 0 retweets 2 likes -
Replying to @andy_kelley @cmuratori and
I think the point of disagreement with the two philosophies is fundamentally what the purpose of a type system is for and what you think it can possibly do.
1 reply 0 retweets 1 like - Show replies
New conversation -
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.