Encouraging industry about Prolog

part of the work I’m doing with Harsha is to assemble a good list of prolog applications. I was at a talk by the PM of the Watson project, but he didn’t say.

1 Like

Working on it. Michael Hendrick’s talk is valuable, as is the talk Matt Ellston gave at ICLP. Slides of that talk are online.

1 Like

LOL - relax Boris - my point was simply that it’s much easier to complain about the existing resources than to make new ones. I recognize that you’re not just monday morning quarterbacking, I still appreciate you hauling yourself from Finland to the US to do the OS Academy work.

Rereading your post I have to second the notion that Prolog feels like a never ending journey.

And yes, if you’re a Java programmer, picking up Prolog is much harder than picking up Python.
Fortunately, I think Haskell is educating programmers about this, that ‘hard to learn’ often means a great reward at the end.

I wish there was an easy to follow presentation of Prolog internals … key data structures and algorithms … not just a trace of search and backtracking but also binding structures and choice point management.

I think understanding how prolog technically works can surely help make its programming more understandable to a professional audience.

In the end a professional programmer needs to understand what happens under the hood, to have confidence in the program developed.

Dan

3 Likes

The IBM Watson® question-and-answer system (called DeepQA) was able to answer questions posed in natural language. The IBM Watson knowledge base was filled with 200 million pages of information, including the entire Wikipedia website. To parse the questions into a form that IBM Watson could understand, the IBM team used Prolog to parse natural-language questions into new facts that could be used in the IBM Watson pipeline. In 2011, the system competed in the game Jeopardy! and defeated former winners of the game.

1 Like

A key selling point about Prolog for me is it is at heart a minimalist language that excels at state-space problems. Rather than turn it into a sprawling mess of libraries and dialects, I think the better route is to educate users on its ability to talk to and play nicely with other programmes.

Something I’ve had to learn through trial-and-error is interprocess communication, and get the impression users and developers of various programming languages view IPC as heretic. True believers think they must brain-wash themselves and others into “vendor lock-in”, thereby creating monolothic frameworks which are very difficult to keep modern and maintained.

The thing that attracted me to Prolog was writing a general strategy game player, which digressed into learning how to use it to write interpreters because I want something that can read the “rules” of numerous games, not just play say chess or checkers. Here I’ve found using Prolog as a parser a lot easier to use and more powerful than regex-based languages.

The need for speed has since prompted me to look at SWI Prolog’s ability to handle concurrent programming, which appears to be excellent (though I’m still battling getting to grips with it, and hope to share a tutorial for other novices soon).

As someone who looks for distractions when wrestling with new problems, I’ve started watching Leslie Lamport’s tutorials on his pseudo-code language TLA+, which encourages thinking in terms of state-machines, which strategy game playing programmes illustrate nicely.

Though I haven’t got far with Lamport’s tutorials, his theories seem to tie-in better with Prolog than traditional C-family languages. Lamport also encourages “thinking above the code”, which again I think Prolog encourages more than other languages I’ve encountered.

I’m ideologically biased toward old-school Unix-type systems glued together out of small pieces. Ideally these pieces already have large user bases, making them well documented and tested.

If I have to write something bespoke myself, my handcrafted part should ideally communicate with other parts via an established API defined by an RFC or something. Then I can replace it with something written in a completely different programming language anytime I want.

3 Likes

Inter-process communication is heretic? Maybe at one time, but in the age of web, 90% of programming is IPC. You have your web browser sending info to your web server, which communicates two way with other servers over the cloud and the database server and with other web APIs elsewhere.

5 posts were split to a new topic: How would this be done in Prolog?