From: Shintaro Nakayama
Subject: Lisp books
Date: 
Message-ID: <01bce9f0$91733280$LocalHost@default>
I am Japanese, and can't go to book shop to check what is written 
in English books on Lisp, so I ask you. I'm learning Lisp through 
'Lisp' by Winston and Horn. I want to learn more about Lisp and 
am planning to buy some books. Though I am a beginner, I know basic
of Lisp. So what book do you recommend to me? I heard 'The art of
metaobject protcol' is very interesting, so decided to buy it. I 
am a student and have no extra money. I want some good books.

BTW, my friends say Lisp is not practical and learning it is waste of time.
If you have good opinion that can defeat C-lovers, please send
it to me personally. 

Thank you.

Shintaro Nakayama
········@green.ocn.ne.jp
······@csc.titech.ac.jp
········@angel.ne.jp

From: Kent M Pitman
Subject: Re: Lisp books
Date: 
Message-ID: <sfwbtzz4cv5.fsf@world.std.com>
Shintaro Nakayama <········@green.ocn.ne.jp> writes:

> my friends say Lisp is not practical and learning it is waste of time.
> If you have good opinion that can defeat C-lovers, please send
> it to me personally. 

Here are some thoughts.  Whether they will defeat others, I can't say.
Focus on enabling yourself and your sense of confidence in self.
Others will learn to respect that, given time.

People have said for years that this is so.  The truth is that C is a
workable commodity language and suffices for a number of situations.
Usually these are the smaller problems and more statically
well-understood problems involving usually homogeneous data of known
types.  Lisp is usually better at large problems or dynamically
changing problems (either programs that change as the programs run, or
programs that must be rewritten daily or weekly to accomodate a
rapidly changing need) or not well-understood problems or
ill-specified problems.  Lisp is also better at accomodating
herterogeneous data or data whose type is not known at compile time.

Since small, simple programs (even "hello world" programs) are often
used to compare, it's not surprising that C often looks better.  As
programs get bigger, C programs continue to struggle against C even
though it works less and less well.  This is a "practice effect".
People like to apply a "known solution" before applying an "unknown
solution".  That doesn't mean it's the right thing to do.

Since the 1960's, Lisp has been optimized to solve the hardest of
problems, not the easiest.  There are always more easy problems than
hard ones, so C may be perceived to be "more useful".  But this would
be like calling "whales" or even "people" or other large animals 
"unnecessary" parts of the world ecology because "algae" are so 
much more plentiful and prolific.  Each has its place.

While Lisp is fully general purpose, people tend not to resort to it
until they get to the point where programmers in other languages 
say "oh, that would be impossible".  At that point, the typical Lisp
programmer will look at his wristwatch and say "I think I have some
time this afternoon when I could do that for you".

As a career choice, you'll find fewer Lisp jobs than C jobs.  (In some
cases, I'd say, the C programs people want written would be better
done in Lisp, but I won't go into that since I've explained it above.)
But the C jobs, being often more "low-level" (closer to the bits) may
be less emotionally satisfying and sometimes may pay a lot less
(because there are more people competing for them, and that drives the
price down).  But Lisp jobs being sometimes scarce, you take on more
risk being only a "lisp programmer". 

I don't recommend being only a C programmer or only a Lisp programmer
or only any one kind of programmer.  A good craftsman knows many tools
and selects the right one for the right job.  Don't let anyone EVER
tell you that your life and intelligence will be enriched by NOT
learning something.  Learn Lisp and Scheme and apply them where they
offer you leverage.  But know C and C++ and Java and Smalltalk and
Perl and as many others as you can, just so you are aware of the power
they offer and you can switch to them when appropriate.

It's all trade-offs.  The more you know about the positives and
negatives, and the less you are guided by blind religious zeal of 
the general unqualified form "xxx is good; yyy is bad", the better
you'll be.

Good luck!
 --Kent Pitman
