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)