ÂScheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language designed by Guy Lewis Steele Jr. and Gerald Jay Sussman.Â(part of a longer definition from The Scheme Programming Language at MIT) Scheme and Common Lisp are the two main Lisp dialects in use today. They represent two opposite examples of how a language can evolve. Both Lisps look very much alike, especially if you are approaching them from the Java or C++ worlds. They are strangely full of parenthesis, for example. But they also have important differences, mainly as a result of their design philosophy. The more visible is their size. The main objective of the CL committee was to incorporate in the new language most of the features of the preceding Lisp dialects (a one and only, a 'Common' Lisp). In contrast, Scheme designers removed everything considered superfluous from the core (and left a core, with no standard libraries). Scheme doesn't have a specification for structures with named fields or object oriented programming, while there are some language implementations and libraries (non standardized) that include these and more. A macro facility was incorporated later to the standard, but it is not identical to its Common Lisp counterpart. Considered safer but more restrictive, Scheme macros are known as Hygienic Macros. Scheme is recognized by its extreme simplicity.
Scheme is a dialect of Lisp that stresses conceptual elegance and simplicity. It was also one of the first and few programming languages to fully support continuations. It is much smaller than Common Lisp; the language specification is about 50 pages, compared to Common Lisp's 1300 page draft standard. Advocates of Scheme often find it amusing that the entire Scheme standard is shorter than the index to Guy Steele's 'Common Lisp: the Language, 2nd Edition'. Unlike the Scheme standard, the Common Lisp standard has a large library of utility functions, a standard object-oriented programming facility (CLOS), and a sophisticated condition handling system.ÂScheme was the first dialect of Lisp to use lexical variable scoping (or Âstatic scopingÂ). (from the Schemers web page FAQ) Precisely because of these characteristics, Scheme is being used very successfully in computer science courses. The SICP book of Abelson, Sussman and Sussman, and their courses at MIT, are the best example. The following paragraph is from the preface to the first edition of that book, known also as the Wizard Book (due to the Wizard on the cover drawing).
ÂIn teaching our material we use a dialect of the programming language Lisp. We never formally teach the language, because we don't have to. We just use it, and students pick it up in a few days. This is one great advantage of Lisp-like languages: They have very few ways of forming compound expressions, and almost no syntactic structure. All of the formal properties can be covered in an hour, like the rules of chess. After a short time we forget about syntactic details of the language (because there are none) 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.Â(from the second edition, on-line, of the book Structure and Interpretation of Computer Programs, MIT Press) There are few Âreal world useÂ examples of Scheme. Nevertheless, being small and clear, it can be very well used as an embedded language (as intended by the GNU Guile project). Certainly, good compilers can be found, including some in Java, but Scheme shines as a very efficient interpreted language. There has been some buzz recently about the benefits of using Continuation Passing Style (CPS) to facilitate user interaction in Web applications. UnCommon Web (UCW) is an example of how this can be done in Common Lisp. The acknowledged lisp writer and programmer Paul Graham is known to have applied a similar approach Âusing lexical closures to simulate subroutine-like behaviorÂ, among other many advantages given by Lisp, to program important parts of his successful web startup Viaweb (now Yahoo! Store). Considering that Scheme shares most of the benefits of Lisp and supports continuations natively, it clearly is a strong candidate for a continuation-based Web Framework.
More information can by found at Schemers site.
For a list of differences between dialects see Lisp Scheme Differences. But there's also a few common things between Common Lisp, emacs lisp and Scheme.
For a more "opinionated" point of view, see Pascal Costanza's Highly Opinionated Guide to Lisp