When counting to three you say one two three, not zero one two.
Cardinal numbers: (0,1,2,...) measure finite sets, and ordinal numbers: (first,
second, third ...), identify elements in finite sets. There is no such thing as
zeroth.
The second millenium ended on december 31'th year 2000, not on december 31'th
1999. The year numbers are ordinal numbers: One-origin indexing.
When a car has run 2000 (kilometers or miles) the odometer shifts from 1999 to
2000. The distance is a cardinal number: Zero-origin indexing.
A zero-origin index should not be understood as an ordinal number, but rather
as how may elements have passed before we reach the element we need.
The J-vocabulary says about { :
If x is an integer in the range from -n=: #y
to n-1 , then x{y selects item n|x
from y .
I consider the restriction to be bad design. I would prefer:
If x is an integer, then x{y selects item n|x
from y .
In that way you do not need to know the index origin. A 10-element vector can
be indexed either from 0 through 9 or from 1 through 10, as you prefer. Element
no 10 is the same as element no 0.
- Bo
--- Den lør 24/7/10 skrev June Kim (김창준) <[email protected]>:
Fra: June Kim (김창준) <[email protected]>
Emne: Re: [Jprogramming] index origin 0
Til: "Programming forum" <[email protected]>
Dato: lørdag 24. juli 2010 19.59
On Sat, Jul 24, 2010 at 10:16 PM, Roger Hui <[email protected]> wrote:
> 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.
>
I am okay with index origin 0. I see the reasons, like Dijkstra did[0], but
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. However, when I tell them the index means "interval points"(like
a cursor), they made less mistakes.
You may see some debates on this[1].
[0] E.W. Dijkstra Archive: Why numbering should start at zero (EWD 831)
http://userweb.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html
[1] Why numbering should start at 0 | Lambda the Ultimate
http://lambda-the-ultimate.org/node/1950
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm