Trying to _really_ understand exponents... I am a programmer, but grew up with a pretty weak math education. While I can cobble together enough understanding to build something like these charts solo from raw data, my level of true math literacy has always felt very low in my own opinion.
I recently watched a video that was seductively titled, "What is 0 to the power of 0?" on youtube.
In it, an educator demonstrates that going from $0.9^{0.9}, 0.8^{0.8}, 0.7^{0.7} ...0.1^{0.1}$ shows an odd pattern--somewhere between $0.3$ and $0.4$ the numbers stop going down, and start going up, and if you chase this pattern ($0.000001^{0.000001}$, etc.), you continue approaching $1$.
Now, aside from the fact that I wrote a little sieve to go figure out what's the most precise number javascript can show me as to what that 'splitting' number is, where it starts going up instead of down, the weirdness of that behavior made me realize I don't deeply really seem to understand exponents.
As I've always understood them, the exponent was just a counter for how many times to multiply the base within an operation.
Turns out, as I discovered in my attempts to self-educate, $0^0$ looks to be 1 (though some seem to disagree...?), anything to the 0 power is $1$ (that's irritating, and the kind of thing that makes me hate math--where the hell is that coming from?), and fraction exponents...
...what I'm really getting to is, what the hell is a fractional exponent? What does it really mean? When I picture multiplying a whole number like $7$ by a decimal, like $.5$, I picture the $7$ getting counter $.5$ times, or a jar of quantity $7$ filled up halfway.
What am I supposed to imagine for $7^.5$?
I tried working out my thoughts by writing a little javascript function that calculates exponents. It handles 0,1,negative numbers, and regular numbers all reasonably cleanly, but I really couldn't see how to possibly put a decimal into this framework.
My girlfriend is a mathematician, so I asked her. The best answer she was able to give me (it's hard for us to talk about math--it's like asking a native speaker a question about their language, it's just so hard to understand what it's like to experience not being a native) was (as I understand it), a way around the problem:
Just multiply the exponent by a high enough number that the decimal goes away, and then get the corresponding root of the number after you finish.
Basically, recursion.
I implemented that into my code, and it works. I get something that returns the same as the built-in Math.pow() function in javascript 89% of the time, and disagrees only at extreme precision levels the other 11% of the time.
But I don't feel like I deeply understand what the dance of numbers is that leads $2^{.9}$ to be $1.866[...]$, or, to my original point, what the hell is going on when we move from $0.4^{0.4}$ to $0.3^{0.3}$ (or, more specifically, from $0.367^{0.367}$ to $0.366^{0.366}$, where the downward trend turns upwards mysteriously).
What am I missing about exponents, and why is it so hard to find an explanation in these terms? Is my question just somehow deeply flawed?
Bonus, if it helps, here's my internal thought process for reading an exponent turned into code:

var powerify = function(base, exponent) {
  let i = exponent;

  let answer = 1;

  if (exponent % 1 !== 0) {
    answer = powerify(base, exponent*10) ** .1
  }
  else if (i > 0) {
    while (i > 0) {
        answer = answer * base;
        i = i - 1;
    }
  }
  else if (i < 0) {
    while (i < 0) {
        answer = answer / base;
        i = i + 1;
    }      
  }

  return answer;
}

 A: As long as the exponent is rational and you are dealing with positive numbers, you can rely on the law of exponents $\left(a^b\right)^c=a^{bc}$.  If you are interested in $7^{0.5}=7^{1/2}$ you know that $\left(7^{1/2}\right)^2=7$ so $7^{1/2}=\sqrt 7$.  This establishes the relationship between fractional exponents and roots.  This process can handle any rational exponent.  
All of this works perfectly well as long as you don't ask about $0^0$.  The problem with $0^0$ is that we would like $x^y$ to be a continuous function in both $x$ and $y$.  Unfortunately, if you first set $x$ to $0$ and vary $y$ then $x^y=0$.  If you first set $y$ to $0$ and vary $x$ then $x^y=1$.  There is no way to reconcile that, which we can demonstrate even more clearly using complex variables.  Most mathematics just says $0^0$ is undefined.  Some parts of mathematics find it more convenient to define it, sometimes as $1$ and sometimes as $0$.  
When you get to real exponents we define $x^y=e^{y \log x}$.  There are many routes to get to this definition, but fundamentally they are all motivated by the need to get to it.  This echos the problem with $0^0$ but otherwise works perfectly.
A: I'm not sure if this is exactly what you are looking for (and there are certainly much more technical explanations that can be given), but perhaps a good "geometric" picture of fractional exponents, of the form $a^{p/q}$ can be given as follows.
As a first example, take first $a=2$ and $p/q=1$. Picture this as a line segment with length $2$ - a segment of the number line in $\mathbb{R}$. Now take the case $p/q=1/2$. Clearly, this is a number that squares to be $2$, by the property $(a^b)^c=a^{bc}$. The term "squares" is very suggestive, however - picture now a square in $\mathbb{R}^2$ with area exactly $2$. The side length of such a square is exactly $2^{1/2}$. Repeat for $2^{1/3}$ - picture a cube in $\mathbb{R}^3$ with volume 2. The side length of such a cube must have length $2^{1/3}$. In factor for any fraction $1/q$, you can picture $2^{1/q}$ as being the side length of a $q$-dimensional hypercube with hypervolume $2$!
Now pick your favorite nonnegative real number $a$, and a positive rational number $p/q$. Write $a^{p/q}=(a^p)^{1/q}$. Now by the same logic used for $2^{1/q}$, we can construct $(a^p)^{1/q}$ as the side length of the $q$-dimensional hypercube with hypervolume exactly $a^p$.
This construction obviously doesn't work for real exponents or negative $a$ (although those problems are more subtle), but what about for $0^0$? Here's a possible explanation (that I do not claim to be $100\%$ rigorous, but it paints a fair picture of the issue) for why we cannot define it so easily, using this visualization.
Consider $0^{1/q}$ for any positive integer $q$. This is the side length of a $q$-dimensional hypercube with hypervolume $0$ - clearly, this side length has to be zero for all $q$. We may choose $q$ arbitrarily large so that $1/q$ becomes arbitrarily close to $0$ - this would suggest that we should define $0^0=0$ (formally, in order to ensure continuity of the function $0^x$). But this does not agree with what you have noticed when considering the function $x^x$ - as $x\to0$, $x^x\to1$, not $0$, and so this suggests that we should actually define $0^0=1$ - so we cannot define $0^0$ in a way that makes the function $a^x$ continuous! For this reason we typically choose not to define it at all (except in special contexts).
