Is Index Origin 0 a Hindrance?
Roger Hui


At 2010-07-24 06:16, in response to an e-mail from Morten Kromberg of Dyalog APL, I posted the following article to the J Programming Forum:

     

I have been asked by some APL colleagues about index origin 0 in J. The question is, does the choice of a fixed value of 0 for index origin a hindrance to your work? The question is specifically addressed to “ordinary domain experts”, people with no software engineering in their background and are not professional mathematicians.

In case you did not know, in APL there is a choice known as the index origin, controlled by the variable quad-io, of counting from 1 instead of from 0, affecting the left argument of { and the result of i. , among other things. I will say no more than this to avoid biasing your answers.

         

This survey is of course unscientific and biased (e.g. the people who never took up J because they can not abide by index origin 0 are unlikely to respond). I have tabulated the relevant responses as of 2010-07-26 23:10. Positive opinions of index origin 0 are marked by ; negative opinions are marked by . The salient comment in a response and a link to the response are also included.

  Tom Arneson   land surveyor   I have no problem with J fixing index origin at 0.  
  Leigh Halliwell   mathematics   Occasionally the zero index-origin trips me up; however, it’s one of the peculiarities of the language that I accept in order to use the power of J.  
  Jim Russell   developer with no formal training   Having always considered an index as a way to express an offset from the “first” item, a 0 index origin is, to me, the only sensible option.  
  Devon McCormick   developer with little formal training   I find index origin 0 to be the sensible choice, especially given that we can use _1 to index the last element of an array.  
  June Kim   ?   I am okay with index origin 0. … some of my friends, whom I would call ordinary domain experts without much experience in programming, felt uncomfortable about it, at least in the beginning.  
  Bo Jacoby   ?      
  R.E. Boss   mathematician   The main reason I would prefer an index origin of 1 is because I expect the first, second, third, ... element to have index 1, 2, 3, ...  
  Harvey Hahn   education, music, etc.   Personally, I’ve always felt that a 0-origin was an awkward concept … There are lots of things in life you don’t like, but you learn to live with them. To me, 0-origin is one of them.  
  Henry Rich   software   I think index origin 0 is perfect. What we need is a terminology to replace “first, second, ...etc”.  
  Eldon Eller   EE   Initially the zero origin bit me once in while, but it was a most a minor and transitory annoyance.  
  Neville Holmes   systems engineer
college teacher
  I taught J for a decade or more and can’t recall any problems with fixed origin 0 either in teaching or in student project work.  
  Graham Parkhouse   civil engineer   I always used ⎕io as 1 in APL, so moving to J, this was a major difficulty for me. I accept that supplying the choice of 0 or 1 is not a great idea.  
  Steven Taylor   ?   As strange as it sounds, no choice (with a, “it’s less error prone + more elegant” hunch esp. when working with others) gives me a disproportionate amount of clarity and confidence.  
  Zsbán Ambrus   mathematics   I am disqualified from the survey, and I find zero based indexing much more convenient that one based indexing.  
  Michel Dumontier   mathematics   … this fact [index origin 0] was accepted (acquis in french) for me and I believed the topic closed.  
  Joey Tuttle   physics, EE, engineering maths   I am happy that j has a single/fixed index origin and that it is 0.  
  Ian Shannon   environmental science   0 is the right choice — it make the calculation of indexes cleaner …  
  Chris Burke   finance, insurance   Since people are born at age 0, and durations start at time 0, then ⎕io 0 is very much better than ⎕io 1. Indeed, I would say that incorrect adjustments for ⎕io 1 (e.g. dat[16] not recognized as the value for age/duration 15) was the primary reason for program bugs in that business.  
  Fraser Jackson   econometrics
statistics
  I find J fine as it is with a fixed origin 0.  
  Pablo Landherr   finance   The choice of a fixed value for index origin in general and 0 in particular have made a slight majority of problems easier to code in J compared to APL (where I did most problem solving prior to J).  
  David Porter   EE   Having the index origin set to zero is not a great loss, but it did add one more annoyance to learning the language.  
  Patrick van Beek   actuary   I find index 0 difficult to work when working with arrays in the abstract … but in my work I don’t find origin 0 a hindrance.  
  Alex Rufon   economics   … a fixed value of 0 is not a hindrance to my work.  


created:   2010-07-26 17:05
updated: 2013-09-28 19:10