From: Lyn A Headley
Subject: Re: Lisp books
Date: 
Message-ID: <wr33elb2f57.fsf@harper.uchicago.edu>
I felt I should point out, that in your eloquent and heartfelt
soliloquy you compared lisp with a whale.  Let's hope noone takes that
the wrong way. (I'm getting flashbacks from the *LISP IS SLOW*
thread... shudder)

-- 
Lyn Headley
remove the word "bogus" from my address for the real one.
From: William Paul Vrotney
Subject: Re: Lisp books
Date: 
Message-ID: <vrotneyEJ77zA.L60@netcom.com>
In article <···············@harper.uchicago.edu> Lyn A Headley
<········@boguscs.uchicago.edu> writes:
> 
> I felt I should point out, that in your eloquent and heartfelt
> soliloquy you compared lisp with a whale.  Let's hope noone takes that
> the wrong way. (I'm getting flashbacks from the *LISP IS SLOW*
> thread... shudder)
> 

Note however that he also compared C to algae, pond scum.  Not that algae
isn't useful either.

The thing that I really like about Kent's post is that he points out that
Lisp is good for dynamically changing programs and heterogeneous data.  I've
had to do a lot of AI C++ programming lately and find that using C++ virtual
functions to get the "heterogeneous data effect" quickly becomes complex to
the point where one has to undesirably "change your algorithm to suite the
language".  Furthermore to get C++ to do some useful things one has to play
tricks with the compiler so that it lets your program pass.  Doing this in
such dynamically changing programs with all of the hope and promise of a
statically typed languages we *still* get run time surprises.  Another
phenomenon centers around when one creates such dynamically changing C++
programs, memory leaks become more and more of a nuisance.  I found that the
memory leak detection tools are not smart enough to help for such programs.
This seems to beg for some sort of systematized garbage collection.  The C++
community has developed this library called STL (Standard Template Library)
to allow generic programming.  Although it is quite clever, the templates
expand into separate pieces of code to handle each type and this creates a
new phenomenon called *code bloat* and depending on the problem it can
become quite significant.

So I don't think that you should fear the *LISP IS SLOW* of *LISP IS BIG*
threat so much now.  The light is slowly and painfully revealing itself.


-- 

William P. Vrotney - ·······@netcom.com
From: Will Hartung
Subject: Re: Lisp books
Date: 
Message-ID: <vfr750EJ6pMw.Hos@netcom.com>
"Shintaro Nakayama" <········@green.ocn.ne.jp> writes:

>I am Japanese, and can't go to book shop to check what is written 
>in English books on Lisp, so I ask you. I'm learning Lisp through 
>'Lisp' by Winston and Horn. I want to learn more about Lisp and 
>am planning to buy some books. Though I am a beginner, I know basic
>of Lisp. So what book do you recommend to me? I heard 'The art of
>metaobject protcol' is very interesting, so decided to buy it. I 
>am a student and have no extra money. I want some good books.

