[comp.lang.misc] Scheme - what is it?

shaffer@operations.dccs.upenn.edu (Earl Shaffer) (07/20/87)

What is "Scheme"?  What does it look like (LISP, C, ?)?
Why would a school want to use it as intro language for the
"intro" class?




==============================================================================
Earl Shaffer - University of Pennsylvania - Data Communications Department
"Time was invented so that everything wouldn't happen at once." Steven Wright
==============================================================================

willc@tekchips.TEK.COM (Will Clinger) (07/22/87)

In article <1493@super.upenn.edu.upenn.edu> shaffer@operations.dccs.upenn.edu.UUCP (Earl Shaffer) writes:
>What is "Scheme"?  What does it look like (LISP, C, ?)?
>Why would a school want to use it as intro language for the
>"intro" class?

Scheme's surface syntax looks like Lisp.

From the "Revised^3 Report on the Algorithmic Language Scheme" (December 1986
SIGPLAN Notices):

    Scheme is a statically scoped and properly tail-recursive dialect of
    the Lisp programming language invented by Guy Lewis Steele Jr. and
    Gerald Jay Sussman.  It was designed to have an exceptionally clear
    and simple semantics and few different ways to form expressions.  A
    wide variety of programming paradigms, including imperative, functional,
    and message passing styles, find convenient expression in Scheme....

    ....Scheme demonstrates that a very small number of rules for forming
    expressions, with no restrictions on how they are composed, suffice to
    form a practical and efficient programming language that is flexible
    enough to support most of the major programming paradigms in use today.

From Abelson & Sussman, "Structure and Interpretation of Computer Programs",
MIT Press, 1985:

    In teaching our material we use [Scheme].  We never formally teach the
    language....  We just use it, and students pick it up in a few days.
    This is one great advantage of Lisp-like languages:  They have...almost
    no syntactic structure....  After a short time we forget about syntactic
    details...and get on with the real issues---figuring out what we want
    to compute, how we will decompose problems into manageable parts, and
    how we will work on the parts.  Another advantage of [Scheme] is that
    it supports (but does not enforce) more of the large-scale strategies
    for decomposition of programs than any other language we know.  We can
    make procedural and data abstractions, we can use higher-order functions
    to capture common patterns of usage, we can model local state using
    assignment and data mutation, we can link parts of a program with streams
    and delayed evaluation, and we can easily implement embedded languages.
    All of this is embedded in an interactive environment with excellent
    support for incremental program design, construction, testing, and
    debugging....

    Scheme...is an attempt to bring together the power and elegance of Lisp
    and Algol.  From Lisp we take the metalinguistic power that derives from
    the simple syntax, the uniform representation of programs as data objects,
    and the garbage-collected heap-allocated data.  From Algol we take
    lexical scoping and block structure, which are gifts from the pioneers
    of programming-language design who were on the Algol committee....

The Abelson & Sussman(s) book is itself an excellent reason for using Scheme
in an introductory computer science class.  Several fine implementations are
now available, including PC Scheme, MacScheme, Chez Scheme (VAX Unix), T3
(various workstation-class machines), MIT Scheme (an interpreter written
in portable C), and Scheme48 (an interpreter written in portable Scheme).

Scheme is simple, powerful, fun.

Peace,
William Clinger
Tektronix Computer Research Lab

bpendlet@esunix.UUCP (Bob Pendleton) (07/27/87)

in article <1493@super.upenn.edu.upenn.edu>, shaffer@operations.dccs.upenn.edu (Earl Shaffer) says:
> 
> What is "Scheme"?  What does it look like (LISP, C, ?)?

Scheme is a lexically scoped dialect of LISP. A truely elegant language.
Like great poetry it is worth studying for its structure as well as its
content.

> Why would a school want to use it as intro language for the
> "intro" class?

My guess would be that the people setting up the class have read "Structure and
Interpretation of Computer Programs" by Abelson and Sussman. I hope I got that
right, I'm working from memory, my copy is at home. All the examples in the 
book are in Scheme. If they haven't read it, they should. It is a GREAT book.
But then I'm biased, the intro says nice things about someone I respect a
great deal.

To extend my guess to the tip of the limb :-), it sounds like someone wants to
teach some computer science in an intro class. Not a bad idea that!


		Bob Pendleton

-- 
Bob Pendleton @ Evans & Sutherland
UUCP Address:  {decvax,ucbvax,ihnp4,allegra}!decwrl!esunix!bpendlet
Alternate:     {ihnp4,seismo}!utah-cs!utah-gr!uplherc!esunix!bpendlet
        I am solely responsible for what I say!b