Saul Johnson will be giving a talk at EuroClojure 2017. His talk is called Clojure Tools for Symbolic Artificial Intelligence.
PurelyFunctional.tv: How did you get into Clojure?
Saul Johnson: My first experience with Clojure was during a lunch break at one of my old workplaces. A co-worker was writing Clojure for a spare-time project and, me being an object-oriented programmer only at the time, I was interested and we struck up a conversation. He showed a me a few short lines of code and stated, very simply "This is a microformats parser." I had a hard time believing that such a concise set of functions could so eloquently and clearly express such complex program behavior. My mind was spinning at the thought of how many orders of magnitude larger a Java implementation would be. The next day, I bought a functional programming book and started scoping out Clojure projects on GitHub.
PF.tv: What is your talk about?
SJ: My talk is about a couple of tools I used during my final year at Teesside University for my AI module, taught by Dr. Simon Lynch. One is a fully-featured symbolic pattern matcher for Clojure, extremely useful in flexibly parsing and manipulating collections of data that an intelligent system might hold as its "world state" (its set of beliefs about the current state of the world). Another is a simple yet highly illustrative operator search mechanism - if we tell an automated warehouse system to use the winch to move the red box to the loading bay, but the red box is underneath a blue box and the winch is nowhere nearby, how do we figure out the steps we need to take in order to realize our goal? This is where the operator search tool comes in.
PF.tv: Who is your talk for?
SJ: My talk is for Clojure developers at every level with an interest in AI. I've tried to aim it at a level that will be comfortable for everyone. Seasoned AI programmers may already be familiar with many of the concepts I'll cover, but I hope the approach we take will be food for thought nevertheless.
PF.tv: What do you hope people will take away from the talk?
SJ: From those I've talked to, there seems to be this area of mystery around how, given a goal, a machine can plan how it's going to fulfill it. If I tell my phone's voice assistant to "let my parents know my niece's birthday is coming up", it needs to look up who my parents are, look up niece's birthday and send a text message to my parent's phones. How does it plan all this? I want people to come away from the talk with a bit more of an idea about how we can approach this class of problem.
PF.tv: What concepts do you recommend people be familiar with to maximize their experience with the talk?
SJ: To maximize their experience with the talk, people should be familiar with what functional programming is and be able to get a general idea about what a trivial Clojure program does by reading it. It's not necessary to be a Clojure or AI guru to get the most from the talk.
PF.tv: What resources are available for people who want to study up before the talk?
SJ: The pattern matcher we'll be talking about is on Github and so is the operator search library. Everything you need to get started is right there. If you fancy reading a paper, this one (from quite a while ago in 1971) goes into considerable detail on STRIPS, which underlies the structure of the operators used in the operator search library.
PF.tv: Where can people follow you online?
PF.tv: Are there any projects you'd like people to be aware of? How can people help out?
SJ: The matcher and operator search libraries are open source (Eclipse Public License) and we welcome contributions from anyone and everyone. A more advanced (and efficient) stack-based planning system is also hosted on GitHub under the Cognesence organisation for those that want to delve into this a bit further. For any web developers out there that want to get in to functional programming, they might try my open source programming language/web server stack Crisp/Packet which is a work in progress but coming together nicely. Once again contributions are welcome from anyone interested.
PF.tv: Where do you see the state of Clojure in 10 years?
SJ: My first programming language (Java) is object-oriented, and I do enjoy object-oriented programming, but it's becoming more and more clear to me that functional languages are less error-prone, easier to read, write and reason about than their object-oriented counterparts. I'm finding more and more reasons to write functional programs over object-oriented ones as time goes on and the C# and Java development teams have responded to this by starting to incorporate functional elements into their own languages. With this in mind, and the fact that it's built around the JVM (and thus highly portable) with one of the best build/dependency management tools out there (Leiningen) I think Clojure is going to be in a great place in 10 years time.
PF.tv: If Clojure were an animal, what animal would it be?
SJ: I'd say if Clojure were an animal it'd be a springbok. I get a feeling of productiveness and agility when I write it, like I'm really getting something done and springbok are certainly agile.