Why did the **Ancient Indians invent Zero **?

To indicate Nothing in a place value based numerical system, like the binary, decimal etc.

So in the number 101, 0 means there is NO value in the tenth’s place. If there was no zero then 101 should have been written as 11, which leaves no room to differentiate between actual 11 and 101. The introduction of a new symbol, **o **to indicate Nothingness solved this problem. In other words, Zero was invented by ancient Indians NOT as a main concept, instead it was a feature required by the place value system which they originally invented.

If a team scores zero goals in a soccer match, it means the team has scored NO goals.

If a student scores zero marks in an exam, it means the student has scored NOTHING

and so on

Now let us see how the idea of zero has become *non-zero *in some of the contexts.

The arrays used in computer programming languages have a zero based index!

For those who dont know what an array means in a software program, well it is just a sequential collection of things. The thing can be a number, a text, an object etc.

In an array this each thing can be accessed by just using a number (called index) which denotes the position of that thing in the array.

An example of an array would be

Weekdays = [Sunday,'Monday,'Tuesday,'Wednesday,'Thursday,'Friday,'Saturday]

Here *Weekdays *is an array containing a list of the names of the days of a week.

Now there is something *non-zero *about zero here. Zero is not Nothing here, its actually Something!

For instance, to access the first item Sunday in this array, we will have to say Weekdays[0] !!

This is what we mean when we say, zero-based index, i.e item positions have to be counted as 0,1,2,3 etc, NOT as 1,2,3,4 etc

Shouldn’t it have been Weekdays[1], since Sunday is the first term, not zeroth in the array?

All C-like languages (C,C++,Java,C# etc) implement this concept of zero based index.

Some Non C-like languages like Visual Basic on the other hand followed one based index, even though off late Visual Basic.Net has converted to zero based index! There is **conversion **even in computer programming languages

So in these C-like languages which rule almost the entire computer programming industry, when software developers say Zeroth index, they actually mean First Item!

This concept of non-zero usage of zero is not just limited to arrays or computers either. Have a look at some other cases.

The ground floor of a building in US is indicated in an elevator by 1′ (which makes sense), where as in India it is 0′! 0 going by its mathematical definition means there is no such floor, so it shouldn’t be there in an elevator at all unless and until that elevator takes us on a **time travel **

The current Gregorian calendar does not have 0 CE! Because 0 CE means there is no such year! The calendar directly jumps from 1 BCE to 1 CE which is quite natural when you consider the **definition **of Zero

Having said this, why do we start with zeroth index in almost all computer programming languages?

The reason is because it makes things easy in terms of computational purpose. Suppose there are N items in an array, then the zero based index means representing each item’s index as

0 __< __i < N

On the other hand, using 1 based index would mean

1 __< __i < N+1

As you can see, the ease of zero based index is,

- In terms of representation you dont need any number greater than the number of elements N
- You dont need additional overhead of adding 1 every time you compare with the upper bound, in other words in zero based index the upper bound is the number of elements itself, where as in 1 based index it is NOT.
- The zero based index of an item also denotes the number of items prior to the current item

Now what about 1 __< __i __< __N ? Well, in the above two cases the difference between the bounds gives the number of items in the array, where as in this case it gives N-1 In other words, zero based index provides more scope for optimization while compiling.

__Division By Zero __

I have asked this to question to many people, and sadly nobody gave me a satisfactory answer! The question is of a very elementary mathematical concept. How can we say that

Division of any number by zero = infinity

We have been doing this mathematics ever since our primary school. But to accept something without inquiring into its accuracy, is unscientific. I dont do math without understanding it, instead I prefer not to do it if I dont understand it, for I am not a computer to do things without understanding what it means. Deep Blue might have defeated Kasparov in Chess, but it never understood what it was doing/calculating while playing with Kasparov

I have seen a lot of people who do differential calculus without even understanding the meaning of limit, continuity, differentiation etc. They simply apply formula and get answers without even understanding what they are doing, just like how machines(computers) work!

If we solve problems with such an approach, then we get lost into the symbols of mathematical equations and we end up wandering on the path instead of marching firmly towards the destination.

I am not saying dont do mathematics. All I am saying is dont do mathematics without understanding what you are doing. Summation of indices in tensors without understanding the purpose is a total waste of time and energy. Abstraction at the cost of understanding is of no use.

If we do mathematics without understanding what exactly we are doing, then we wont even know when we are wrong, and there are very little chances that we will discover it, unless and until we happen to check the correct answer.

Not that we wont do mistakes if we understand what we are doing. But the chances are less, or at least we will *understand *the mistake!

Coming back to division by zero, it simply means, division by Nothing. Now how can that become infinity?

We should remember that while multiplication is repeated addition, division is repeated subtraction. So 23 means repeatedly add 2, 3 times. Where as 6/3 means how many times can I repeatedly subtract 3 from 6 till I run out of everything in 6?

So when we say 30=0, we mean dont add 3, not even once, which means there will be nothing left which is *Zero. *

On the other hand, 6/0 means how many times can I remove *Nothing *from 6 till I run out of everything in 6? Well, as many times as we want, because no matter how many nothing’s we remove from 6, the 6 still remains!! So any number divided by zero is infinity, because you can remove infinite nothings out of something!

Now what about zero divided by something? For instance 0/6?

Well, here it means how many sixes can I remove from Zero? The answer is none! Because zero is Nothing, there is nothing you can remove from zero. So zero divided by a number is *Zero. *

Okie, finally what about zero divided by zero (0/0)?

What it means is, how many nothings can I remove from nothing till nothing is left?

Well, Undefined is a polite mathematical way of saying, the question is stupid

Pingback: HitXP » Vedic Science and Modern Science - by Gurudev

Pingback: C,or C++ Developer–Learn Asset Liability Models–Hi Growth Spot … « C Programming For The Absolute