April 19th, 2007, 7:29 pm
Logic programming is inherently way more parallel than anything you would do in C++ (unless you were writing nondeterministic search in C++). Prolog itself is pretty old-hat; people these days want constraint logic programming, tabled logic programming, inductive logic programming, etc. Sure, people overhyped Prolog; that's what happens when any exciting technology comes along. One of the advantages of logic programming over using a different paradigm is that some problems are naturally suited to the LP approach... it can save you a lot of time. But on the other hand, you aren't going to write device drivers in Prolog. It's just a tool for a job -- you don't use a screwdriver when you are working with nails. One of the downsides is that the LP paradigm treats problems so generally that if you want to improve performance you end up a) figuring out some tricky way to represent the problem more efficiently (not always easy), b) using cuts or other techniques that are impure and will inherently restrict how reasonable your software is, to both humans and machines, or c) implement the problem in a different language that forces you to write the search algorithm yourself (such as C++, for example). The third case seems to be the most common imho. So on that note, if you were skilled at Prolog or some similar language, it would definitely be to your advantage. Languages like Prolog amplify your ability to get things done. However, there will surely be resistance to it on two fronts: people don't generally understand logic programming, and you will probably find yourself working around the system or reimplementing stuff yourself when you have finished prototyping and want to actually deploy stuff.
Last edited by
kilimanjaro on April 18th, 2007, 10:00 pm, edited 1 time in total.