The Scheme Programming Language
Click below to go directly to a specific section:
History|
Significant Language Features|
Areas of Application|
Sample Programs|
Related Links|
Printed References|
Acknowledgements
History
Scheme started as an experiment in programming language design by challenging
some fundamental design assumptions. It emerged from MIT in the mid-1970's.
It is a dialect of the Lisp Programming Language invented by Guy Lewis
Steele Jr. and Gerald Jay Sussman. Originally called Schemer, it was shortened
to Scheme because of a 6 character limitation on file names. Scheme is
a small, exceptionally clean language which is fun to use. The language was
designed to have very few, regular constucts which compose well to support a
variety of programming styles including functional, object-oriented, and
imperative.
Significant Language Features
Scheme has lexical scoping, uniform evaluation rules, and uniform treatment of
data types. Scheme does not have the concept of a pointer, uninitialized
variables, specialized looping constucts, or explicit storage management. In
Scheme, all data types are equal. What one can do to one data type, one can
do to all data types. There are seven kinds of expressions: Constant, Variable
reference, Procedure creation, Procedure application, Conditional, Assignment,
and Sequence. Scheme also has the usual assortment of data types: Characters,
Strings, Arrays, Lists, Numbers, Functions (also called procedures), Boolean,
Ports, and Symbols. Numbers are especially interesting in that an integer is
a rational and a real is a complex. Scheme requires no looping constructs.
Any function which calls itself in the "tail" position is just a loop. Scheme
has several important advantages. It is elegantly simple in that regular
structure and trivial syntax avoids "special case" confusion. Its expressiveness
means that one spends little time trying to work around the language--it lets
users concentrate on what they want to say rather than on how to say it. Its
support of a variety of styles (including object-oriented) allows users to
better match their solution style to the style of the problems to be solved.
Its formal underpinnings make reasoning about programs much easier. Its
abstractive power makes it easy to separate system specific optimizations from
reusable code. Its composability makes it easy to construct systems from
well-tested components.
Areas of Application
Scheme is currently gaining favor as a first programming language in
universities and is used in industry by such companies as DEC, TI, Tektronix,
HP, and Sun.
Sample Programs
Related Links
- Schools using Scheme
- Chez Scheme and MacScheme are probably the best known commercial
implementations, but there are a large number of experimental and teaching
implementations as well.
- This is a free implementation of Chez Scheme, called
Petite Chez Scheme. Very simple.
- Another implementation, this one is for Linux.
From Germany...land of engineers!!
- This site publishes educational materials using the Scheme
programming language and provides Windows and Macintosh Scheme interpreters.
- The revised report on Scheme, including formal syntax in BNF, from MIT, of course.
-
MIT Scheme Reference
-
Scheme compilers
Printed References
- Abelson, H., Sussman, G.J., and Sussman, J. (1985). Structure and
Interpretation of Computer Programs. MIT Press, Cambridge, Mass.
- Dybvig, Kent R. (1987). The Scheme Programming Language.
Prentice Hall.
- Eisenberg (1988). Programming in Scheme. MIT Press.
- Eisenberg, Hartheimer, Clinger, and Abelson (1990). Programming in
MacScheme. MIT Press.
- Ferguson, Martin, and Kaufman (1988). The Schemer's Guide.
Schemers Inc.
- Lightship (1990). MacScheme. MIT Press.
- Springer, G. and Friedman, D.P. (1989). Scheme and the Art of Programming.
MIT Press and McGraw-Hill.
Acknowledgements
I would like to thank the Internet for its vast information on the programming
language Scheme, Scott Ruthfield (indigo@owlnet.rice.edu) for his hello-world
program, Ken Dickey for his substring search program, Richard A. O'Keefe for
his sort information and Ozan Yigit for his prime number program.
Last modified: 9:30 PM on 10/20/1999
This page has been accessed