My two cents
Common Lisp is the most fun programming language I’ve ever programmed in.And I’ve programmed in a few:
- C
- Java
- Python
- Perl
- BASIC
- Haskell
- Pascal
- C#
I like Lisp. I think it has a lot to offer. I also think it has a lot of room to grow — so much potential!
People criticize Lisp a lot, especially those who haven’t used it. I also hear a lot of people getting defensive about Lisp, even when someone is trying to give constructive feedback. But I think that we in the Common Lisp community can boost the power and scope of Common Lisp through incremental improvement.
Common Lisp was one of the first high-level languages. Many smart people worked on it throughout its lifetime. It’s no wonder it has been an inspiration for many popular and well-loved programming languages:
- Smalltalk
- C
- Java
- Perl
- Python
- Ruby
- Haskell
- and many others . . .
But somehow, a large portion of the community focuses on the fact that other languages are more popular/get more attention. Let’s not focus on such a waste of time. Let’s use the brilliant minds (many of whom were very influential in the history of Lisp) available in the community to actively discover what’s so great about Lisp. And using those discoveries, we can forge new paths down which other languages will eventually follow.
I would like to start with a request for comments.
I’m looking for these things:
- great features of Lisp — no matter how common, uncommon, big, or small
- stories that showcase what Lisp has to offer — the stories can be as specific or as general as you like
Popularity: 4% [?]
Filed under opinions |10 Responses to “My two cents”
Leave a Reply

I think that one of the things that makes Lisp so much better than several modern alternatives are
- The condition system (people seem to just ignore this!)
- Efficiency (but some implementations need to work hard on optimizations)
- Macros
- Reader macros!
- A mature end featureful FREE development enviromnent which includes all kinds of tools for debugging, disassembling, profiling, searching documentation, remote development and much more
And one more thing: Python has none of those features, so what Peter Norvig says is not entirely true (that Python has everything that Lisp has “except macros”).
I forgot:
- The most flexible object system ever
- Most features from other languages can be implemented in Common Lisp as libraries (lazy evaluation, regular expression matching, pattern matching and unification, parallel and distributed processing and, well, most of what we see in modern languages). Lots of these features actually *are* available as free libraries.
Which large portion is that?
How about Common Lisp makes a great playground for cross-pollination of ideas and syntax? For example, I recently prototyped Python decorator syntax in Lisp:
http://uint32t.blogspot.com/2007/12/python-decorators-in-lisp-part-2.html
@Zach: Can’t say precisely, just a sense I get.
Here are a couple of references that directly deal with the popularity of Lisp:
http://dept-info.labri.fr/~strandh/Essays/wrong.text
http://norvig.com/Lisp-retro.html
But perhaps it’s not true.
Hi,
Regarding Peter Norvig’s ideas: as I mentioned, he seems to be heavily biased towards Python. He mentions macros as the only big advantage of Lisp… I think Lisp’s condition system is particularly great, and incidentally, Dr. Norvig does not says much about it in PAIP (!) Neither does Paul Graham or Stephen Slade. The only book I found with a decent coverage of Lisp’s excellent condition system is Peter Seibel’s. Funny, eh?
Both Norvig and Graham seem to not like OO and CLOS very much also… But this is such a great part of Common Lisp.
“The most flexible object system ever”
This is no accident, of course. As AMOP shows, CLOS gets its power from being written in CLOS, similar to how Lisp gets its power from being written in Lisp.
I think one of the most significant aspects is also one of the simplest: simply that Lisp is written in Lisp.
If, say, Python had been implemented from the start in Python, it would have gotten a better meta system sooner, and it would have gotten a decent compiler by now, and the style checkers could be much better, and so on.
It seems quite damning to write a new HLL in C, like a mechanic who sells tools he made but won’t use them himself. Imagine if Python was announced as: “Hey, I’ve written a new HLL; for the kinds of programs I’m writing (i.e., this HLL), it’s worse than C”.
(This is not to single out Python — I’ve used it, and I think it’s a pretty neat little language. Almost every new language I’ve seen from the past 15 years suffers from this.)
check this summary by Robert Strandh
http://dept-info.labri.fr/~strandh/features.text
Regards,
PS: I got this link through while reading the following post a while back:
http://abhishek.geek.nz/lisp-features
One of the reasons that I am studying Common Lisp is that it has been described as a “programmable” programming language. In particular, it has the reputation for making it possible (that is, relatively easily) to create domain-specific languages. Here is Bill Clementson describing it: “The Lisp Difference” - http://bc.tech.coop/blog/041215.html
I agree with the powers of Lisp mentioned previously. As far as my favorite feature, it’s probably in elisp (Emacs lisp), namely the advice system.
With it you can ‘advise’ any functions you want, manipulating the input or output, changing how/when the function is called, or even avoid calling the advised function.