On other non-standard fields (like functional languages) there is a huge variety in implementations. Why is Prolog still the only major example of a logic programming language?
First, miniKanren interpreters have become vogue in some other languages. For example. Clojure has an embedded one: core.logic. Then here are some other full non-embedded languages, like Datalog and Mercury.
There's not going to be as much variety as full-fledged general-purpose programming languages though because it's a more specialized domain with more restricted usage. And, well, Prolog is pretty standard. The question you have to get over is, if you need to use logic programming, why aren't you using Prolog or an embedded miniKanren interpreter?
I think the enterprise now uses quite a lot of rules engine type stuff which draws inspiration from prolog. We used drools pretty heavily at my last place http://www.drools.org/
Prolog is a very versatile language, and despite many attempts to build a logic programming language that is equally powerful and convenient to use as Prolog, so far Prolog remains the most popular logic programming language by a huge margin.
People who need some variation of Prolog usually add the desired extension on top of Prolog instead of using a different language altogether. This is easy to do in Prolog because its abstract syntax is completely uniform.
Because they have a very limited area where they excel. On the other hand, you can do almost anything you like in functional programming. Consider, for example UI. Take a look at UI code in visual prolog: http://www.visual-prolog.com/video/FormDemo/default.htm
Having used Prolog a lot myself, I'd guess it's just that the kind of problems Prolog is good at (i.e. ones that require backtracking and the user of an inference engine) don't occur often enough.
In the future, I believe that a significant amount of 'sciencing' will be done by AI; collecting facts from various disciplines, seeing how they fit together and where there are gaps, and so on. Cross-disciplinary knowledge is something that often yields gold, but getting more and more difficult for humans to have.
So, it's near certain that such an AI (or multiple ones) will be built and used, and from your description, a Prolog-like language might be ideal for this. This is something I'm excited to see in my lifetime.
In my opinion, Prolog is now starting to become interesting. In the Prolog community, the last few decades were spent on researching efficient Prolog implementation techniques and important features like constraints. In the coming decades, we will see many interesting Prolog applications that will benefit from that work.
7 comments
[ 0.19 ms ] story [ 27.3 ms ] threadFirst, miniKanren interpreters have become vogue in some other languages. For example. Clojure has an embedded one: core.logic. Then here are some other full non-embedded languages, like Datalog and Mercury.
There's not going to be as much variety as full-fledged general-purpose programming languages though because it's a more specialized domain with more restricted usage. And, well, Prolog is pretty standard. The question you have to get over is, if you need to use logic programming, why aren't you using Prolog or an embedded miniKanren interpreter?
People who need some variation of Prolog usually add the desired extension on top of Prolog instead of using a different language altogether. This is easy to do in Prolog because its abstract syntax is completely uniform.
So, it's near certain that such an AI (or multiple ones) will be built and used, and from your description, a Prolog-like language might be ideal for this. This is something I'm excited to see in my lifetime.
In my opinion, Prolog is now starting to become interesting. In the Prolog community, the last few decades were spent on researching efficient Prolog implementation techniques and important features like constraints. In the coming decades, we will see many interesting Prolog applications that will benefit from that work.