ToC for today's professional prolog programmer book

OK I understand now I thought you are talking about Prolog experts.

I do …

There are two ways to make money as an expert:

a) be an expert and hire yourself out
b) be an expert and hire your team out

For the first, income is naturally bound by the number of hours the expert can work and bill
For the second, income is inherently bound the number of good and experienced people an expert can find and hire

Currently, one of the best places to find good and experienced people is on a list like swi-prolog, so its in an experts best interest to nurture this resource, so he/she can draw from it when the need / opportunity arises.

And, I think only the second option is a model whereby Prolog can get real traction as a programming language of choice, as more and more teams adopt the language.

Dan

OK, this sounds like a great business opportunity.

1a. Become an expert or
1b. Acquire an expert by incentivizing them;
2. Write up all the expert knowledge and educate enough other programmers;
3. Profit.

Still not 100% clear on how you incentivize an expert other than paying them. You could of course try to ask them nicely to do it for free.

This kind of tight coupling seems to be very out of fashion at the moment. I cannot comment too deeply on the technical pros and cons of tight coupling, but from an organizational point of view, it is currently considered a non-issue. Even within relatively small organizations the communication between teams and the corresponding pieces of software is on some (rest) API over HTTP level or even higher, using a message broker that has its own life and team. Communication between business partners might be on the level of “you need to upload the files to this and that directory” or “once a month Kyle over there will prepare a report by tweaking this SQL that someone once wrote and send it to you as an email attachment.”

Note that the “loose coupling” is supposed to also help with deploying your services and solutions in a more generic manner, so “on prem” or “in the cloud” or “we operate it for you” can use the same basic setup, regardless how you decide to split it.

Of course this is simply what I have seen, which is a very tiny arbitrary cross-section.

Hi Boris,

I may be wrong, of course, but, what i have tried to argue is that for an expert who pursues Prolog programming commercially, its in his/her best interest to share his/her expertise and educate others … in particular since Prolog developers are scarce …

I recently find myself educating someone in Prolog – and, even though I am not an expert – i find the time spent very valuable if it can lead to a future collaboration and off-load work from me, when the time comes that i can afford such help …

Dan

1 Like

There is no argument about that; but it seems to me that you are wildly underestimating the effort that goes into writing useful documentation, learning materials, and so on.

There is another thing: the documentation is available, by-and-large, and there is a wealth of publicly available source code, too. But it takes time to read it, process it, get practical experience with the technology… Adding more written text is only marginally helpful, and only if the quality is high. It is easier to add to the confusion than to clear it up.

Unless, of course, you are an expert …

From my searches, there isn’t much that illustrates advanced features such as mentioned by Jan.

Also, as an analogy – Red Hat was founded by (simply) putting onto one CD, open source applications that were available online but required effort to put together into one place.

That is what customer wanted – and paid for – less friction in having all needed linux tools in one spot.

Expert in what? Reading? Writing? Teaching? Programing? Software engineering? Those are are quite different from each other, I thought?

I’d sum it up in a different way saying that in a Prolog world made of tiny communities there is a time when “experts” feel better into their own community rather than spending time fighting against windmills to try to attrack new programmers … knowing too that the tons of faces of AI make that Prolog world even more segmented. Students dont’t start Prolog having fun or making money with an app on an iPhone or an Android Phone …

If you look at the age of Prolog programmers they are not so young or many of them are coming from the research field which is a tiny world compared to schools of engineers, knowing too that many of them often bifurcate to other languages even if they got a taste of Prolog.

The reason ? The size of the market until Prolog be mainstream in spite of being glue lost in ghetto’s corners … which also means Prolog to be not just for reasoning but also daylife programming …

Good points.

But, unless, the small community want help themselves to be more productive and even to grow, by diffusing hard-won expertise – the language will indeed become even more marginalized.

Btw, one key area I could see Prolog thrive is in the startup community – where you want to get results fast – and if Prolog be furnished to delivers there, say, in novel enterprise products – and, say, in the proof of concept phase – that could be a great niche.

Be careful with the “mirage” of startups … The reality in the startup world is that they prefer focusing on widely spreaded languages as they can get tons of students for free. I know hundreds of companies with tens of students each, paid nothing or just the daily restaurant … By the way it explains why so many programs are so poorly badly written :-/

