Sriram Krishnan, a developer at Microsoft, writes in Lisp is Sin:
the progression of a Lisp programmer – the newbie realizes that the difference between code and data is trivial. The expert realizes that all code is data. And the true master realizes that all data is code.
I’m not sure why this applies only to Lisp programming. I’ve seen true masters use the same approach even when it comes to (X)HTML markup. A quick look at the emerging Microformats movement on the web shows people taking this same approach to marking up data for display in web browsers.
Sriram goes on to say that Lisp promotes this particular style of programming:
Why does Lisp encourage this kind of programming? S-expressions. Since your code is data in itself, you find it easier to jump between the two. Your code is data – so you can change your code at runtime and you are in fact, encouraged to do so.
Once again, I beg to differ. I believe the reality is a little more complicated than “Lisp as a language promotes a certain style of programming.”
I believe Lisp, as a language, attracts a very specific type of person–and it’s not the average bloke who takes computer science classes in college or enrols in a diploma course because programming is where the jobs are.
Lisp attracts personalities that are inherently curious, capable and in love with challenges. Lispers tend to be tinkerers–the ones that won’t accept the status quo; the ones who believe there has to be a better way to solve a problem.
From what I hear, mastering Lisp is tremendously difficult; and that’s not a challenge your average programmer wants to take on. After all, there’s a bloated Java library that does the same thing, so why bother?