Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re: Why is $. not zero-based?

by december (Pilgrim)
on Dec 29, 2002 at 21:09 UTC ( [id://222960]=note: print w/replies, xml ) Need Help??


in reply to Why is $. not zero-based?

It feels right. The first line is line 1, line 0 is (between) nothing and line 1. When you edit a file, you are writing on line 1, the first line in the file. That's because "line" is actually already a (human) abstraction. There is no need to start counting from zero, it's counter-intuitive; the first line you write on, is line 1. Nothing to do with maths.

This is different from an array; you need to fill zero, to come at offset 1. Arrays are historically connected to memory-offsets, which is a mathematical and exact reference rather than a human abstraction.

Your confusion lies understandably where the 'mathematical' fact seperates from common language and conceptions. Actually, we have been thought wrongly to count starting from one, and we should in real life start counting from zero, instead of one. That would be more mathematical correct. And then, the first line would be 'line 0', because you don't have 1 complete line yet before that first line has been finished. Pffft. :)

Apparently the concept of 'zero' being the 'first' element is not so easy for our human minds to understand.

Replies are listed 'Best First'.
Re: Re: Why is $. not zero-based?
by sauoq (Abbot) on Dec 29, 2002 at 21:44 UTC
    Actually, we have been thought wrongly to count starting from one, and we should in real life start counting from zero, instead of one.

    That's ridiculous. Zero is the number we use prior to counting the first thing in a collection of things. If you are holding an apple in your hand, it doesn't make much sense to say, "I have zero apples in my hand," but it does make sense to say that when your hands are empty.

    Indexing arrays is not the same as counting. With arrays it is convenient to think of the index as the number of spaces you need to move from the first one to get the element you need. If you need the first element, you need to move zero spaces. If you need the second element, you need to move one space. Etc. It's only a matter of conceptual convenience that we translate that into thinking of arrays as containing a "0th" element.

    -sauoq
    "My two cents aren't worth a dime.";
    
Re: Re: Why is $. not zero-based? (Why 0 based exist)
by gmpassos (Priest) on Dec 30, 2002 at 03:02 UTC
    I agree with him! Is for humman abstraction. An array or string byte position need to start from 0 because if you want no manipulate it, mathematical you need to count from 0, or some counts can be wrong!

    Note, $. is used for warnings outup too!

    But the idea to count from 0 in the real life!!! No! ;-/

    We count to say how many things we have, math star from here. 0 was created, and a big invention, to can count bigger amounts, but with the same symbols, and to represent the null too! If we count from 0, we need to invent another "0" symbol for null!

    I say again, we count arrays from 0 only to manipulate it better. Is easier to make an algorithm that count from 0!For example, the subsrt() command:

    substr($var , 0 , 2) ; substr($var , 2 , 2) ;
    You use the 2 to say where the 1st substr ends and to say "where" the 2nd substr start! If we count from 1 you need to always recount the values for start and end:
    substr($var , 1 , 2) ; substr($var , 3 , 2) ;

    Graciliano M. P.
    "The creativity is the expression of the liberty".

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://222960]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (5)
As of 2024-04-19 20:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found