Do the theory an techniques of compiler construction vary based on the
type of language being compiled? That is, what is different between
compiling imperative languages vs. compiling functional languages?
What are the similarities?

I have several books on parsing and compiler construction for
imperative languages ([Aho,Sethi,Ullman], [Hollub],
[Wilhelm,Maurer]). And for functional languages ([Jones], [Appel]).
All of these are excellent technical works, but none of them discuss
the high-level aspects of parsing such as which techniques are best
for a given language and a desired result. Any comments?