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.
-
-
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 -
Replying to @cmuratori @Lokathor and
"Pointer that can't be null" is not a data type in C but it is in Zig and other modern languages it's pretty handy dandy
1 reply 0 retweets 0 likes -
Replying to @andy_kelley @Lokathor and
No I mean it is literally not a _data_ type. It is literally not a type of data. It is a condition on data (that it not be equal to zero). The type of the _data_ has not changed.
1 reply 0 retweets 2 likes
It is also, in my opinion, a useless type of data, since "can't be zero" is a condition that only makes sense when dealing with already-initialized data. But at this point I should stop typing into twitter because it is always unsatisfying.
-
-
Thanks. Twitter will use this to make your timeline better. UndoUndo
-
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.