"[...] We now understandthat the human mind is fundamentally not a logic engine but an analogy engine, a learning engine, a guessing engine, an esthetics-driven engine, a self-correcting engine. And having profoundly understood this lesson, we are perfectly able to make 'fixed sets of directives' that have some of these qualities.
To be sure, we have not yet come close to producing a computer program that has anything remotely resembling the flexibility of the human mind, and in this sense Ernest Nagel and James Newman were exactly on the mark in declaring, in their poetic fashion, that Gödel's theorem 'is an occasion, not for dejection, but for renewed appreciation of the powers of creative reason.' It could not be said better.
There is, however, an irony to Nagel and Newman's interpretation of Gödel's result. Gödel's great stroke of genius — as readers of Nagel and Newman will see — was to realize that numbers are a universal medium for the embedding of patterns of any sort, and that for that reason, statements seemingly about numbers along can in fact encode statements about other universes of discourse. In other words, Gödel saw beyond the surface level of number theory, realizing that numbers could represent any kind of structure. The analogous Gödelian leap with respect to computers would be to see that because computers at base manipulate numbers, and because numbers are a universal medium for the embedding of patterns of any sort, computers can deal with arbitrary patterns, whether they are logical or illogical, consistent or inconsistent. [...]"
Douglas R. Hofstadter's introduction to Gödel's Proof, Ernest Nagel, James R. Newman. Emphasis mine.
Elegance is not optional
What do I mean by that? I mean that in Prolog, as in most halfway decent programming languages, there is no tension between writing a beautiful program and writing an efficient one. If your Prolog code is ugly, the chances are that you either don't understand your problem or you don't understand you programming language, and in neither case does your code stand much chance of being efficient. In order to ensure that your program is efficient, you need to know what it is doing, and if your code is ugly, you will find it hard to analyse.
Richard A. O'Keefe, The Craft of Prolog