Newsgroups: comp.arch,comp.lang.lisp,comp.lang.misc
Path: cantaloupe.srv.cs.cmu.edu!rochester!cornellcs!newsstand.cit.cornell.edu!newstand.syr.edu!news.maxwell.syr.edu!mr.net!www.nntp.primenet.com!nntp.primenet.com!netcom.com!zalman
From: zalman@netcom.com (Zalman Stern)
Subject: Re: Popularizing programming languages (Was: Parallelism)
Message-ID: <zalmanE1yztp.24H@netcom.com>
Followup-To: comp.lang.misc
Organization: NETCOM On-line Communication Services (408 261-4700 guest)
X-Newsreader: TIN [version 1.2 PL1]
References: <5536n3$90j@nanaimo.island.net> <57ovif$1c9@lyra.csx.cam.ac.uk> <rb4ti1111k.fsf@work.nlm.nih.gov>
Distribution: inet
Date: Fri, 6 Dec 1996 02:20:12 GMT
Lines: 66
Sender: zalman@netcom14.netcom.com
Xref: glinda.oz.cs.cmu.edu comp.arch:73059 comp.lang.lisp:24052 comp.lang.misc:27561

(Followups to comp.lang.misc, which I don't read, but it seems
appropriate.)

Larry Hunter (hunter@work.nlm.nih.gov) wrote:
: Maynard Handley said:
:    The computer languages field seems to have no Dawkins, no Gould, no
:    popularizers and not even any very good text books. Every one of the
:    books I have tried has come across as boring, poorly structured, making
:    no obvious attempt to justify things and completely unwilling to stand by
:    itself.
: I would suggest "The Structure and Interpretation of Computer Programs" by
: Abelson and Sussman as a textbook counterexample.  Elegant, clear and
: useful.  Anyone who has studied it will understand how to write good code;
: among many others, a generation of MIT undergraduates has been trained with
: it.

It is certainly the first book that came to my mind when I read Maynard's
post. However I wouldn't claim it will automatically produce great
programmers...

There are many other programming language texts which I found compelling
reads. From when I was in high school, the SNOBOL IV book by Griswold et
al, LISP by Horn and Klaus (???), and an ancient PDP-10 macro assembler
manual the local DEC sales office was gracious enough to send to me. One
that really stands out is "The C Programming Language" by Ritchie and
Kernighan, though that was a few years after the others. This book was
clearly written and did a pretty good job of selling the C lanugage to lots
of programmers. C instantly made sense to me as a much more useful tool
that Pascal and other alternatives. It perhaps wasn't as totally cool as
LISP, but it was much more practical for writing the kinds of programs I
was interested in. (And the only other language design that has struck me
as better than C in that regard is Modula 3.)

The PERL Camel book is another good example of a book that has done much to
popularize a language.

If you are looking for an overview of all programming languages, you're
going to be left unsatisfied. This is like asking for a summary of many
spoken languages. Yeah, you can enumerate the syntax and grammar and
perhaps even some of the semantics. But without elemnts of the "culture"
behind these languages, they aren't going to make much sense. What is a
language without its idioms, its historical references, and its literature?

I suppose one could ask for a book introducing one to programming language
design. This supposes that such a discipline is evolved enough to have set
rules and principles. I don't think this is really true. And in fact, any
significant language is the product of eveolution and owes a great debt to
its predecessors. So to design a great language, you will probably have to
have a good bit of experience with many existing languages.

If you are going to design a general purpose programming language, its a
good idea to know what a language specification should be as well. Two of
my favorite examples are the Modula-3 spec (from DEC SRC and Olivetti) and
the ANSI-C specification. The Common LISP spec is pretty good too, though
it boggles the mind to understand how that much complexity is
necessary. (As opposed to Dylan where some really big names in the LISP
world totally failed to specify a language at all in the necessary level of
detail.) Note that for both ANSI C and Modula 3, one should be able to
write useful portable programs according to the specification.

Of course the ANSI C++ standard will make the Common LISP standard look
like light bedtime reading. And probably still won't tell you what many
programs should do. If you want proof that language design is not a hard
and fast science, look no further than C++.

-Z-
