Encouraging industry about Prolog

So -
I’ve taught Prolog in ‘one day’ settings now about 18 times, and the number keeps going up (by end of month it increases by 2).

I have learned a lot of little tricks, and hope some day I’ve got it figured out enough I’m comfortable trying to write a book. Like Boris observed - it’s hard!

I’ve been using puppets to make a concrete version of SLD resolution. People ‘get’ two characters interacting - one demanding proof, the other proving.

I’ve also learned to do it backwards - do the depth first search, using an intuitive understanding of unification, then go back and cover unification.

And I’ve started using a lot of posters around the room as ‘job aids’.

I second Paulo’s excellent observations that in order for prolog to be adopted by industry his bullet points need met. I’ve had my own, similar list, but his is better.

Harsha Madhavan has just started contributing his wisdom - he’s a professional FOSS marketer (he’s a coworker of mine at Hasura.io).
We all speculate about this stuff. Harsha’s far more analytical about it, and I’m hoping for great things from him. Probably the most important thing I’ve learned from Harsha is that I’m a software engineer, and don’t know the first thing about marketing.

The second is that our marketing efforts haven’t been pointed at the decision makers inside large companies. We’re changing that now.

One thing we’re trying to do now is make as complete a list of companies and projects using Prolog in production as we can. So any reports of anybody using Prolog commercially are more than welcome.

One bullet point on Paulo’s list - installation. Our install is still not as smooth as it could be. This is an area we can do something about with a bit of effort. I’d work on it but a) I’m already overcommitted, b) my bash fu is mediocre at best.

4 Likes

Thanks for making such a great effort to teach and spread the word about Prolog!

I have a draft of a chapter related to marketing here. It focuses on Web Prolog (obviously) and (among other things) it argues that an effective approach to the marketing of Prolog is what marketers refer to as rebranding: in our case, the rebranding of Prolog into Web Prolog - a scripting language for programming the Web with logic.

I’m not sure this chapter is any good, and Prolog seems more popular now than when I started writing it. :slight_smile:

If your professional FOSS marketer friend has anything to say about the chapter, I’m all ears.

1 Like

As important as the Web is, and therefore the significance of Prolog being a good programming language for Web applications, the rebranding you suggest is overreaching and doesn’t make sense to me. Prolog, and logic programming in general, is much more than a specific application field. It’s already bad that, in some circles, Prolog is being downplayed as a DSL tool. The last thing we need is for Prolog to be downplayed as a Web thing. Prolog is a general programming language and that’s the vision a lot of people in the community is working hard to establish. Trying to sell Prolog was a Web silver bullet would only backfire in the same way Prolog association with the hype surrounding AI backfired in the past. While the Web can be a stage to increase logic programming marketshare and mindshare, is not and should not be, in my view, the end game.

4 Likes

Agree. Prolog is quite suitable for the web, but in my experience Prolog is used for a very diverse set of tasks, many of which need Prolog more than the web. I’d love to see Web Prolog fly, in which case it is not unlikely to become more or less detached from the Prolog systems we see targeting other applications.

2 Likes

Hey Paulo, that’s not a very generous interpretation of what I’m trying to say in this chapter. I think we are talking past each other, so let my try to clarify.

Web Prolog is Prolog. If I didn’t think of it as Prolog, I would have called it something else.

A reasonable way to view Web Prolog is as a sandboxed subset of general-purpose Prolog. Should the rebranding of Prolog as a special-purpose language for web logic programming succeed (i.e attract new users - make the language more popular), then this would hardly hurt Prolog, would it? After all, if a subset of a language gets more popular, then this implies that the superset of this subset gets more popular too.

I’m not trying to downplay Prolog, or shrink its area of applications. Quite the opposite, Web Prolog should be seen as an attempt to expand the use of Prolog into new areas of application: e.g. as a semantic web logic programming language (inspired by Jan’s work in this area), and as a language for writing intelligent conversational agents (as I describe in my two most recent posts in the Web Prolog thread).

Trying to sell Prolog as a Web silver bullet would only backfire in the same way Prolog association with the hype surrounding AI backfired in the past.

Are you saying we shouldn’t market Prolog as an AI programming language this time around, for fear of it backfiring again? If so, I must disagree. I think we need to ride the AI wave again. There’s always a risk of falling, but it’s a risk worth taking.

While the Web can be a stage to increased logic programming marketshare and mindshare, is not and should not be, in my view, the end game.

Of course not, and that’s not what I’m proposing. I’m all for many approaches to the marketing of Prolog, many games to play in parallel.

Talk to you later.

Implicit in the “rebranding of Prolog as a special-purpose language”, as people outside the community will see it, is that we’re no longer claiming Prolog as a general purpose language. People outside the community are not going to read your chapter or dive into the details of your proposal. They are going to take just the rebranding bit and run with it. Marketing speaking, the idea of rebranding is a dangerous one. Try a web search for marketing rebranding gone wrong.

