I think it's a great question, so I'm going to re-ask it here: What do YOU use Prolog for?
One reason why I'm interested in Prolog is because I used to work at a semantic web company[1], and it seems to me like Prolog could work well in that domain.
Thanks for posting this resource. I'd love to learn more. So much to do, so little time!
I try to write a little database system in Haskell, inspired by Prolog, because it seems very natural and simple to query Prolog.
If you have lots of different relations between data, Prolog is a good choice.
The father of Erlang, Joe Armstrong, lauds this language every time he gets a chance. And I think the hate on Erlang syntax comes from the fact that a first stab at Erlang was done with Prolog. But I actually like the Erlang syntax after I got used to it. It reads like English ~
There's a great article describing the start of Erlang as a Prolog metainterpreter. It's very accessible, at least I can follow it with my month old Prolog knowledge and it's quite impressive to watch as the interpreter goes from nothing to basic concurrency in a few lines of code:
I've looked at and read a bunch of different Prolog books. In my opinion the best one is `Programming in Prolog: Using the ISO Standard' by Clocksin & Mellish. It's actually one of my favorite programming books. Do all the exercises!
If you would like a book, I cannot recommend "The Art of Prolog" by Sterling and Shapiro enough. It gives a very understandable introduction to the language and is focused on teaching you how to approach different problem spaces while "thinking" in Prolog.
I recently started reading http://www.learnprolognow.org/ and the first few chapters have been excellent. There are exercises and practical sections at the end of each chapter too (unfortunately I haven't had time to look at them in detail yet).
I'd like to learn Prolog and Logic Programming but I don't know when it's better than the other paradigms, its shining moment. Could anybody help me?
I mean, Imperative Programming shines when you aim for efficiency in the usage of the computer resources. Functional Programming shines when you need concurrency and parallelism. Object Oriented Programming shines when you are building a GUI. All these paradigms have their sweet spot and will make your life easier in certain situations.
What's Logic Programming sweet spot? I've read about puzzle games as good examples for this paradigm, but I suppose there are stronger examples for it. Maybe AI? Is it used in that field?
Edit: I have just read roberthahn comment, thanks for your insight and the link!
Check out Datalog the query language used to interact with Datomic, www.learndatalogtoday.org
William Byrd & Daniel Friedman wrote a book called the Reasoned Schemer, which walks through the implementation of a Prolog like logic language called MiniKanren, check out a recent presentation they gave where they show quite a few interesting examples and uses, http://2013.flatmap.no/danwill.html
I know this is not a definitive answer, but having a look at those resources may highlight some of the areas where logic programming can be very useful.
Its also not that hard to build a backward (prolog) or forward (datalog) chaining predicate rule system in whatever your favorite language is; as a bonus, you'll get to learn the joys of unification, or go crazy with some higher order predicates.
Once you get bored with unification, then look at dealing with inequalities and learn some constraint solving. Prolog and datalog look quite simplistic compared to some of the more developed logics out there.
Logic programming is about specifying what is wanted without worrying about the methods used to produce it [beyond the correctness of the methods]. SQL shines a bit of light on the subject at a less abstract level (relational algebra). Writing a query describes the result, and does not address the algorithms used to calculate it, nor does it even depend on the actual way in which the data is organized - if the interface is there, that's all that matters.
I'm pretty sure there's a newer still (and legitimate) pdf of the book out there if you're good with the google. The book itself is absolutely worth buying but the pdf might give you an idea of what you're getting.
Peter Van Roy is giving a class in a month or two on one of the MOOC platforms which looks like it will be a pretty gentle intro to the material. I don't know which paradigms he's going to be covering - he's not going to go through the entire book.
I had a taste of Prolog in college and always wanted to learn more, especially after reading this Dr. Dobb's article about using it for a vaccine scheduling app:
I think it's a great question, so I'm going to re-ask it here: What do YOU use Prolog for?
One reason why I'm interested in Prolog is because I used to work at a semantic web company[1], and it seems to me like Prolog could work well in that domain.
Thanks for posting this resource. I'd love to learn more. So much to do, so little time!
[1]http://primal.com/