Is there a more divisive is issue in all of mathematics? It seems to me to be the single most popular topic in just about every open online math forum. At the "Ask A Mathematician" forum, a single, ongoing thread (since December 2010) on this topic has perhaps hundreds of postings in it!
Following is a number-theoretic rationale for leaving 0^0 undefined. Unlike most if not all arguments for this approach presented elsewhere, it makes no use of the concept of a limit or the set of real numbers.
There are precisely two binary functions on the set of natural numbers that satisfy the usual Laws of Exponents. One has 0^0 = 1, the other has 0^0 = 0. At all other points, they agree.
If e and e' are binary functions on N (including 0) such that
(1) for all x in N, if x=/=0 then e(x,0)=1 and e'(x,0)=1
(2) for all x,y in N, e(x,y+1)=e(x,y)*x and e'(x,y+1)=e'(x,y)*x
then it can be shown that, irrespective of the values of e(0,0) and e'(0,0), we have
(1) for all x in N, if x=/0 then e'(x,0)=e(x,0) (trivial)
(2) for all x,y in N, if y>0 then e'(x,y)=e(x,y)
Therefore, every exponential function on the set of natural numbers is identical except for the value assigned to 0^0. But there are only two such possibilities for 0^0.
If the Product of Powers Rule is to hold, then we must have
0^0 = 0^(0+0) = 0^0 * 0^0
0^0 = 0^0 * 0^0
Therefore, 0^0 = 0 or 1. To my knowledge, there is no purely number-theoretic justification for eliminating either possibility.
Given this ambiguity, the prudent course is to leave 0^0 undefined (like division by zero), especially in general purpose programming languages. Currently, most programming languages seem to have 0^0 = 1.