Notation $a^b$ seems to be ubiquitous in mathematics and I think that most of us take it for granted. But, at least to me, it seems that it means totally different things depending on the context.
In terms of general algebraic structures, if $a$ is an element of a magma with product function $(a_1,a_2)\mapsto a_1\cdot a_2$ and $b$ is a positive integer, then $$ a^b=\underbrace{a\cdot a\cdot a...\cdot a}_{b\mbox{ times}} $$ If $a$ is an element of a monoid, then we usually say that $a^0=1$. If $a$ is an element of a group, then $b$ can be any integer.
However, over the field of reals, $a^b=\exp(b\log a)$, and we only allow $a>0$. When working over the field of complex numbers $a^b$ is not even a function. I'm sure that notation $a^b$ arises in other contexts as well.
Why do we use the same notation $a^b$ for operations which seem absolutely different?