---
created_at: '2016-12-15T17:19:55.000Z'
title: Why numbering should start at zero (1982)
url: https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html
author: feynma
points: 161
story_text: 
comment_text: 
num_comments: 216
story_id: 
story_title: 
story_url: 
parent_id: 
created_at_i: 1481822395
_tags:
- story
- author_feynma
- story_13186225
objectID: '13186225'

---
Why numbering should start at zero

To denote the subsequence of natural numbers 2, 3, ..., 12 without the
pernicious three dots, four conventions are open to us  
  

a) 2 ≤ *i* \< 13 b) 1 \< *i* ≤ 12 c) 2 ≤ *i* ≤ 12 d) 1 \< *i* \< 13

Are there reasons to prefer one convention to the other? Yes, there are.
The observation that conventions a) and b) have the advantage that the
difference between the bounds as mentioned equals the length of the
subsequence is valid. So is the observation that, as a consequence, in
either convention two subsequences are adjacent means that the upper
bound of the one equals the lower bound of the other. Valid as these
observations are, they don't enable us to choose between a) and b); so
let us start afresh.

There is a smallest natural number. Exclusion of the lower bound —as in
b) and d)— forces for a subsequence starting at the smallest natural
number the lower bound as mentioned into the realm of the unnatural
numbers. That is ugly, so for the lower bound we prefer the ≤ as in a)
and c). Consider now the subsequences starting at the smallest natural
number: inclusion of the upper bound would then force the latter to be
unnatural by the time the sequence has shrunk to the empty one. That is
ugly, so for the upper bound we prefer \< as in a) and d). We conclude
that convention a) is to be preferred.

Remark  The programming language Mesa, developed at Xerox PARC, has
special notations for intervals of integers in all four conventions.
Extensive experience with Mesa has shown that the use of the other three
conventions has been a constant source of clumsiness and mistakes, and
on account of that experience Mesa programmers are now strongly advised
not to use the latter three available features. I mention this
experimental evidence —for what it is worth— because some people feel
uncomfortable with conclusions that have not been confirmed in practice.
(End of Remark.)

\*                \*  
\*

When dealing with a sequence of length *N*, the elements of which we
wish to distinguish by subscript, the next vexing question is what
subscript value to assign to its starting element. Adhering to
convention a) yields, when starting with subscript 1, the subscript
range 1 ≤ *i* \< *N*+1; starting with 0, however, gives the nicer range
0 ≤  *i* \< *N*. So let us let our ordinals start at zero: an element's
ordinal (subscript) equals the number of elements preceding it in the
sequence. And the moral of the story is that we had better regard —after
all those centuries\!— zero as a most natural number.

Remark  Many programming languages have been designed without due
attention to this detail. In FORTRAN subscripts always start at 1; in
ALGOL 60 and in PASCAL, convention c) has been adopted; the more recent
SASL has fallen back on the FORTRAN convention: a sequence in SASL is at
the same time a function on the positive integers. Pity\! (End of
Remark.)

\*                \*  
\*

The above has been triggered by a recent incident, when, in an emotional
outburst, one of my mathematical colleagues at the University —not a
computing scientist— accused a number of younger computing scientists of
"pedantry" because —as they do by habit— they started numbering at zero.
He took consciously adopting the most sensible convention as a
provocation. (Also the "End of ..." convention is viewed of as
provocative; but the convention is useful: I know of a student who
almost failed at an examination by the tacit assumption that the
questions ended at the bottom of the first page.) I think Antony Jay is
right when he states: "In corporate religions as in others, the heretic
must be cast out not because of the probability that he is wrong but
because of the possibility that he is right."

  

Plataanstraat 5  
5671 AL NUENEN  
The Netherlands 11 August 1982  
prof.dr. Edsger W. Dijkstra  
Burroughs Research Fellow

Transcriber: Kevin Hely.  
Last revised on Fri, 2 May 2008.
