Hi!

> Because it's explicit, and incrementing null is mathematically
> unintuitive. After all, null does not exist anywhere in the set of

It is well-established in programming that default value for numeric
types is 0 (many Java IDEs, for example, will explicitly tell you if you
initialize a numeric value to 0 that it's not necessary). It is also
well established that natural conversion of null to numeric is 0. I
don't see anything non-intuitive here. Even if you have no idea about
programming at all, how do you start counting? You had nothing, than
one, then two, etc. You don't count like "did I start counting? No? Then
nothing. Did I start again? Oh, now I did, then it's one. Did I start
again? Oh yes, I did already, so it's two.". Nobody counts like that.
It's completely non-intuitive and that's why I called it a clunker. It's
working around language trying to be "helpful" but ending up forcing
extra work because it looked "cleaner" to somebody.

> ?? Let's you go "I know this index may not exist, if it doesn't, use 0
> instead". No funky type coercions that are in no way apparent from
> looking at the code.

Everybody - I mean literally everybody, I have not seen any exceptions I
can think of over my 30+-year career in software - wants to start from 0
if counting wasn't started yet. If they didn't, there would be explicit
initialization beforehand, you don't just suddenly forget you want to
start counting from 100, it's an unusual thing that you remember.
Starting from 0 you don't have to remember because everything starts
from 0.

There's no case for it being anything else. There's no need to make it
explicit - nobody would imagine you mean anything but that, because
nobody ever does anything but that ever. Spelling it out is just wasting
time for the sake of being "strict". No added value.

> To use the analogy someone posted elsewhere... the training wheels are
> coming off. Time to be responsible and type those few extra characters
> to be clear on your intent.

Removing training wheels doesn't mean putting a boot on instead. No need
to make something harder just for the sake of forcing people to
explicitly acknowledge the situation that is obvious for everybody
anyway. There can be only one intended way this construct could work,
and it should work this way without spelling it out explicitly.

-- 
Stas Malyshev
smalys...@gmail.com

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to