Subject: Re: explanation From: Erik Naggum <email@example.com> Date: 30 Sep 2002 00:27:59 +0000 Newsgroups: comp.lang.lisp Message-ID: <firstname.lastname@example.org> * 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 computing. | 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.