Imperative programming is closer to what a real machine does. This is a form of programming at a fairly low level, and the more complex your application, the more difficult it will be to understand all the details at such a low level. On the plus side, being close to the machine, you can write fairly efficient code if you are good at it.
Declarative programming is more abstract and higher: with a relatively small amount of code, you can express rather complex relationships in such a way that they are easier to understand.
, , , Prolog Java: , Prolog. , . , , .
, , Java-: . .
, , , , - . .