A funny stuff too about DCG (that is supposed to be the Graal for parsing) is that i know no PDF convertor based on it … though there are tons in many other languages …

As for a TOC for programmers, rather than getting parts about it digging into many books, maybe it should be an a wiki really developping concepts (in spite of softly turning around it) like recursivity, accumulator, backtracking, cut, etc. as well as explaining :

  • the difference in between the member/2 from the SWI Prolog library compared to the one with a cut
  • or the flatten/2 that works compared to the one that is usually in the books, in spite of sayjng that the SWI-Prolog library is based on an approach too complex to explain
    etc.

Another problem of Prolog is that many consider it as “too smart for the masses” … what i name the “complex of the big brain melon” … i-e you are not a scientist so i can’t explain you as you can’t understand it …

I am thinking that if we as a community can’t come up with a clear commercial positioning for where and when Prolog should be a compelling language of choice, and a way to present this message simply and clearly to commercial development, then we can’t also expect its adoption – and Prolog will never really leave the academic realm, as a workbench to teach yet another interesting language paradigms, and for trying out new research ideas …

Dan

I don’t think this is the case …

Every general purpose language has a key use case for which it was developed, and/or for which it is particular well suited.

Dan

Well, clearly, every general purpose language is a design artifact – hence, its designed with (and here comes my favorite term) design intent in mind …

You can use general purpose language for general purposes – but, for some purposes the language will be a joy to use and for others – it will fight you all the way …

LISP had its design intents in mind – which are, indeed, quite different to Prolog – and quite different to, say, Rust.

And to take Rust as an example:

Rust as a general purpose language you can, of course program everything – but once you create double linked structures – it will fight you … and you may want to drop to unsafe code – adopting design principles from C/C++ – to overcome it.

Edit:

But, the key question in my mind is the commercial question – what commercial value does one get from using a language.

Its possible that Prolog’s main commercial value is in rapid prototyping … or in having a power SQL for data science – but, not much more … when considering alternatives in the commercial development space.

Dan

I may be wrong here – but, i thought that Lisp was language invented by McCarthy to show that Lambda Calculus can be the basis for a general purpose programming language.

It was then used in AI due to its symbolic flavor … and because knowledge was perceived as symbolic in nature.

Not sure whether Lisp was ever intended beyond academia – as a commercial language – although Clojure seems to have successfully brought a Lisp dialect into the commercial world by tying into the java ecosystem – probably, to show that functional programming can be more productive and safe than imperative languages such as Java – as its key commercial selling point.

Edit:

And, i guess, Prolog was also an academic language not intended for commercial settings – to illustrate a logic programming approach implemented in a programming language.

However, Ada for example, to take an clear example, was from ground up intended for commercial development for the development of highly reliable systems in defense.

LISP and Prolog mean many different things to many different people. There might have been a set of guiding principles that the designers of the first LISP or the first Prolog had in mind, but the currently existing things that we call “LISP” or “Prolog” have long outgrown those.

I think that commercially speaking it can make a lot of sense – if a language is very good at something – makes it cheap and effective – then that’s what it is …

If new uses are identified – and commercial adoption follows – then that’s what is is as well.

But, you have to have a key commercial benefit to justify its choice …

Yes but reputation is a very peculiar currency. The magic of money is that it allows two parties who don’t share common “values” to agree on the value of something. Purely hypothetically, say that Dan values a Professional Prolog Programmer book. How much value does it have? We will never agree on that, as this long discussion shows.

If however Dan found an expert Prolog programmer to write this book for them, and they agreed on the price, deadline, details of what is to be delivered and so on (so, they sign a contract), at that moment at least Dan and the author(s) of the book will agree on the value of it.

I don’t even know where to start if the currency is reputation. Does anyone have a good reference for that?

I don’t see marketing, and/or related buss-words as they key here, but as a core capability that offers significant commercial value …

Marketing without a core – is not sustainable and professional developers will not buy into it …

To give an example:

In my work where I researched algorithms operating on symbolic data it was Prolog that gave me the most value and hence I specifically chose it.

I believe that Prolog can provide value as the language underlying a product as well – but, this will depend on customer non-functional requirements - such as performance – as well as others, such as a pool of programmers who can work with Prolog – if such a need arises in the future.