2013-01-10

Common Lisp is just Lisp

There's this perpetual confusion about Lisp: everyone will call a language with prefix notation and parenthesis a Lisp or a Lisp-dialect. This is one of the popular urban legends about Lisp, which I'd like to dissolve.

So, let's look at the language familiar to most of the programmers: C. Would anyone call C++ a C? Maybe, but only someone very inexperienced in these languages. On the contrary, many of the experienced people will often say: I would only program in C, but not in C++, because it's such a mess. For instance. Let's go further: would anyone call Java a C? I very much doubt it. What unites those languages is a common syntax: braces, basic keywords and operators, and more. A common root. And although the gap between C and Java is pretty big, it can be said, that they also have a somewhat similar semantics. And they are often used in similar scenarios. That's why all these languages are attributed to the C family. As well as Objective-C. Indeed, it would be much easier for a C programmer to switch to C++ or Java, that to, say, Lua or Haskell.

Now, the difference between 3 popular Lisp-family languages: Common Lisp, Scheme and Clojure — is just as big, as between C, C++ and Java. Conceptually and syntactically, Common Lisp is as far (or even further) from Clojure as C is from Java.

The language is not just superficial syntax — it's about syntax, semantics and pragmatics. And about community. The Lisp community has split at several points in time, and the main sprouts were Scheme and Clojure. It's not a coincidence, that these languages don't have Lisp in their name. And, what's most important is that each language's community cares about different things.

So, when someone asks you again "Which Lisp?", the answer is very simple: for good or for worse, the only Lisp currently is Common Lisp. It's like, say, the C99 standard of C. There were other standards and variants, like ZetaLisp or ISLISP, but they aren't in use now. Every other Lisp-like language isn't a Lisp, it's just similar to some extent.