Signed word lengths and indexes

Don nospam at nospam.com
Tue Jun 15 10:54:56 PDT 2010


Steven Schveighoffer wrote:
> On Tue, 15 Jun 2010 11:28:43 -0400, BCS <none at anon.com> wrote:
> 
>> Hello Steven,
>>
>>> On Tue, 15 Jun 2010 08:49:56 -0400, Pelle <pelle.mansson at gmail.com>
>>> wrote:
>>>
>>>> On 06/15/2010 02:10 PM, Steven Schveighoffer wrote:
>>>>
>>>>> On Tue, 15 Jun 2010 07:30:52 -0400, bearophile
>>>>> <bearophileHUGS at lycos.com> wrote:
>>>>>> Steven Schveighoffer:
>>>>>>
>>>>>>> i is unsigned, and therefore can never be less than 0. It's
>>>>>>> actually a clever way to do it that I've never thought of.
>>>>>>>
>>>>>> Clever code is bad. It must be minimized. In some rare situations
>>>>>> it becomes useful, but its usage must be seen as a failure of the
>>>>>> programmer, that was unable to write not-clever code that does the
>>>>>> same things.
>>>>>>
>>>>> Clever code is bad? What are you smoking? In my opinion, clever code
>>>>> that is clear and concise should always be favored over code that is
>>>>> unnecessarily verbose.
>>>>>
>>>> Clever code is bad because you have to think a couple of times more
>>>> every time you see it.
>>>>
>>> This is a temporary problem.  Once you get used to any particular
>>> coding  trick, you understand it better.
>>>
>>
>> People cutting you off on the road is a temporary problem, once you 
>> tell everyone off, they will understand better.
>>
>> Your statement might have merit if the "you" in it were the specific 
>> "you" rather than the universal "you".
> 
> In fact, I meant the specific you.  Once a person gets used to any 
> particular coding trick, that person will understand it better when the 
> trick is encountered again.  This is a basic principle of learning.
> 
>>
>>>> Also, it looks wrong.
>>>>
>>> Why?  i is unsigned, therefore >= 0, and must be < length.  That seems
>>> reasonable and correct to me.
>>>
>>
>> It looks wrong because i only gets smaller. People are hardwired to 
>> think about continues number system, not modulo number system (explain 
>> that 0 - 1 = -1 to a 6 year old; easy, explain that 0 - 1 = 2^32-1 to 
>> them, good luck). Yes we can be trained to use such system, but most 
>> people still wont think that way reflexively.
> 
> It's really easy to explain.  Use an odometer as an example.  And we 
> don't have to be specific in this case, you can substitue 'some very 
> large number' for '2^32 - 1'.
> 
> Besides, why does a 6-year old have to understand a for loop?  D doesn't 
> cater to people who can't grasp the modulo arithmetic concept.
> 
> I think that this discussion is becoming pointless.  Let's just accept 
> that we don't have to review code for one another, and we like it that 
> way :)
> 
> -Steve

I would say, if you have trouble understanding that trick, you should 
NOT be using unsigned arithmetic EVER. And I agree that most people have 
trouble with it.


More information about the Digitalmars-d mailing list