
Why Lisp?  3 answers - prakash
http://www.mattknox.com/whylisp.html
======
mattknox
BTW, as the author I can say this without offending myself: lisp deserves a
better article. I wrote this fast, a long time ago. Although I think the
equality thing is a really big deal, I have different and better reasons now.
(article forthcoming).

------
mojuba
_every language gets parsed, turned into an AST (Abstract Syntax Tree), and
then compiled or interpreted_

This is one of the most widespread misconceptions about compilers. You don't
need to build an AST. All books that give this advice originate from academic
environment and are completely out of touch with reality. Unfortunately these
books can be credited for the terribly bloated compilers that we are using,
including Python and Perl.

~~~
plinkplonk
"You don't need to build an AST. All books that give this advice originate
from academic environment and are completely out of touch with reality.
Unfortunately these books can be credited for the terribly bloated compilers
that we are using, including Python and Perl."

Can you give an example of an Open Source (so we can learn how it is done)
compiler that embodies an alternate strategy?

~~~
mojuba
Lua, but I'm sure there are many more. The generate-as-you-go technique is
best described in Wirth's _Algorithms + Data Structures = Programs_ , first
edition (the last chapter about compilers was removed in later editions for
some reason).

Turbo Pascal - probably the smallest and the fastest commercial compiler ever
made - well, for an imperative language - was inspired by Wirth's book, too
(see
[http://en.wikipedia.org/wiki/Algorithms_%2B_Data_Structures_...](http://en.wikipedia.org/wiki/Algorithms_%2B_Data_Structures_%3D_Programs)
)

~~~
comatose_kid
The last chapter was removed because (from the preface of the 2nd ed):

"The entire fifth chapter of the first Edition has been omitted. It was felt
that the subject of compiler construction was somewhat isolated from the
preceding chapters and would rather merit a more extensive treatment in its
own volume. "

------
diN0bot
i see "first to do X" as neutral. maybe it's indicative of more innovation and
goodness elsewhere, but maybe it's done better in the next iteration or
language.

"best to do X" is clearly a good, though, which is listed as part of the 1st
reason.

an important reason not mentioned is library support. for practical reasons
many programmers want not just "a good language" but a language where they
don't have to re-invent the wheel or forge new territory (of course, that can
be satisfying, too, if one has the time). this is likely the case with any
language that has been around a while.

i don't know if this is the case with lisp. did that reason seem not important
enough for the list, or are libraries/frameworks lacking?

~~~
sctb
The topic of libraries comes up frequently when Lisp is mentioned.

If a certain task or problem arises that isn't directly related to or
considered one of the main problems that you're trying to solve with your
program, you would consider the use of a library to accomplish that task. If
there is such a library available, go ahead and use it. If there isn't, Lisp
programmers can spend a short amount of time implementing only what they need
without generalizing the task.

This isn't quite re-inventing the wheel since you have a unique set of
constraints, and it's certainly not as onerous a task as writing a generalized
library. There are those (Edi Weitz for example) who do tend to implement
complete libraries, and the Lisp community is of course grateful for that.

Libraries and frameworks can be useful, but they also have the effect of
levelling the playing field. Lisp empowers the programmer to `discover' a
natural solution to their problem in a unique way.

