One thing I've wondered about with such systems as performance: I would be nervous about pathological cases leading to really bad performance or even DOS attacks. My understanding of Prolog in particular is that sometimes in order to get your program to run to completion requires a nontrivial understanding of the backtracking algorithm them so you can judiciously place cuts, etc.
Inspired by Will Byrd's many presentation on quines, this leads me to wonder: what if you had a logic language that does not run at runtime, but that generates code with certain properties according to some set of rules? It's such a thing possible? Are there theoretical results on that subject?