Why Lisp?
The article doesn't discuss macros, which is one of the answers to "Why Lisp?"<p>I didn't "get" macros until I read a footnote in the (freely available) book <i>Practical Common Lisp</i>.  In chapter 7, it introduces the `dolist` macro.<p><pre><code>    DOLIST loops across the items of a list, executing the loop
    body with a variable holding the successive items of the list.
    This is the basic skeleton (leaving out some of the more
    esoteric options):

    (dolist (var list-form)
      body-form*)

    ...For instance:

    CL-USER> (dolist (x '(1 2 3))
               (print x))
    1
    2
    3
    NIL
</code></pre>
Buried in a footnote is this:<p>"DOLIST is similar to Perl's `foreach` or Python's `for`.  Java added a similar kind of loop construct with the 'enhanced' for loop in Java 1.5, as part of JSR-201.<p>Notice what a difference macros make.  A Lisp programmer who notices a common pattern in their code can write a macro to give themselves a source-level abstraction of that pattern.  A Java programmer who notices the same pattern has to convince Sun that this particular abstraction is worth adding to the language.  Then Sun has to publish a JSR and convene an industry-wide "expert group" to hash everything out.  That process--according to Sun--takes an average of 18 months.  After that, the compiler writers all have to go upgrade their compilers to support the new feature.  And even once the Java programmer's favorite compiler supports the new version of Java, they probably still can't use the new feature until they're allowed to break source compatibility with older versions of Java.<p>So an annoyance that Common Lisp programmers can resolve for themselves within five minutes plagues Java programmers for years."<p><a href="http://www.gigamonkeys.com/book/macros-standard-control-constructs.html" rel="nofollow">http://www.gigamonkeys.com/book/macros-standard-control-cons...</a>