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