'ANSI Common Lisp' by Paul Graham (I don't have the ISBN handy) is
probably one of the best singular books available right now, though
I've always heard good things about the Winston and Horn book.

>BTW, my friends say Lisp is not practical and learning it is waste of time.
>If you have good opinion that can defeat C-lovers, please send
>it to me personally. 

If nothing else, learning to write Lisp code, or more so, learning to
think in a Lisp Way will help you no matter what you are coding in.
'C' thinking tends to be very nose to the ground and very low level.

Lisp thinking tends to start on the vista over looking the valley, and
rougly filling in the parts you need. The high level, abstract
approach can be a better way to attack new problems, and Lisp promotes
and encourages this kind of process, whereas 'C' tends to discourage
it.

But, it's still a valid process to go through.

You'll find your trip into the Lisp World rewarding whether you ever
use it professionally or not.

Enjoy!
-- 
Will Hartung - Rancho Santa Margarita. It's a dry heat. ······@netcom.com
1990 VFR750 - VFR=Very Red    "Ho, HaHa, Dodge, Parry, Spin, HA! THRUST!"
1993 Explorer - Cage? Hell, it's a prison.                    -D. Duck
From: Bryant Brandon
Subject: Re: Lisp books
Date: 
Message-ID: <64EB583F168912F7.7787D014255A6933.649BF6FD3C20855D@library-proxy.airnews.net>
In article <················@netcom.com>, ······@netcom.com (Will Hartung)
wrote:

[...]

>'ANSI Common Lisp' by Paul Graham (I don't have the ISBN handy) is
>probably one of the best singular books available right now, though
>I've always heard good things about the Winston and Horn book.

   0-13-370875-6

   http://www.amazon.com/exec/obidos/expert-query/7894-4244348-169670

   A whole mess of books:
http://www.amazon.com/exec/obidos/Subject=Lisp%20%28Programming%20Language%29/7894-4244348-169670

[...]

B.B.       --I am not a goat!
From: Norman Carver
Subject: Re: Lisp books
Date: 
Message-ID: <CARVER.97Nov5155844@anuket.cs.siu.edu>
"Shintaro Nakayama" <········@green.ocn.ne.jp> writes:
   ...
   BTW, my friends say Lisp is not practical and learning it is waste of time.
   If you have good opinion that can defeat C-lovers, please send
   it to me personally. 

You might want to take a look at the May 1997 issue of
Communications of the ACM (CACM), which is a special issue
on Dynamic Object Technology.  Not only are there discussions
of the limitations of static languages like C/C++, but there
are a couple of profiles of substantial applications built
in Lisp and Scheme.

Norm Carver
From: Rainer Joswig
Subject: Re: Lisp books
Date: 
Message-ID: <joswig-ya023180000711970506210001@news.lavielle.com>
In article <···························@default>, "Shintaro Nakayama"
<········@green.ocn.ne.jp> wrote:

> I am Japanese, and can't go to book shop to check what is written 
> in English books on Lisp, so I ask you. I'm learning Lisp through 
> 'Lisp' by Winston and Horn. I want to learn more about Lisp and 
> am planning to buy some books.

Get "Paradigms for Artificial Intelligence Programming" by Peter Norvig
once you have read Lisp (3rd Edition). Next are "On Lisp" by
Paul Graham and then AMOP. Should keep you busy for a while. ;-)

> BTW, my friends say Lisp is not practical and learning it is waste of time.
> If you have good opinion that can defeat C-lovers, please send
> it to me personally. 

We (Lavielle) have found Lisp to be very practical. Though you
should not lose your old friends, get some additional new ones. ;-)

-- 
http://www.lavielle.com/~joswig/
From: Martin Cracauer
Subject: Re: Lisp books
Date: 
Message-ID: <1997Nov10.134126.5947@wavehh.hanse.de>
"Shintaro Nakayama" <········@green.ocn.ne.jp> writes:

>I am Japanese, and can't go to book shop to check what is written 
>in English books on Lisp, so I ask you. I'm learning Lisp through 
>'Lisp' by Winston and Horn. I want to learn more about Lisp and 
>am planning to buy some books. Though I am a beginner, I know basic
>of Lisp. So what book do you recommend to me? I heard 'The art of
>metaobject protcol' is very interesting, so decided to buy it. I 
>am a student and have no extra money. I want some good books.

I learned from Koschman's book and liked it much more than
Winston/Horn and Touretzky. Graham's ANSI Common Lisp wasn't available
at that time. it seems I would like it best. I can't really judge,
since you can have your first book on a language only once :-)

>BTW, my friends say Lisp is not practical and learning it is waste of time.
>If you have good opinion that can defeat C-lovers, please send
>it to me personally. 

As someone who is more one the C (not C++!) side now, let me express
some thoughts.

I learned C, then Common Lisp (and a lot of other languages) and now
program exclusivly in C. I use C because it fits my way of thinking.
When I design a program I think in machine terms, in memory locations,
in memory locations pointing to memory locations pointing to memory
locations containing code to excecute in just exactly this
situation. But I was a really bad C programmer before I learned
Lisp. Lisp tought me how to organize my programs.