You are trying to widen Prolog reach. Others (outside the Prolog community) downplay it and this rebranding idea will risk giving them further reasons to continue to do it.

How about:

Prolog for the Web :slight_smile:

Dan

I didn’t mean to suggest that we should reach out and say “Hey, look, here’s a rebranded Prolog”. The term “rebranding” is used here, for “internal purposes”, to describe one out of possibly many approaches to marketing. I started to think about rebranding as a marketing approach when I contemplated ways to increase the uptake of Prolog, and one day came across the following little blurb in Hacker News (it’s in the chapter as well):

With programming languages, I’ve come to the conclusion that “If X is so awesome, why is nobody using it?” is the wrong question to ask. Or rather, it’s a fair question, but the answer doesn’t depend on X. It is overwhelmingly a matter of network effects and social proof. What matters is what everyone else is using.

A programming language has a window of opportunity to gain mindshare while it’s new. Once that window passes, the odds are hugely against it. It’s true there are a few technical factors, for example that older implementations lack the infrastructure to work with newer technologies, but such things can be improved. The dominant factor, the real barrier, is social psychology. This is obscured by our tendency to retrofit plausible-sounding reasons to our choices (“X is slow” or “it doesn’t have libraries” or whatever).

This does suggest a strategy for reviving an old language: rebranding. First, you need a new implementation. Trying to convince people to use the old one is like trying to get them to watch an old movie. George Lucas didn’t promote Kurosawa, he made Star Wars. Second, there has to be a hook, something to convince us that this really is a new language, modern and with the times. So, light sabers. That’s critical for opening a fresh window of opportunity instead of getting pegged to the old, long-closed one. It needn’t be the most important thing, but it can’t be fake either; it must be real enough or no one will take the new brand seriously. Without a convincing reason for why we weren’t using X before, the new window will never open. Once it opens, then and only then do the beauty and power of X get their chance to bond with the user. In the Star Wars analogy, that would be the characters and the story – the deeper things that came from Kurosawa and ultimately from ancient archetypes. They’d never have gotten the chance to kick in if Star Wars hadn’t got the audience in the theater. Once they did, though, then you had Star Wars fans for life.

With Clojure, the hook was Java libraries. Actually, there were three hooks. The others were concurrency and sequences. But Java libraries is the one that worked. And now there’s a modern Lisp again!

The situation for Clojure is not completely analogous to the situation for Web Prolog. In contrast to Clojure, Web Prolog places great weight on backwards compatibility, i.e. on being able to run the vast majority of Prolog examples appearing in textbooks. In other words, for Clojure, the language has changed, but not its purpose - it’s still general-purpose. For Web Prolog, the language will stay (almost) the same, but its purpose have become a different one, namely web programming, semantic web logic programming, intelligent-agent programming, or what have you. While Lisp may have lost some users who went on to become users of Clojure instead, I don’t see that this could happen to Prolog. Because I agree with you, I really do, that Prolog is a great general-purpose language. Web Prolog won’t make it less so.

1 Like

Hi All,

From my perspective, Prolog is a full and diverse language. It has a rich set of libraries, and due to the hard work of multiple Prolog implementations under active development, features are being added and bugs are being fixed. These are the first things that I look for in any programming language.

Next I look for large and successful projects that use the language and libraries at scale: Mobile apps (mobile is where the users are, as we like to say in the Mozilla Project), Web servers and Web applications; Cloud deployments; financial systems; and AI and NLP efforts. If I can’t find any of these things, then I usually stop there. That’s not the case with Prolog.

When we look at current trends in the industry, the Web is the foundation that we are building upon for almost everything. JavaScript is the ubiquitous language of the Web. To quote Allen Wirfs-Brock from his upcoming book on the history of JavaScript (I have a preview copy):

In 2020, the World Wide Web is ubiquitous with over a billion websites accessible from billions of Web-connected devices. Each of those devices runs a Web browser or similar programs that are able to process and display pages from those sites. The majority of those pages embed or load source code written in the JavaScript programming language.

If any programming language is to become popular, I argue that it must be present and active in (serve) and on (client) the Web and integrate with as little friction as possible with JavaScript.

Modern mobile applications are using frameworks like Electron which use Web and JavaScript libraries to enable cross-platform apps which can also be run on the desktop. This is where one finds the highest number of active developers who could potentially use any new or like-new (to use a term from the used-car market) programming language. I would aim for those developers first if I wished to promote any given language.

Now that the industry has rediscovered AI and neural networks, things like GANs are emerging every day. Any like-new language like Prolog should also enrich AI efforts beyond what other languages can do. Same for NLP. Prolog presents a unique opportunity for AI because, I argue, it was created for it.

