[comp.lang.scheme] R4RS changes? Code?

wilson@UICBERT.EECS.UIC.EDU (Paul Wilson) (12/08/88)

Several people (myself included) have posted requests for large
Scheme programs, with disappointing results.  Apparently relatively few
people use Scheme for really serious development, and very few write
portable (e.g., R3RS) Scheme code.

I was wondering if this is likely to change over the next couple of
years, perhaps as a result of a more completely standardized language.

When is the R4RS likely to come out, and what is it likely to standardize?
Will a macro facility be standardized?  Dynamic or fluid variables?  These
seem to me to be the most important Lisp features not specified by
the R3RS.  Is there a consensus growing as to how either of these should
be done, or is it too early to settle on a standard?

Whatever the answer is, what does it imply for the future of Scheme?  Will
it be a "toy" language forever, like unextended Pascal?  Or will it
eventually be a medium-sized language with a lot of available libraries,
like C?  (And will it be a family of incompatible languages, like Pascal,
or take over the world, like C? :-).

Right now, I need to guess whether there will be sufficient programs
available within two years to gather performance data for some implementation
techniques.  If not, I may have to go with another language for some of
the things I need to do, and that could be painful.

   -- Paul


Paul R. Wilson                         
Human-Computer Interaction Laboratory
U. of Illin. at C. EECS Dept. (M/C 154)   wilson%uicbert@uxc.cso.uiuc.edu
Box 4348   Chicago,IL 60680 

will@uoregon.uoregon.edu (William Clinger) (12/08/88)

In article <8812072227.AA00515@uicbert.eecs.uic.edu> wilson@UICBERT.EECS.UIC.EDU (Paul Wilson) writes:
>Several people (myself included) have posted requests for large
>Scheme programs, with disappointing results.  Apparently relatively few
>people use Scheme for really serious development, and very few write
>portable (e.g., R3RS) Scheme code.

I think you are right that relatively few of the people who use Scheme for
really serious development are writing portable Scheme code.  On the
Macintosh, for example, "really serious" implies calling ROM routines
to achieve the Apple look and feel, which is hardly portable even with
all the high-level support provided by MacScheme+Toolsmith.  It's not
portable in C, either.  Some of the larger Scheme programs, like Edwin,
TI's Personal Consultant for the PC family, and various programs written
in T, are non-portable in part because they are rooted in systems that
antedate the RRRS, let alone the R3RS.  I would imagine that they also
have to do a lot of inherently non-portable things with i/o.

>I was wondering if this is likely to change over the next couple of
>years, perhaps as a result of a more completely standardized language.

I think it will.  Most of Scheme's popularity has been a result of the
Abelson & Sussman(s) book, which has prompted universities to use Scheme
in their introductory courses, often on an experimental basis.  Universities
are only now beginning to accept Scheme as a language worthy of use in upper
division and graduate courses, and upper level textbooks that use Scheme are
only now being written.  I expect the most significant publicly available
Scheme programs, some of them portable, will be written in the universities.
That's the way it is with other languages.

>When is the R4RS likely to come out, and what is it likely to standardize?
>Will a macro facility be standardized?  Dynamic or fluid variables?...
>...Is there a consensus growing as to how either of these should
>be done, or is it too early to settle on a standard?

The R4RS will come out early next year.  It will not standardize dynamic or
fluid variables, and I am skeptical that it will standardize macros.  There
seems to be a fair consensus on macros, but the details aren't yet worked
out.  There are technical problems concerning the interaction of dynamic
variables with multitasking and I don't expect them to be resolved anytime
soon.

A draft of the IEEE standard will be ready in February.  This is probably
more important than the R4RS, on which it will be based.

>Whatever the answer is, what does it imply for the future of Scheme?  Will
>it be a "toy" language forever, like unextended Pascal?  Or will it
>eventually be a medium-sized language with a lot of available libraries,
>like C?

