Newsgroups: comp.lang.lisp
Path: cantaloupe.srv.cs.cmu.edu!das-news.harvard.edu!news2.near.net!MathWorks.Com!europa.eng.gtefsd.com!howland.reston.ans.net!EU.net!uknet!festival!edcogsci!jeff
From: jeff@aiai.ed.ac.uk (Jeff Dalton)
Subject: Re: Why do people like C? (Was: Comparison: Beta - Lisp)
Message-ID: <CwFsGC.JEp@cogsci.ed.ac.uk>
Sender: usenet@cogsci.ed.ac.uk (C News Software)
Nntp-Posting-Host: bute.aiai.ed.ac.uk
Organization: AIAI, University of Edinburgh, Scotland
References: <LYNBECH.94Sep15223604@xenon.daimi.aau.dk> <os2Psc1w165w@sytex.com> <35dcf9$jao@news.aero.org>
Date: Tue, 20 Sep 1994 16:28:59 GMT
Lines: 53

In article <35dcf9$jao@news.aero.org> doner@aero.org (John Doner) writes:
>In article <os2Psc1w165w@sytex.com>, Scott McLoughlin <smcl@sytex.com> wrote:
>>I'm still _VERY_ curious (concerned?)
>>about why Lisp isn't more popular in "the trenches".
>...
>>        So why don't folks use Lisp to write this stuff? Blazing
>>speed,space,etc. aint that critical. What gives?
>
>I posed a similar question to the comp.lang.dylan newsgroup a couple of
>months ago.  I received many interesting replies which I haven't yet
>fully digested.  Reasons having to do with availability, popularity,
>vendors' support, what they teach in school, etc., are common, but
>really beg the question because they don't explain why C got there in
>the first place.  None of them can explain why C won out over Pascal,
>for example.

I'd suggest:

1. Unix.
2. Pascal is too restrictive.
3. Positive feedback effects.

>  My latest theory is that the answer lies in cognitive
>effects arising from the conception and structure of the language.
>People make up mental models of how things work, and interpret the
>programs they write in terms of those models.  [...]  The
>intellectual effort required to develop a good model for Lisp or Ada is
>much greater than that required to develop one for C.  There are more
>abstractions involved.  Thus, C is more easily comprehended by
>inexperienced programmers.
>
>I invite criticism of this theory.

Ok.  What you say makes sense for Ada and maybe for Common Lisp.
But I don't think Lisp is very difficult, when properly taught.
Moreover, C is a rather tricky and complex language.  I found it
harder to learn C than Pascal (and indeed harder than a number
of other languages).  I think C is just about at the edge of
what's reasonably learnable with C++ going too far.  (This is
not to say people can't learn to program well in C or C++,
but there a lot more "tricks of the trade" to pick up, it
seems to me.  For instance, I've had to write "*(char **)" as
a cast.  A correct model of C is rather hard to develop, it 
seems to me.  But perhaps it's easier to get by with incorrect
models?)

I also think it's fairly easy to explain Lisp to C programmers.
You can explain how Lisp data structures could be represented in
C (a pointer to a union of various structs and other things),
and say something about the syntax and storage management.
This gives a model of Lisp in terms of a small subset of C.

-- jeff
