There are a number of new formats and languages that have sprung up with the semantic web in the last few years. LISP (LISt Processing) however is not a new language by any means but seems to have found a new role in the new web. I have and sometimes do program in Lisp because a lot of A.I code was written in it back in the day and it still stands firm. It has the particularity of containing an awful lot of brackets, so I gained the nickname “Miss Brackets” much to the amusement of my less retro peers. I didn’t however foresee it coming back into the mainstream like it is now. Most people I know don’t know any Lisp and have never used it. It has been seen as a dead language by many I would say but things are a changing.
What is LISP?
It’s a dynamic functional programming language and it uses parentheses () to define the data and program structure. It’s called an “s-expression language” because of the parentheses. It was specified in 1958 by John McCarthy making it the second oldest high-level programming language after FORTRAN (A low-level language would be assembly for example). It has evolved since its beginnings and there are 2 distinct flavours: Common Lisp and Scheme. It was used for creating data structures amongst other things and heavily used in A.I. LISP code is made up of lists and the data structures are linked lists.
“As a programming language, LISP is characterized by the following ideas: computing with symbolic expressions rather than numbers, representation of symbolic expressions and other information by list structure in the memory of a computer, representation of information in external media mostly by multi-level lists and sometimes by S-expressions, a small set of selector and constructor operations expressed as functions, composition of functions as a tool for forming more complex functions, the use of conditional expressions for getting branching into function definitions, the recursive use of conditional expressions as a sufficient tool for building computable functions, the use of -expressions for naming functions, the representation of LISP programs as LISP data, the conditional expression interpretation of Boolean connectives, the LISP function eval that serves both as a formal definition of the language and as an interpreter, and garbage collection as a means of handling the erasure problem. LISP statements are also used as a command language when LISP is used in a time-sharing environment.”
Peter Norvig has some example for you to look at here.
Nick Parlante has a full worksheet for you here.
Lisp and the Semantic web:
Katz and Hendler from the University of Maryland wrote a paper about this:
“The Semantic Web adds a layer of logic and metadata to the current World Wide Web. By utilizing traditional Artificial Intelligence (AI) and Knowledge Representation (KR) techniques for both the construction of new documents and linking of existing ones, the Semantic Web facilitates machine-to-machine (or ”agent-to-agent”) communication. Lisp’s proven reliability and flexibility in AI and KR make it ideal for constructing intelligent Semantic Web applications. In this paper, we survey the current use of Lisp on the Semantic Web, and suggest some potential uses of it in the future. We conclude the paper with descriptions of Lisp in selected Semantic Web projects that demonstrate its strength and usability”.
Professor Jerry Boetje has built CLforJava “a totally new version of the Common Lisp language that runs on the Java Virtual Machine and is intertwined with the Java language in such a way that users of Lisp can directly access Java libraries and vice versa”. Java is good at a lot of things but LISP is awesome for tackling complicated problems. Jennifer Zaino interviewed him and he said “But as we get into the reality of how the semantic web is built in the core of things, a lot of different languages will [participate in] it, including Java.” That calls for the creation of a Lisp system that can transparently get to Java if it needs to, and otherwise do work on handling the very complex issues of the semantic web”.
Franz Inc. make software for the semantic web using LISP. Allegro Common Lisp is the commercial implementation of Common Lisp and there’s a full IDE available. They even run a certification program and a training course.
Wilbur is “Nokia Research Center’s toolkit for programming Semantic Web applications that use RDF (as well as XML and/or DAML+OIL), written in Common Lisp”.
John McCarthy says “LISP will become obsolete when someone makes a more comprehensive language that dominates LISP practically and also gives a clear mathematical semantics to a more comprehensive set of features.”
Seems pretty healthy right now though
“Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot.” (Eric Raymond, “How to Become a Hacker”)
“Lisp is a language for doing what you’ve been told is impossible.” (Kent Pitman)
“Lisp has jokingly been called “the most intelligent way to misuse a computer”. I think that description is a great compliment because it transmits the full flavor of liberation: it has assisted a number of our most gifted fellow humans in thinking previously impossible thoughts.” (Edsger Dijkstra, CACM, 15:10)
“Lisp is the red pill.” (John Fraser, on comp.lang.lisp)
(More fun quotes here)
The Suave Project – “The Suave project is a hodge-podge of libraries”
Practical common LISP – book by Peter Seibel (available online)
Lisp Machine – lots of resources
On Lisp – a book by Paul Graham (available online)
Here is a talk from Jans Aasman from Franz about why Lisp is good for the Semantic Web: