Prolog (and common lisp) were all the rage for NLP in the 1990s, HPSG systems, le dernier cri, were implemented in them.
what confused me back then and still does is the strict determinism, the fact that program code order defines the output, not the fastest to prove valid binding.
I hoped for sth that would instead be driven by sth like A* guided by probabilities, learned from corpora...
in the early 2000s I then saw research doing exactly that, a* guided search guiding the unification algorithm. I wonder what has become of these approaches. (didn't find the specific paper any more, which to me was one of these sacred moments of reading something hard and useful being well explained, if I find it I'll update. I _believe_ it was from Stanford)
There is some research around minikanren that touches exactly that (minikanren is akin to prolog written in scheme, where order is just an implementation detail, and cuts and other non-relational things are looked with suspicion).
Programming in Prolog back in the 1980s was a pleasant experience. I wrote some useful programs with Prolog but as I remember that era, the language made a brief splash and soon relegated to niche settings.
Nowadays I enjoy programming in Scheme, which I'd guess is chosen by developers about as often as Prolog. Using Scheme stirs up memories of my Prolog experience. Intuitively it seems like these PLs require or stimulate a similar thinking process that appeals to some of us. I haven't pursued this idea, but it lingers in my brain.
Curiously both PLs were developed in the early 1970s and first official versions released in 1975. Is it possible the authors of Scheme knew about and were influenced by Prolog? Not too likely, but Prolog's creators did spend some time at MIT, the birthplace of Scheme, so the odds are a bit better than 0.
It's a 'subset' of ACM SIGPLAN (Special Interest Group on Programming Languages) and is absolutely fascinating, if, you know, you're into that sort of thing.
The conference proceedings are usually locked up in academic libraries. Sometimes it's fun to hold a physical copy in one's hands... If that's one's cup of tea, one's local city's public library may have a borrowing arrangement with local / regional / state college libraries. For example, at any public city library in California, one can request and then typically borrow* a book from any California State University / University of California library.
After learning of Scheme, if you truly want to dive into the deep end of programming, the 'next step' is the book The Structure and Interpretation of Computer Programs aka SICP. By no means is it the required next step after learning of Scheme - of course - but if you're looking for the programming book to have when you're shipwrecked on a desert island, that's the one.
Interesting that Prolog grew out of an NLP project in Marseille rather than a logic-programming research agenda — SLD resolution got attached to it afterward, not the other way round.
Same. When I see Prolog mentioned I’m surprised but also happy. More people should know about it. It’s such a fun language to program in because it forces you to think in relationships and facts.
I'm not sure why but Prolog seems to have more misinformation circulated about it than any other programming language I've ever seen. I'd take a lot of the information in these comments with a grain of salt. If anyone is interested in authoritative and accurate modern information about the language, please see Power of Prolog[1][2].
Prolog was weirdly simple to make, once you managed to grasp the concept in its wholeness. Yes I made one in 1982 in Osborne-1. I even managed to include all numbers in the machine into search space, meaning 0 to 0xFFFF -- which real Prologs do not do.
Prolog is strange. On the one hand it makes sense. On the other hand it seems to just be not a very practical language. People don't seem to stay with Prolog whereas they stay, say, in python.
Prolog is a very practical language for particular tasks. Languages are tools that fill different niches.
Besides, people do stay with Prolog. The language has been going strong for many decades. New Prolog projects pop up often. This can't be said for many other unusual languages, which perished in academic obscurity.
what confused me back then and still does is the strict determinism, the fact that program code order defines the output, not the fastest to prove valid binding.
I hoped for sth that would instead be driven by sth like A* guided by probabilities, learned from corpora...
in the early 2000s I then saw research doing exactly that, a* guided search guiding the unification algorithm. I wonder what has become of these approaches. (didn't find the specific paper any more, which to me was one of these sacred moments of reading something hard and useful being well explained, if I find it I'll update. I _believe_ it was from Stanford)
reply