Compiled vs. Interpreted Languages

I realize that "compiled" and "interpreted" are not strict categories (JIT compilation comes to mind) but the distinction still is perhaps more useful than "static" and "dynamic" since the terms are pretty vague. Now that we've got that out of the way, which is better? Of course any CS teacher would tell you that it depends on what you're doing. But most people prefer to code in one or the other anyway. The one point that I would like to make on the topic

I don't really have a favorite, my two favorite languages are D (compiled) and Python (it's complicated, but I'm gonna call it interpreted). The one point I would like to make about the topic is that much like static websites, you don't need to give up many of the fancy tools that interpreted languages have if you're using a compiled language. D is a great example, since it has foreach and associative arrays and other tasty features.