Prolog for Programmers
sites.google.com
sites.google.com
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!
http://www.amazon.com/Programming-Prolog-Using-ISO-Standard/...
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.
http://www.sics.se/~joe/pubs/prac_appl_prolog.ps
I'm taking a class that has some Prolog content and I've been playing with my own toy implementation. Fun stuff.
My sentiments exactly. Atoms and pattern matching make my programs highly readable.
When I was starting out in erlang I read a lot of complaints on erlang's syntax. But after a day or two I got comfortable around it.
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!
Paradigms map: http://www.info.ucl.ac.be/~pvr/paradigms.html
"Read CTM" may be good advice in general, but at ~900 pages probably isn't the type of answer they're looking for.
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.
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.
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.
http://www.drdobbs.com/database/building-a-custom-rule-engin...
With all the interest these days in DSLs, I feel like knowing when/how to embed Prolog into larger applications could be a great tool in my toolbox.