Another Wart! string.find() [ was: namespace issue? ]

Steven D. Majewski sdm7g at Virginia.EDU
Fri Jun 22 04:19:28 CEST 2001

On 21 Jun 2001, Chuck Esterbrook wrote:

> "Steven D. Majewski" <sdm7g at Virginia.EDU> wrote in message news:<mailman.993163773.29922.python-list at>...
> [snip]
> >
> >   I'ld love to see it fixed, however, I suspect that in this case, 
> >   many lines of installed code trumps Computer Programming for Everybody! 
> > 
> So is it a flaw, relative to CP4E, that sequences start at index 0
> instead of 1? An 'everybody' kind of person would think of the "first"
> element as e[1]. Only someone familiar with pointer arithmetic from C
> or assembly would think that "first" is 0.

No -- that's not a "flaw" , it's an "engineering tradeoff" -- i.e. 
you can't please everyone all the time! 

Zero is natural whenever you are thinking in terms of offsets:
  every ruler starts with an implied 0 inches (or cm. or other).

Zero based indexing makes slice indexing much easier to figure -- 
  one-based indexing would make that more confusing to everyone. 

Lots of other technical fields besides programming use zero based
 indexing -- where do you think C got it ? Probably from mathematics
 or engineering. Most high-school grads should be familiar with 
 the notation. 

Yeah -- there are arguments for 1 over 0, but whatever you choose 
is going to be 'wrong' for somebody, some of the time. 

And not surprising C programmers does have *some* value. 

( But I can't really think of a good reason for string.find to return 
  -1 *except* that it wouldn't surprise a C programmer. ) 

-- Steve Majewski

More information about the Python-list mailing list