tag:blogger.com,1999:blog-8699431508730375743.post8737672053383472671..comments2016-07-20T07:15:28.987-07:00Comments on The History of Python: Why Python uses 0-based indexingGuido van Rossumhttp://www.blogger.com/profile/12821714508588242516noreply@blogger.comBlogger15125tag:blogger.com,1999:blog-8699431508730375743.post-36053680585694743602016-02-21T20:57:26.581-08:002016-02-21T20:57:26.581-08:00Hi Eric, thanks for adding that point. In high sch...Hi Eric, thanks for adding that point. In high school I built and used simple digital logic and in college I used CDC assembler, so I'm well aware of the hardware preference for 0-based indexing. This is also of course where C's 0-base indexing comes from. But Python, priding itself in being a high-level language, needs to be able to motivate its position in this matter without reference to the implementation.Guido van Rossumhttps://www.blogger.com/profile/12821714508588242516noreply@blogger.comtag:blogger.com,1999:blog-8699431508730375743.post-42518453050753000232016-02-21T17:04:01.409-08:002016-02-21T17:04:01.409-08:00This is an old post and interesting, but I think t...This is an old post and interesting, but I think there is a hardware angle you aren't considering in indexing. I'm a EE prof, worked at IBM and Motorola previously. Hardware wants zero indexing. Think about a logical decoder (heart of SRAM memory driving word lines for instance). If you have a four bit decoder, you have options of 0 to 15 as the input so you drive out wordline0 to wordline15. 16 doesn't fit. Also, in a reverse FOR loop with a terminating value of zero, you can use the Z bit (zero flag - NAND of all index bits) for free. Many early assembly languages had instructions for this to avoid an explicit check for termination. Interesting to hear the CS perspective.Eric MacDonaldhttps://www.blogger.com/profile/10771737847473635757noreply@blogger.comtag:blogger.com,1999:blog-8699431508730375743.post-41429081931603717462015-06-23T00:12:13.691-07:002015-06-23T00:12:13.691-07:00Time has the notation of 1:?? in the second hour o...Time has the notation of 1:?? in the second hour of the day. What's your issue with the years again? Harald Hoyerhttps://www.blogger.com/profile/11533512875002547507noreply@blogger.comtag:blogger.com,1999:blog-8699431508730375743.post-57028302766911523612013-10-27T11:34:28.516-07:002013-10-27T11:34:28.516-07:00Over on python-ideas we're discussing negative...Over on python-ideas we're discussing negative strides now. The best way to use them is to also use negative indexes. E.g. a[::-1] == a[-1:-1-len(a):-1].Guido van Rossumhttps://www.blogger.com/profile/12821714508588242516noreply@blogger.comtag:blogger.com,1999:blog-8699431508730375743.post-1710778780105666982013-10-27T03:50:32.381-07:002013-10-27T03:50:32.381-07:00That Cilk thing goes against the entire STL by not...That Cilk thing goes against the entire STL by not using .start() .end() half-closed intervals. What were these guys thinking, or were they even thinking at all.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-8699431508730375743.post-82404579778871798742013-10-26T12:24:54.971-07:002013-10-26T12:24:54.971-07:00You seriously think it makes more sense to have a ...You seriously think it makes more sense to have a year 0? If the FIRST year isn't year 1, then you end up with the SECOND year being year 1. Yeah, that makes sense. NOT.Phaedrushttps://www.blogger.com/profile/12493104900973331346noreply@blogger.comtag:blogger.com,1999:blog-8699431508730375743.post-47173827090908485842013-10-26T10:53:59.042-07:002013-10-26T10:53:59.042-07:00You've seen my code on CheckIO. More often tha...You've seen my code on CheckIO. More often than you think. :-P<br /><br />But seriously... not only strings, any indexable iterables have same problem. And you haven't seem to have problems with breaking code (especially without any confirmed examples) before. At least in Py4K? :-)Vekyhttps://www.blogger.com/profile/12207072339468136950noreply@blogger.comtag:blogger.com,1999:blog-8699431508730375743.post-3912709165579433622013-10-25T08:53:14.876-07:002013-10-25T08:53:14.876-07:00I agree that slices with negative strides are conf...I agree that slices with negative strides are confusing. We can't change them (it would break too much code) but you can usually avoid them by using the reversed() function instead, e.g. ''.join(reversed("abcdefghijklmnop"[3:])). Still not ideal, but how often do you need a string backwards (apart from palindrome puzzles :-)?Guido van Rossumhttps://www.blogger.com/profile/12821714508588242516noreply@blogger.comtag:blogger.com,1999:blog-8699431508730375743.post-83588773143302192752013-10-25T02:28:05.556-07:002013-10-25T02:28:05.556-07:00Except the indices as boundaries analogy is broken...Except the indices as boundaries analogy is broken. :-(<br /><br />"abcdefghijklmnop"[:3:-1]<br /><br />Note that it ends in e, not in d as it should if you consider 3 as a boundary.<br /><br />When I first encountered this, I thought it was a bug. Boundaries metaphor was something I deeply embraced.<br /><br />Maybe it could stay that way? Guido, can slice semantics with negative stride be changed?Vekyhttps://www.blogger.com/profile/12207072339468136950noreply@blogger.comtag:blogger.com,1999:blog-8699431508730375743.post-71300797495576905482013-10-25T01:53:36.667-07:002013-10-25T01:53:36.667-07:00Your mention of graphics coordinates reminds of an...Your mention of graphics coordinates reminds of another index holy war about the location of the origin: top-left or bottom-left?<br /><br />I like ot's description of indices as boundaries rather than labels. I think it gives both the 0th and 1st camps something to hang their hats on :).MLWhttps://www.blogger.com/profile/11501483710006076616noreply@blogger.comtag:blogger.com,1999:blog-8699431508730375743.post-38238546012614377322013-10-24T17:17:10.313-07:002013-10-24T17:17:10.313-07:00If you count objects 0, 1, 2 you wind up with a va...If you count objects 0, 1, 2 you wind up with a value that's smaller than the number of objects. 0-based indexing works because it is <i>not</i> ordinal.John Cowanhttps://www.blogger.com/profile/11452247999156925669noreply@blogger.comtag:blogger.com,1999:blog-8699431508730375743.post-75096460930117342782013-10-24T10:37:39.427-07:002013-10-24T10:37:39.427-07:00Y combinator's thread on this topic mention th...Y combinator's thread on this topic mention that in 1985 Inside Macintosh explained why graphics coordinates are 0-based: https://news.ycombinator.com/item?id=6601515 (search for "Macintosh").Guido van Rossumhttps://www.blogger.com/profile/12821714508588242516noreply@blogger.comtag:blogger.com,1999:blog-8699431508730375743.post-1997638357662432942013-10-24T10:36:56.259-07:002013-10-24T10:36:56.259-07:00As I pointed out in my G+ post, Dijkstra did not c...As I pointed out in my G+ post, Dijkstra did not consider start:size as an option. Sadly, that's the way C++ seems to be going (https://www.cilkplus.org/tutorial-array-notation). Guido van Rossumhttps://www.blogger.com/profile/12821714508588242516noreply@blogger.comtag:blogger.com,1999:blog-8699431508730375743.post-34272854180929167512013-10-24T10:24:20.616-07:002013-10-24T10:24:20.616-07:00Dijkstra had a monograph about this: https://www.c...Dijkstra had a monograph about this: https://www.cs.utexas.edu/~EWD/transcriptions/EWD08xx/EWD831.html<br /><br />Also I should point out that the correct first number is zero, and kids should be taught to count "0, 1, 2, ...". It fixes a lot of problems that you get if you start a 1. In this light, there's no argument at all for starting indexing at 1.Lawrence Kesteloothttps://www.blogger.com/profile/08175600004629340681noreply@blogger.comtag:blogger.com,1999:blog-8699431508730375743.post-42774959346138078152013-10-24T08:49:58.907-07:002013-10-24T08:49:58.907-07:00To anyone who prefers 1-based indexing: you are th...To anyone who prefers 1-based indexing: you are the same people who screwed up the calendar, starting at year 1 and calling the 1900s the 20th century (and arguing that the year 2001 ought to be the start of the next millennium). Haven't you done enough damage? :-)Guido van Rossumhttps://www.blogger.com/profile/12821714508588242516noreply@blogger.com