[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

More flames about CScheme



  * The part written in C is a very different story.  I think alot of
  this can be attributed to C itself.  Some of it can be attributed to
  the fact that most of us in the Scheme group at MIT hate C, and
  therefore don't want to do the work that it would take to make it a
  beautiful C program.  In fact, I'm not sure it would be possible to
  make it beautiful, although clearly it could be much much better.

I would like to add a few points:

- If a large C program like CScheme could be "much much" better, I
haven't seen anybody succeed trying to write one.  I have certainly
looked at a large amount of C code coming from various sources, and I
claim that CScheme is better than MOST, if not all that I have come
across.  This is not to say that CScheme is anywhere near perfect;
it's just that C programs are in general badly written.

- Unlike a lot of C programs, CScheme does try to have SOME
abstraction.  Believe it or not, to some people this actually makes
the program harder to understand!  This isn't helped by the fact that
a lot of the abstraction is implemented using hairy macros, mainly for
efficiency reasons.  My claim is that CScheme isn't "bad", it's just
different.

- A lot of claims about CScheme's so-called "bad design/engineering"
are based not on people's understanding of it's design, but rather the
fact that empirically CScheme is slow, and "so it must be badly
designed".  In fact CScheme was never supposed to be fast.  All of the
optimizing switches and hacks are defaultly turned off, unlike many
other implementations.  One of the main features of CScheme is its
portability, and it is very sucessful in that regard.  Some of the
design decisions came from the fact that CScheme evolved from a Scheme
implementation that was a teaching tool, not a [commercial] speedster
for preparing programs for a Cray.  But yet I have survived CScheme
INTERPRETING some robust CAD tools, solving large design problems.
These days I can only see CScheme getting faster, with the
introduction of the compiler.

I don't want to sound like I am trying to portray CScheme as this
wonderful piece of software that it isn't.  I do feel that making
generalized attacks on issues like coding style is often too easy (and
I guess I just made some myself), while sometimes even those of us
close to the project fail to stop and try to appreciate the amount of
effort put into a very useful tool.  I like CScheme.