Subject: Re: explanation
From: Erik Naggum <>
Date: 30 Sep 2002 00:27:59 +0000
Newsgroups: comp.lang.lisp
Message-ID: <>

* Jacek Podkanski
| I admit I know little about Lisp philosophy.

  It is also hard to explain to someone who does not know the language, and
  since those who do, tend to agree on it, it is not often verbalized.  The
  great thing about philosophers is that the are able to zoom out and look at
  that which other people take for granted and explain it in intelligent ways.
  I have search for and read a number of articles and books that have at least
  had pretentions of explaining the philosophy of programming, but I have not
  found any.  Still, some books that I have found useful:

DDC 005.1019, ISBN 0-932633-42-0, LCCN 98038794, 1998
Gerald M. Weinberg
The Psychology of Computer Programming

DDC 005.1, ISBN 0-201--61586-X, LCCN 9910131, 1999
Brian W. Kernighan, Rob Pike
The Practice of Programming

DDC 005.133, ISBN 0-201-54330-3, LCCN 93050758, 1994
Bjarne Stroustrup
The Design and Evolution of C++

DDC 005.1, ISBN 0-262-14053-5, LCCN 93009124, 1993
Bonnie A. Nardi
A Small Matter of Programming: Perspective on End User Comuting

DDC 005.1, ISBN 0-201-61622-X, LCCN 99043581, 2000
Andrew Hunt, David Thomas
The Pragmatic Programmer: from Journeyman to Master

  These exemplify approaches to programming that are philosophical in nature,
  although the philosophy itself is just below the surface, not explicit. Where
  mathematics has Keith Devlin or John Allan Paulos, there is no equivalent for

| Confirming if I'm right or wrong reminds me of common way of marking students
| work at school.

  This happens precisely in the intimate relationship between questioner
  (student) and answerer (teacher/nestor) that I tried to explain that does not
  exist until you have made yourself more known to those who could answer you.
  A teacher who asks a question knows precisely what the answer is expected to
  mean.  In fact, one of the reasons that those who learn well on their own and
  go off to devour the entire library have a hard time dealing with grading
  from their teachers is that they lose track of their teachers' expectations
  and the context in which both questions and answers are normally given.

| Perhaps it is too shallow for Lisp, but I didn't realise that philosophy
| could be so important to a programming language.

  This means that you have only accepted one philosophy and are probably
  completely unaware of it.  When you find a different programming language,
  such as Common Lisp is (and Haskell and Prolog and Forth), your problems are
  first and foremost philosophical when you try to understand what they are all
  about, and those who have no philosophical bent learn only one paradigm.

| I don't think my approach is counter-productive, it's just different.  In a
| long term I think it can be as good as yours.

  Of course you do.  This is part of the problem.

| I hoped that asking the question I would be able to connect things.

  That may well be, but you did not give your potential answerers any clue as
  to what you would connect as the result of the answer.  Therefore, a correct
  answer could have deleterious consequences.

| This approach has helped me to learn english language.

  Oh, you are not a native speaker.  Not that I noticed, but this could explain
  why you (appear to) think statements have only one meaning.  English is
  delightfully able to capture a whole slew of nuances with a single sentence
  and has a highly poetic nature with a rich flow of imagery and connotations
  under the surface denotations.  Several other European languages are much
  more sterile and have significant differences between their poetic form and
  their straightforward day-to-day form.

| If answer is very simple it doesn't have to be so.  I thought that answer to
| my question would be quite simple.

  Precisely.  This misguided idea is what I really wanted to correct.

| Actually the question has meant something to me.  I was wondering if I could
| implement sort of Lisp macros in a scripting language I use.  Making in the
| process connections with things I know, or even learning from my mistakes if
| I fail.

  Well, to understand macros, you need to understand the different evaluation
  times of Common Lisp, which differ dramatically from other languages.  E.g.,
  when an expression is interpreted, a macro form is expanded and then
  interpreted in order, before the next form, but when compilng, the macro form
  is expanded at compile-time, and the compiler emits instructions to the
  target execution environment to produce the same results as if it were
  interpreted.  This both affects and is affected by the amount and kind of
  information available at each evaluation time in subtle ways.  Macros may
  cuase information to be available to other macros, but not in the run-time
  environment.  These differences are quite hard to explain, but as I hope you
  will see, they make for profound differences between macros and lambdas.

| I think a book has less chance to guess how much I know than a human can do.

  The key was really to make you aware of the guesswork involved and then to
  minimize it.  Books are good /because/ they force you to understand and
  accept the context of another person.  Requiring others to guess your context
  is not very polite in addition to being massively error-prone.  I liked Rob
  Warnick's response to my note as it highlights the kind of interactions that
  most people do not reflect on.

| There's one problem, most Lisp documentation I downloaded now is in
| PostScript or PDF, and viewer I use doesn't have word search capability.

  Then read them from start to end.

| Because I am new to this group I decided to spend time discussing things with
| you because I will make possible to know each other a bit better.  I hope it
| will help a bit to get rid of some kind of communication problem you and me
| have.

  Not a bad strategy.  I hope this helps.

Erik Naggum, Oslo, Norway                 Today, the sum total of the money I
                                          would retain from the offers in the
more than 7500 Nigerian 419 scam letters received in the past 33 months would
have exceeded USD 100,000,000,000.  You can stop sending me more offers, now.