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
  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