Prolog is known to be a difficult language to master. It does not have the familiar control primitives used by languages like RATFOR, ALGOL and PASCAL so the system does not give too much help to the programmer to employ structured programming concepts.
Also, many programmers have become used to strongly typed languages. Prolog is very weakly typed indeed. This gives the programmer great power to experiment but carries the obvious responsibility to be careful.
Another major difference is the treatment of variables ---special attention should be given to understanding variables in Prolog.
Prolog provides a search strategy for free ---there is a cost. The programmer has to develop a methodology to handle the unexpected consequences of a faulty program. In particular, pay careful attention to the issue of backtracking.
It is usual to assume that telling people how they can go wrong is an encouragement to do exactly that ---go wrong. The approach taken here is to make the known difficulties explicit.