Prolog Resources

Prolog is a logic programming language. As such, it can seem downright bizarre to people who are experienced with things like C++ or Perl. The idea is very simple. In a program you define facts and rules (the relationships between the facts). And based upon this, you can perform queries. Yet with these simple functions, a great deal can be done

To give you some idea of the power of Prolog, it was designed to do natural language processing. You have probably heard of ELIZA — one of the first chatbots ever written. That is the kind of thing Prolog was designed to do.

In fact, there are Prolog versions of ELIZA online. But this is just the start. It is widely used in a number of areas that we think of broadly as "artificial intelligence," especially in expert systems.

How Prolog Works

Prolog can be confusing for people who have experience with procedural languages. Although it certainly has procedural aspects to it, it is mostly a matter of creating a system of facts and how they relate. Then you let Prolog manage the details of how it is done. Procedural programming usually involves asking a lot of "if" questions. Prolog has that aspect built into the data system.

To get a basic idea about Prolog, we need to talk about its three fundamental aspects: facts, rules, and queries.

  • Facts: these are just what you would think. It tells the system some information. In the following example, we are declaring that Heather likes Thomas:


    • likes(heather,thomas).

  • Rules: these create logical expressions. They use things like the :- operator, which basically means "if:


    • likes(thomas,heather) :- likes(heather,thomas).

    This states that Thomas likes Heather if "Heather likes Thomas" is true. Note that the original fact is an implicit rule that could have been written as:


    • likes(heather,thomas) := true.

  • Queries: these allow us to ask the system questions. For example:


    • ? likes(thomas,heather).

    This asks the question, "Does Thomas like Heather?" And Prolog would answer back, "yes." This is because we first established that Heather liked Thomas with a fact. Then we created a rule that stated that Thomas liked Heather if she liked him.

Another important aspect of Prolog is its use of variables. You may have noticed how all of the examples provided thus far are lower case. In Prolog, an element (called an "atom") that begins with an upper case letter is a variable. So imagine that we wanted to find out what friends Heather had, we could create a variable Friends to do this:

? likes(heather,Friends).

This asks the question, "Who does heather like?" And Prolog loads Friends with whatever has been defined. In our case, it is Thomas. But it could be a list of people.

Resources

Now that you have a basic idea of what Prolog is all about, let's look at some resources for you to get going as a logic programmer.

Tutorials

Video Tutorials

In addition to the standard tutorials, there are number of good video tutorials on Prolog. They are a surprisingly easy way to learn the fundamentals.

  • Derek Banas's Prolog Tutorial: this is an excellent hour-long video tutorial that gets you going from the very beginning: installing Prolog on your computer.
  • Programming In Prolog: this is The Simple Engineer's four part video introduction using SWI-Prolog, which runs on just about everything.
  • Logic Programming: this is part of a lecture series by by Pallab Dasgupta on artificial intelligence. This one is on logic programming over all. There is also a follow-up lecture on Prolog specifically.

Prolog Books

If you are really interested, you may want to check out a book, which can take you through the subject more thoroughly.

Prolog Implementations

There are various free Prolog compilers and interpreters available.

  • Toy Prolog Interpreter: this is an online interpreter from Monash University that is a great tool for checking out little bits of code. It's especially good for using with tutorials before you go to the bother of installing a compiler on your computer.
  • SWI-Prolog: this is a widely used Prolog implementation available for pretty much every platform.
  • GNU Prolog: this is Daniel Diaz's free compiler.
  • Free Prolog Compilers and Implementations: The Free Country's list of other Prolog implementations.

Other Resources

There are lots of other resources available. Some of it dates back a long way, so be aware that some of the information can be out of date.

Summary

Whether you want to focus on it or just use it to complement your other programming tools, Prolog is a great language to study. As a logic programming language, it gets you to think about problems in less procedural ways. With the resources here, you can learn and advance in your Prolog programming.