I imagine you could build a pretty effective scheduling/booking system with it, for example, and without knowing better I would think that it’s less complicated than what you have to do to build that kind of thing imperatively.
At the same time, I like declarative code and it makes me think of SQL. I’m pretty glad I picked that up before ORMs gave people a reason not to learn it. I would likely have that same impatience to learn SQL now, had I not.
Scheme, C, and Pascal were the languages that clicked and had me writing stuff just for fun.
What was it about Prolog that turned you into a fan?
Three things made me a fan:
First, Markus Triska's "The Power of Prolog" came up here on HN, and I managed to learn enough make a nice solution to the Zebra Puzzle: https://gist.github.com/calroc/603ed919bc814ccee10c1b3df6142... That got Prolog back on my radar.
Second, I had just written a type-inferencer for a stack-based language called Joy[1], and had kind of realized that what I was doing whas Prolog-shaped. So I re-implemented the interpreter and inferencer both in Prolog and discovered that they were the same code. (So I deleted one copy.) https://hg.sr.ht/~sforman/Thun/browse/default/thun/thun.pl#L...
Joy-in-Prolog is ridiculously elegant. It's almost perverse.
And then you can do messed-up things like partial evaluation: https://hg.sr.ht/~sforman/Thun/browse/default/thun/gnu-prolo...
Then, third, "Logic Programming and Compiler Writing" by David Warren went by here on HN, almost exactly a year ago https://news.ycombinator.com/item?id=17674859 (It's a 404 now but you can find it elsewhere.) I found out that there's a wealth of research to draw on, and that it's really easy to make compilers and other tools in Prolog.
It's so easy that, if you have to write a compiler from scratch it would be faster to learn Prolog and then use it to write your compiler than to (learn to) write a compiler in an imperative language you already knew!
I was already interested in compiling Joy, and here was a short, broad path to the metal. (Here's my crude and incomplete first attempt: https://hg.sr.ht/~sforman/Thun/browse/default/thun/compiler.... )
Taken all together, I realized that something like half of my professional career was wasted simply due to ignoring Prolog for twenty years, and that everything I want to do going forward is both faster and easier in Prolog. (I have embedded Joy in it and can compile it...)
[1] I wrote it up, "The Blissful Elegance of Typing Joy" http://joypy.osdn.io/notebooks/Types.html
It's funny, I picked up a copy of The Art of Prolog for a dollar at a library sale a couple of years earlier, and had even skimmed the ToC, but somehow the penny dropped only when I saw that paper. D'oh!
Like I said above the thing that puzzles me is why I didn't grok Prolog twenty years ago when my friend was spoon-feeding it to me so patiently. I had to bang my head against the wall right up to the very last minute, when I had pretty much implemented a crude unification program.
Or more generally, now that you know prolog, what kind of real-life things do you find it useful for? I mean I've seen all the tutorials of it solving sudoku and logic puzzles, but...
https://www.swi-prolog.org/pldoc/doc_for?object=section(%27p...
https://pengines.swi-prolog.org/docs/index.html
SWI prolog has all you need, and more!
Shameless plug for smalltalkers (hobbyist work in progress): https://github.com/Rscho314/pengines_smalltalk
Tau Prolog: A Prolog interpreter in JavaScript
> Tau Prolog is a Prolog interpreter fully implemented in JavaScript. While most online interpreters are remote servers with an installed version of the interpreter which receive code, execute it and return the results, Tau Prolog is fully implemented on JavaScript and the code is analysed and parsed on the client side.
> Tau Prolog is not just an implementation of the logic programming resolution mechanism, but a complete Prolog interpreter. Furthermore, the implementation of this interpreter has been directed by the ISO Prolog Standard.
As for what I find it useful for, see the sibling comment for details.
https://github.com/Anniepoo/JavaPengine
Querying is straightforward. It's simply another service in your web stack if you go this route.
I had a kind of Prolog "conversion" experience last summer...
You guys! Prolog is so great! OMG! You should really try it! I'm seriously you guys.
In all seriousness, Prolog is a simple, powerful, elegant language, with a rich history replete with amazing research and tools. "An elegant weapon... for a more civilized age."