Hello,

I still try to read my way through Paul Grahams "On Lisp", and always
think how to motivate this stuff to my fellow Java people. How do I
describe what it is all about in this "Code is Data", and "Macros let
you grow your own language towards the problem" stuff?
[Why? Well, maybe I read to much of Paul Grahams texts. So my current
working hypothesis is that this is the one big strength of Lisp that
other languages still dont have - so if I want to motivate people to
learn a Lisp, I have to at least point to it.]

Short answer: Difficult. ;-)

Especially if I find formulations like
"You can have the language which suits your program, even if it ends
up looking quite different from Lisp."

Longer Answer:

What puzzles me most about this quoted formulation is the words
"different from Lisp", as I know: All my Java collegues see
Lisp=Parentheses. So, to them, PGs formulation is even misleading. To
them it doesn't look quite different at the end.

Thus I try to come up with a metaphor, and I want to discuss it here,
in the hope I don't tell them rubbish at the end.

I want to liken XML to Lisp data. Then, with XSLT, some XML structures
are actually programs. Programs that work on XML data. The Lisp
parentheses are just like the basic XML syntax - elements, tags,
attributes. Obviousely Lisp has a much simpler syntax, but its trees
anyway. So XSLT can be likened to Lisp macros then.

And the use of it? Well, I currently want to talk to some people who
use Maven a lot. So the example I came up with is:
Think about when you had Ant, some years ago. Ant is just a
programming language for Java builds.
After a while you recognise that it'd be better to have something that
describes the project declaratively, with opinionated defaults. Well,
after some discussions you define something called pom.xml, that does
this (congratulation, we just invented Maven). Immediately you see
that all these Ant build scripts mentioned above could be generated
from this Maven pom.xml. So you might write XSLT to do so (this of
course deviates from historical truth). Some step later, you don't
generate them anymore as files; the only needed file is the pom.xml,
and the transformations of course.

So XML and XSLT are data and code, and they can do something that is
a) similar to what Lisp macros do, and
b) this is something my collegues understand.

Hopefully.

So, coming back to Paul Grahams quote, what the beginners see is: It
was XML and stays XML. The things "looking quite different" are, in
this metaphor, the XML schema of the Maven pom.xml versus the XML
scheme of the Ant files.

I hope that they will understand the power; and agree they will never
try and do this in XSLT. The Lisp syntax is just simple enough to be
usable for such tasks.

So, now you probably understand why I ask this question here, even if
it is a general Lisp question. This may be the only group where people
understand Lisp and Macros, XML/XSLT, and Ant, and Maven ;-)

Now the question:
Do you see any problems with this metaphor, is it misleading
somewhere?

Thank you, alux

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to