Since it's build on the JVM wouldn't it be easier to use one of the existing Prologs and their Java bridges/connectors?
SWI has JPL, GNU/Prolog has something iirc and commerical ones like Sicstus also provide these (Jasper for Sicstus).
21–28 of 28 posts
Since it's build on the JVM wouldn't it be easier to use one of the existing Prologs and their Java bridges/connectors?
SWI has JPL, GNU/Prolog has something iirc and commerical ones like Sicstus also provide these (Jasper for Sicstus).
I think both are wrong ;-) Even programming languages like Prolog needs an expression of the problem that is not exactly how we think in logical expressions. You can't directly translate a first order logic expression to Prolog, you need to add extra thinking before doing that. On the other hand generic combinatorics libraries don't work with large sets. Welcome to SMT (satisfiability modulo theories) where there are…
The SMT bit you mentioned shines a light in one of the gripes I have with logic programming: most often the examples people give are for the sort of AI search problem that might look nice when specified but that you can't hope to solve in practice with a generic depth-first-search. That said, one thing that I always felt was unique about LP was how one of the primitive operations was data structure unification and ho…
Smart programmers are underrated. The reason logic programming is not widespread is 2 fold: 1) It is a new paradigm (just like functional, object oriented) are new paradigms. That makes it much harder to learn. It is not like going from Java to C#. Look at this http://dtai.cs.kuleuven.be/ppcbook there are solutions to problems in Prolog. Solutions are amazingly short, and concise. They are beautiful in how succinct t…
I'd hardly call logic programming new. At 40+ years old, it's one of the oldest paradigms in computer science!
Isn't logic programming one of the newest programming paradigms out there at about 40 years of age?
There are examples of Imperative, Functional, Object-Oriented and other Declarative programming languages that predate the first logic programming systems from the early 1970's.
When I had a logic programming course at the uni a few years ago, my prof started with an anecdote. He had been teaching the logic and contraint programming course since the years before the "AI winter" of the 1980's, and when he first started it truly was the newest paradigm out there and it was the sexy new entrant to the field. 30 years have passed but no major paradigms have emerged (arguable) so he still begins his course the same way, 30 years later. But with a grain of salt, of course...
A few years ago, I had to help our EEs write some testing software in LabVIEW. The first thing that shocked me was the system was immune to bad data. Secondly, how elegantly it utilized multiprocessing and multithreading hardware.
I wish researchers would work on graphical, signal-based, synchronous languages like this. LabVIEW gracefully solves some of the biggest issues with functional and object oriented languages. Why hasn't more work been done in this area?
Has anyone else had a similar experience?
Dataflow programming is underrated. A few years ago, I had to help our EEs write some testing software in LabVIEW. The first thing that shocked me was the system was immune to bad data. Secondly, how elegantly it utilized multiprocessing and multithreading hardware. I wish researchers would work on graphical, signal-based, synchronous languages like this. LabVIEW gracefully solves some of the biggest issues with func…
Check out also the original FBP the article refers to. It seems they had a lot of success with it on the server side of enterprise. seems like it could be ideal for web back end stuff
I don't know much about Clojure other than "it's LISPY, Hickey is a cool cat, build on top of the JVM" Since it's build on the JVM wouldn't it be easier to use one of the existing Prologs and their Java bridges/connectors? SWI has JPL, GNU/Prolog has something iirc and commerical ones like Sicstus also provide these (Jasper for Sicstus).
I think both are wrong ;-) Even programming languages like Prolog needs an expression of the problem that is not exactly how we think in logical expressions. You can't directly translate a first order logic expression to Prolog, you need to add extra thinking before doing that. On the other hand generic combinatorics libraries don't work with large sets. Welcome to SMT (satisfiability modulo theories) where there are…
The SMT bit you mentioned shines a light in one of the gripes I have with logic programming: most often the examples people give are for the sort of AI search problem that might look nice when specified but that you can't hope to solve in practice with a generic depth-first-search. That said, one thing that I always felt was unique about LP was how one of the primitive operations was data structure unification and ho…
An analogy: a good programmer should be able to write a state machine. And these are occasionally useful. However, just because a state machine plus a large bidirectional sequential-access data store can do any computation whatsoever[1], does not mean that it is a good idea to write all our programs this way.
Similarly, logic programming and the associated unification operation make up a Turing-complete system, but ... so what? I think that logic programming ought to be available as a library in every programming language. But I don't see the point in making it the only functionality there is.
And, of course, core.logic is an attempt at doing just this for Clojure. (And then there is Pyke ....) However, as this article -- along with the article it references -- notes, we have not really figured out how to integrate logic programming with more mainstream programming methods. This, I think, is a problem well worth solving.
[1] Think "Turing Machine".