On the other hand, I was a really bad Lisp programmer (I don't think
I'm a good one now) before I traced down my Lisp implementation to a
level where I understood what will end up in specific memory locations
for certains Lisp contructs. As I said, pure lowest-level memory
locations are the only abstraction my mind can use to program and
fighting my own nature wouldn't help. I just can't program a language,
all I can is programming a machine.  For a real good laugh, you should
have looked at my SML attempts. Now, THAT language is hell for me :-)

I took my knowledge how higher-level constructs from Lisp are
organized at machine level and then took C to carefully construct
tightest carefully-constructed collections of memory locations.

C code is much more verbose than Lisp code. But for now I'm working on
problems I have a relativly deep understanding of. That allows me to
approach real hand-crafted solutions. When I work at the upper limit
of reachable code quality, the time to type in a program doesn't
really count, so even if C is three times more than Lisp, it doesn't
hurt too much. Maintaining changability of programs requires real pain
in C (mostly due to lack of closures over lexical variables), but as
long as I take the pain to parametrizise on code as well as data, my C
programs keep being changeable.

One thing I'd like to mention is that my C programming style makes
heavy use of passing (callee replaceable) preallocated buffers to
functions instead of returned newly allocated memory. The ANSI C
library supports this style much more than the Common Lisp library
does.  That way, a large number of memory allocation problems is also
solved and I usually don't even miss a garbage collector. I wouldn't
like C if I had to return string fragments as newly allocated buffers.

If you learn C and then program C before learning other languages,
you'll end up in a Pascal-like "heavy non-dynamic blocks" programming
style. With luck, these programs are fast, but you'll never be able to
be an effective programmer, you need to much time to implement
something and loose even more time when changing these programs later.

To name the flip side, I have serious problems finding coworkers to
work on my C code. That's not really my problem, the people who pay me
are happy with the speed and compactness of my code and getting new
staff is their problem. As for the reason, I don't think that I write
obfuscated C code, nor that these people are less good programmers
than me. My current interpretation of these problems is that these
people try to understand a program by analysing language constructs,
while I don't program a language, but a machine.

Happy Lisping (or machine feeding or whatever)

Martin
-- 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
···············@wavehh.hanse.de http://www.cons.org/cracauer/
BSD User Group Hamburg/Germany  http://www.bsdhh.org/ 
From: Alfred J. Reich
Subject: Re: Lisp books
Date: 
Message-ID: <reichN-O-S-P-A-M-1511971942130001@as3-dialup-09.wc-aus.io.com>
In article <·····················@wavehh.hanse.de>,
········@wavehh.hanse.de wrote:
> "Shintaro Nakayama" <········@green.ocn.ne.jp> writes:
> 
> >I am Japanese, and can't go to book shop to check what is written 
> >in English books on Lisp, so I ask you. I'm learning Lisp through 
> >'Lisp' by Winston and Horn. I want to learn more about Lisp and 
> >am planning to buy some books. Though I am a beginner, I know basic
> >of Lisp. So what book do you recommend to me? I heard 'The art of
> >metaobject protcol' is very interesting, so decided to buy it. I 
> >am a student and have no extra money. I want some good books.

Keep reading W&H.  When you've gotten to the point where you feel like
you need more, get the excellent advanced text by Peter Norvig:

      Peter Norvig.
      "Paradigms of AI Programming: Case Studies in Common Lisp"
      Morgan Kaufmann, 1992. 946 pages. ISBN 1-55860-191-0.

Even if you're not interested in Artificial Intelligence, Norvig's
book is an excellent advanced text on Common Lisp.

When you get to the point where you want to get serious about writing
macros in Common Lisp get Paul Graham's book:

      Paul Graham
      "On Lisp: Advanced Techniques for Common Lisp"
      Prentice Hall, Englewood Clifs, NJ, 1994. 413 pages,
      ISBN 0-13-030552-9.

Check the Lisp FAQ for more information:
http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/faqs/lang/lisp/top.html