I think the availability of generally useful public code will soon be better
for Scheme than for unextended Pascal (if it isn't already).  I doubt that
Scheme will ever approach C in the volume of generally available code, but
Scheme may be stronger than C in certain important areas such as numerical
software.  It would be a waste to duplicate some C libraries, such as X, in
Scheme; better to let Scheme code call the C libraries.

>Right now, I need to guess whether there will be sufficient programs
>available within two years to gather performance data for some implementation
>techniques.  If not, I may have to go with another language for some of
>the things I need to do, and that could be painful.

Though we've talked, I still don't have a good idea of the kind of programs
you're looking for.  The main reason I haven't responded to your call for
programs is that I'm inclined to interpret a call for "large" programs as
a call for programs with more than 10,000 lines (at least) and I've never
written a standalone program that large in any single language.

Peace, Will

jbs@fenchurch.mit.edu (Jeff Siegal) (12/09/88)

In article <3348@uoregon.uoregon.edu> will@fog.UUCP (William Clinger) writes:
>I think you are right that relatively few of the people who use Scheme for
>really serious development are writing portable Scheme code.  On the
>Macintosh, for example, "really serious" implies calling ROM routines
>to achieve the Apple look and feel, [...]

This is true in any language, but all "real" languages (Scheme
included) provide ways to package up these system dependencies to
allow easier retargeting of the code.  However, this is quite
different from the non-standardization of actual language features
(e.g. dynamic bindings, macros, internal define's), which can require
converting the lots of code to transport a system.

I'm glad to hear there is at least a possibility of macros becoming
standard; the other features I can live without.  On the other hand,
aren't dynamic bindings required for many of the interesting uses of
call/cc (i.e. catch and throw).

Jeff Siegal

wilson@uicbert.eecs.uic.edu (12/13/88)

    With regard to standardization, I would think it would be possible
to standardize a rather underspecified version of a macro facility,
without specifying things like scope rules.  In that way, careful
programmers could use basic macros in a portable way, so that their
programs could run in varying Schemes, and be compatible with an
eventual more detailed specification;  e.g., if all of your macros
have unique names, you don't have to worry about name collision
resolution details.

    (This would be akin to programmers who write programs
that don't rely on dynamic or static scoping, so that
they run the same way with a dynamically-scoped interpreter and a
lexically-scoped compiler.  While it's not the best situation, it's
better than not being able to use a macros (or a compiler).)

    Or is this considered a path to perdition, with people writing
code that they think is portable but isn't, because of accidental
implementation dependencies?  Standardization of noncontroversial
aspects of features is just one step down the slippery slope from
fully specified standard features, but it seems a particularly
attractive step to me.  A small commitment to a core functionality
of macros and dynamic/fluid variables could come in very handy in
the short run, and still allow a fuller, more righteous specification
the next time around.

    -- Paul

Paul R. Wilson                         
Electronic Mind Control* Laboratory
U. of Illin. at C. EECS Dept. (M/C 154)   wilson%uicbert@uxc.cso.uiuc.edu
Box 4348   Chicago,IL 60680   *a.k.a. Human-Computer Interaction

wilson@uicbert.eecs.uic.edu (12/13/88)

On the subject of the portable code I'm looking for:

  I don't know about others who are looking, but I'm looking for
programs that allocate at least one megabyte of memory during a
run, and preferably ten or more.  I'd really like programs that
actually have a megabyte or more of data that is *live* at one
time.  I'm especially interested in programs that run for several
minutes or more on a serious workstation (compiled).  This is
for gathering locality statistics and data survival curves.

  Bob Shaw's recentPh.D. dissertation at stanford reported some similar
statistics for four large Common Lisp programs.  His programs were
the Reduce symbolic math package, a natural language understanding
program, a Common Lisp compiler (Hewlett-Packard's) compiling
itself, and the RSIM circuit simulator.

  I would be very interested in similar programs written in
portable Scheme.  Eventually I may take on porting some programs
if they don't use too many incompatible extensions, but I'd
rather not have to.

  I am interested in getting a variety of programs that are
large and/or long-running, with a preference for things that
people could actually use, rather than throwaway prototypes.  For
example, an implementation of OPS5 that actually uses the
RETE matching algorithm would be excellent.  Non-AI "plain old
programs" that do something useful would be particularly good,
since I'm looking for data that generalize beyond AI applications.

   Interactive programs would be particularly nice, if they use ASCII-
only interactions (so that I can hack up a script facility to repeatedly
run them offline).

  (The reason for all this is to gather statistics that will
guide the design of generation-based garbage collectors,
virtual memories, and copy-on-write virtual copy mechanisms
for checkpointing and side-effect isolation.  I'm implementing
a generational garbage collector for Scheme-48, and it will
be instrumented to gather the relevant statistics.  Of
course, we'll have to scale our results to compensate for
the slowness of the bytecoded Scheme-48 interpreter.  A bigger
problem is the availability of reasonable test programs --
that may require more work in porting than is involved in
implementing the gc itself.

   I may have to implement the instrumented gc for something hairier,
like Kyoto Common Lisp or T, to gather data on larger programs.
The Scheme-48 version should still be valuable, because it could
be more easily extended for simulating parallel systems, etc.)

    -- Paul

Paul R. Wilson                         
Human-Computer Interaction Laboratory
U. of Illin. at C. EECS Dept. (M/C 154)   wilson%uicbert@uxc.cso.uiuc.edu
Box 4348   Chicago,IL 60680