Signed word lengths and indexes

Steven Schveighoffer schveiguy at yahoo.com
Tue Jun 15 08:45:55 PDT 2010


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


More information about the Digitalmars-d mailing list