Finally, don't forget the "other lisp", Scheme.  Since you're a student
without much money, and *if* your access to a decent Common Lisp
implementation is limited, Scheme may actually be a better choice than
Common Lisp.  There are many good, freely available Scheme implementations
for all platforms.  *My* recommendations on books for Scheme are:

  Introductory:
      George Springer and Daniel P. Friedman
      "Scheme and the Art of Programming" 
      MIT Press and McGraw Hill, 1990, 596 pages.
      ISBN 0-262-19288-8
      (This book also discusses advanced topics such as macros
       and continuations.)

  Advanced:
      K. Dybvig
      "The Scheme programming language"
      Prentice Hall, 1987.
      (This is a good Scheme reference)

      and

      Christian Queinnec
      "Lisp in Small Pieces"
      Cambridge University Press, English Edition 1996. 514 pages.
      ISBN 0-521-56247-3 hardback
      (This book covers interpretation, semantics, and compilation
       of Lisp, Scheme, and other related dialects.)

Also, definitely pick up a (free) copy of "R4RS":
      "Revised^4 Report on the Algorithmic Language Scheme"
      edited by W. Clinger and J. Rees
      ftp://swiss-ftp.ai.mit.edu/pub/scm/HTML/r4rs_toc.html

For more information on Scheme visit the Internet Scheme Repository at:
http://www.cs.indiana.edu/scheme-repository/

I hope this helps.

Al

-- 
Alfred J. Reich
Austin, Texas, USA
·····@io.com
*** REMOVE "N-O-S-P-A-M" WHEN REPLYING TO ME ***
From: Marisa
Subject: Re: Lisp books
Date: 
Message-ID: <3470BE69.1C39@kabelfoon.nl>
Alfred J. Reich wrote:
> 
> In article <·····················@wavehh.hanse.de>,
> ········@wavehh.hanse.de wrote:
> > "Shintaro Nakayama" <········@green.ocn.ne.jp> writes:
> >
> > >I am Japanese, and can't go to book shop to check what is written
> > >in English books on Lisp, so I ask you. I'm learning Lisp through
> > >'Lisp' by Winston and Horn. I want to learn more about Lisp and
> > >am planning to buy some books. Though I am a beginner, I know basic
> > >of Lisp. So what book do you recommend to me? I heard 'The art of
> > >metaobject protcol' is very interesting, so decided to buy it. I
> > >am a student and have no extra money. I want some good books.
> 
> Keep reading W&H.  When you've gotten to the point where you feel like
> you need more, get the excellent advanced text by Peter Norvig:
> 
>       Peter Norvig.
>       "Paradigms of AI Programming: Case Studies in Common Lisp"
>       Morgan Kaufmann, 1992. 946 pages. ISBN 1-55860-191-0.
> 
> Even if you're not interested in Artificial Intelligence, Norvig's
> book is an excellent advanced text on Common Lisp.
> 
> When you get to the point where you want to get serious about writing
> macros in Common Lisp get Paul Graham's book:
> 
>       Paul Graham
>       "On Lisp: Advanced Techniques for Common Lisp"
>       Prentice Hall, Englewood Clifs, NJ, 1994. 413 pages,
>       ISBN 0-13-030552-9.
> 
> Check the Lisp FAQ for more information:
> http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/faqs/lang/lisp/top.html
> 
> 
>       Christian Queinnec
>       "Lisp in Small Pieces"
>       Cambridge University Press, English Edition 1996. 514 pages.
>       ISBN 0-521-56247-3 hardback
>       (This book covers interpretation, semantics, and compilation
>        of Lisp, Scheme, and other related dialects.)
> 
You forgot to mention another excellent book, recently published:
"Object-Oriented Common Lisp", by Stephen Slade, Prentice Hall, Oct.
1997, ISBN 0-13-605940-6, paperback.
I think it was mentioned a few weeks ago in this newsgroup. Now that I
have a copy, I can give my opinion: I think it is an excellent
comprehensive work, with everything you need to know about Common Lisp,
and lots of useful hints. I can definitely recommend it.