When I tell people that I like and admire Lisp, they will typically roll their eyes and/or give me
some pretty weird looks - and then they'll ignore me for the rest of their lives.
Well, after all those years, I'm usually not hurt anymore. Instead, I just giggle to myself like
the proverbial mad scientist. You see, in the past few years there has been such a
huge surge
of interest in functional and dynamic languages that everybody and their sister
already programs
in a Lisp-like language, only without knowing it. Or, at the very least, they use a language
or programming environment whose designers adopted very significant amounts of Lispy concepts.
Examples: C#, JavaScript, Ruby, Python, Scheme, Groovy, Perl, Smalltalk, Java - and, in fact,
pretty much
any language running on top of the CLR or JVM. (Heck, even C++ programmers will
soon learn lambdas and closures...)
Being an old fart, my memory doesn't serve me as well as it
used to, hence my bias towards simple concepts and simple solutions which are easy to
memorize.
For starters, a compelling reason to fall in love with Lisp is its
syntactical
simplicity. Lisp probably has the easiest syntax of all programming languages, maybe
with the exception of Forth-like languages. Want proof? This morning, a good
soul over at
reddit pointed me to
results of the University of Geneva's HyperGOS project: A comparison of BNF graphs
for various languages. Lisp's
BNF looks like this:
s_expression = atomic_symbol / "(" s_expression "."s_expression ")" / list
list = "(" s_expression < s_expression > ")"
atomic_symbol = letter atom_part
atom_part = empty / letter atom_part / number atom_part
letter = "a" / "b" / " ..." / "z"
number = "1" / "2" / " ..." / "9"
empty = " "
Now compare the above to, say,
Java.
(And yes, the description above doesn't tell the whole story since it doesn't cover any
kind of semantic aspects. So sue me.)
Oh, and while we're at it:
Lisp Syntax Doesn't Suck,
says Brian Carper, and who am I to disagree.
So there.
I know the feeling very well, many programmers have just a few bad memories of the weird AI language that used recursion for everything and that they learned on pen and paper together with prolog and tons of complicated algorithms.
Little nitpicking, in your example languages you mention scheme which is a member of Lisp family of languages.
-- Slobodan Blazeski - 22 Sep 2009
You're right, of course - Scheme is a Lisp, not just a language inspired by Lisp.
(Had I spelt it LISP, then it'd be the language invented
in the 50s, therefore being a forerunner of Scheme, whereas "Lisp" is ambiguous.)
--
ClausBrod - 22 Sep 2009