We were saddened to read of the passing of the French Computer Scientist, Alain Colmerauer, earlier this year in May. I had the chance to hear him speak in Sydney when he was accepting the ACP Research Excellence Award for his work on the language Prolog. A different Alan (Turing) is synonymous with A.I. in the public consciousness but I would argue that Alain’s work is more in step with the current direction of travel.
The majority of programming languages are imperative. Like the imperative mood–probably last encountered during your high school French grammar lessons (Ecoutez et Répétez!)–the programmer is issuing a set of commands to be obeyed. To get the computer to achieve anything the programmer needs to explicitly (and exactly) describe the set of steps required.
Prolog is a declarative language.
It comes from a fundamentally different standpoint. The programmer defines what they want to achieve and it is up to the computer to figure out the steps required to get there. A Prolog program is really a collection of facts, and relationships between facts, which are used to reason further about the implications of potential decisions.
Prolog has never achieved widespread commercial usage. That being said, it was one of the myriad of technologies used to create IBM’s Watson system. The most successful declarative language is SQL; familiar to anyone who has used a database. SQL allows users to state which data they want to access; how to actually retrieve that information becomes the database’s problem.
The future of computing (at least from an end-user perspective) is declarative.
Consider Amazon’s recent Echo advert promoting their virtual assistant, Alexa. The no-doubt obsessively focus-grouped father figure asks “Alexa, what is the weather like tomorrow?”. Alexa cheerfully informs him it’ll be sunny with highs of 25C.
Imagine this as an imperative interaction. “Alexa, resolve your current IP address to a location. Use this location to query the Met Office weather API. Get today’s date. Add one day to it. Filter the Met Office response results to this new date, etcetera”.
In an imperative world, the limiting factor is the user’s problem solving ability. Removing this person-shaped bottleneck is the strength of Machine Learning. We can express the what rather than how and actually we may not ever know (or be able to communicate) the how.
With our Airts hat on, this is also what we see as a key strength of optimisation. We declaratively express what our clients’ particular objectives are and then the underlying algorithms explore options designed to reach those.
So whilst Prolog is unlikely to be the next hip language, the concept of stating the goal rather than the plan will only become more relevant. Chapeau, Alain, chapeau.