3 ms·
There could/should be because of Answer Set Programming, which addresses one of the features of prolog that derailed it from widespread adoption. Prolog makes a
by sgt101 5y ago
There could/should be because of Answer Set Programming, which addresses one of the features of prolog that derailed it from widespread adoption. Prolog makes a committed choice as it expands it's search tree, and this can lead to surprising behaviors and failures.
Now - most Prolog folk ardently deny that and say "no these are what the language does, so that's not a point of discussion." But I will write an example and then say why this matters.
In SWI prolog (and all the other prologs I've tried) if you write a program like :
on(a,b).
on(b,c).
above(X,Y):-on(X,Y).
above(X,Y):-on(X,Z), above (Z,Y).
you can query your little world with a query like :
above(a,X)
and you will get
X=b
and all is good.
but if you write your world like :
on(a,b).
on(b,c).
above(X,Y):-above(Z,Y), on(X,Z).
above(X,Y):-on(X,Y).
and you query now (above(a,X) again)...
BANG! Stack Limit exceeded.
The thing is clause orders matter because the inference engine explores them in it's matching process in order and it's really really easy to introduce a killer search like this. This is also really difficult to debug and it's a bug that is very difficult to predict - in that any prolog program of a large size may suddenly manifest this behavior with no warning. You may be able to find the bug, you may not...
So - this really kills enthusiasm for prolog in commercial environments.
Answer Sets get over this - the order of the predicates is not important, the solver can cope with the massive recurrent searches. Knowledge Based Systems and deductive inference are now more possible than ever before - and we have orders of magnitude more resources to throw at them than we did.
Additionally we have mechanisms for probablistic reasoning in MCMC that we didn't before and a unified paradigm of logical programming looks like its on!
The sad bit is that not many people seem to want it - it's quite hard to think of the real problems that we will solve this way. We know that efforts like Cyc are just not going to work out, so there's no talk of "universal knowledge bases" or building common sense in.
The only technical barrier I can think of though is that programming in the large isn't really thought through in these kind of large inferencing systems - there's a unified model that essentially has to be written by one person at the heart of them. We need to have collaboration and concept formation tools and processes that work for large teams to develop scaled systems like these.