Ask programming language experts which language represents AI language constructs and semantics, in my experience, Prolog and Lisp are the top two answers. But when I look around at all of the AI implementations being deployed at scale for the Web, I see Python, Java, and C++. This means there is a fundamental gap that can (and will, eventually) be filled by a new or like-new language.

Best part: Research in graph theory and so-called Explainable AI is under active development using Prolog.

Trusted transactions and trust-based networks (i.e., distributed ledgers) are key for fin-tech and graph search in this domain is under scrutiny, for good reason because privacy and integrity of transactions is paramount. Graph search is key here. Again, Prolog is actively being used here.

With Web Prolog I see an opportunity to provide Prolog-based distributed Web computing for Web and mobile applications that is simple and safe with a ton of bonuses for NLP, AI, and graph query and search.

Web Prolog defines simple categories of APIs which depend on where the code is running in a distributed Web environment. For example, the ISOBASE mirrors features presented by Web browsers and native-to-Web frameworks like WebAssembly–which provides a POSIX-like safe Web context for native applications. This means native AI and NLP libraries can be used safely in a browser and distributed Web applications. I believe Prolog, by way of Web Prolog, has an opportunity to establish a strong foot-hold in this space.

To me, the ideal promotion for Prolog is that Web Prolog becomes a W3C, ECMA, or ISO standard for distributed Web computing for use in AI, NLP, and graph search. This includes peer-to-peer Web applications that enable what some are calling Web 3.0 or DWeb. IPFS is the best example of DWeb. Browser vendors (esp. Mozilla) have caught on to this and they are investing heavily in Distributed Web R&D. Now would be the time to present Prolog as a powerful language for these efforts.

I don’t see how any effort to promote Prolog as a language for the distributed Web would be detrimental to the Prolog programming language. I see the opposite. I’d like to see Prolog implementations drive as hard as possible to provide and support the same APIs that Web browsers and mobile OSs provide. The best examples of this are Apple’s iOS libraries (i.e., health, home, wallet, files, maps, weather, etc. APIs) and WebAssembly’s APIs which provide safe, simple, and powerful Web client development.

Web Prolog + WebAssembly would be amazing. It brings to the table the Prolog language and all of the hype of distributed AI, NLP, and graph search–for the Web and Browser. I believe the timing is just right, and Prolog–the language–is lodged in the core of almost every computer scientist as a great AI language. Time to use this nostalgia that computer scientists who are now working on the hype-of-the-day technologies hold close to their hearts for Prolog.

All my best,
Damon

3 Likes

Boris, it’s a big job, and few of us working on it.

Educating people about Prolog has become effectively a part time job for me each fall. I fly to London in a few weeks for Code Mesh LDN, and a couple weeks later have to fly back to Bangalore (I’m in the middle of moving, and won’t be living here by then) for Functional Conf.
I spent about 4 hours today working on a CHR tutorial. Tomorrow I meet up with Harsha to talk about marketing options. I organized a Ludum Dare team last weekend. I’ve been passing emails back and forth with Lars about a new playing with Prolog episode.
A few weeks ago I gave a training in Belgium.

How much more do you expect of me?

3 Likes

I’m with Paulo here - I think any sort of ‘rebranding’ is simply throwing away the significant brand awareness we’ve built up over the last few years to enter the ‘also ran’ category of unknown languages.

Prolog is already seen as a DSL. Trying to enter the extremely crowded web development space seems inadvisable. That’s not a space that’s even driven by technical excellence any more. It’s become a very mature market.

1 Like

I most definitely did not mean to insult anyone. The way you ask your question makes it sound like I accused you of not trying hard enough, and I am sorry I left you with that impression. I had maybe something to say but I really don’t want to argue with anyone about anything.

The only reason I didn’t delete all my contributions to this thread is that I didn’t want to make people sound like they are talking to themselves. I did delete the most stupid shit I wrote but this was because it used inflammatory language.

The only thing about hooking on the new wave of AI applications with Prolog is the idea mismatch. Prolog grew with the symbolic computation idea of AI, but the new way is machine learning which is built on linear algebra. Statistical inference. GPU parallel processing. Neural networks.

If Prolog is especially valuable here, I would love to learn how and why. I imagine its best use might be what Python excels at: Calling library functions.

2 Likes

The reason is that neural networks are good classifiers, and good for dealing with things like game next-move decision making. However, prolog is very good when you already have many things already classified and want to reason about them. Prolog and so called deep-learning are not in competition, but one helps the other.

2 Likes

If this is so, is anybody working with the combination of these?

I read about someone doing this combination, but lost the reference to it.

This is how IBM Watson works…

2 Likes

I mean with Prolog. Is IBM using Prolog?

Yes. Parts of Watson are in Prolog.
I don’t know what implementation.

There are pointers to some IBM Research papers here:

but I couldn’t find any mention of what implementation.