Logical Programming Paradigms