next up previous contents
Next: Getting started Up: Scheme Tutorial Previous: Foreword   Contents

Subsections

Introduction

Scheme is a semi-functional programming language and a dialect of Lisp, which stands for LISt Processing1.1. It is regarded as one of the most elegant programming languages in the world thanks to its smallness, beauty and expressive power.

The history of Scheme

Scheme saw the light of the world back in 1975 in the AI laboratory at MIT when Guy L. Steele and Gerald J. Sussman wanted to create a language that would own a clear and simple semantics. They had realized that languages should not be developed by adding a lot of features, but by removing weaknesses and limitations that make additional features seem necessary. Still, Scheme is very expressive and supports several different programming paradigms. Scheme was influenced by lambda calculus, which is one of the first functional ``programming languages'' in the world, Algol, from which Scheme inherited statical scope and Lisp, from which Scheme inherited the syntax.

The development of Scheme has been very slow, since the people who standardize Scheme are very conservative regarding adding new features. Quality has always been more important than industrial usability and this has lead to the fact that Scheme is a very well designed general purpose programming language, which does not contain a lot of kludges that would make the language clumsy.

Scheme as a language

Scheme is a statically (= lexically) scoped and weakly typed programming language which is very well suited for transformational programming (that is, it is easy to write programs that write programs), scripting and for developing and implementing programming languages--among other things. Most of the Scheme implementations are interactive (that is, interpreters), but there are also compilers available.

The procedures in Scheme are first class procedures, which means that they can be given as arguments to other procedures, they can be returned as the value of a procedure, they can be bound to variables or fields of other objects etc. The arguments of Scheme procedures are passed by value1.2.

Syntactically Scheme is very simple and beautiful. The syntax consists of parentheses and prefix notation, which means that the operator comes first and then the operands.

Scheme in practice

Scheme is widely used in the academic world as an introductory language because of its clear syntax, smallness and expressive power. The language is, however, spreading into the industrial world too. Examples of the use of Scheme are Guile, which is an extension language developed by the Free Software Foundation, scsh (the Scheme shell), which is a scripting language and CAD Framework Initiative, which partly uses Scheme. Scheme has also influenced other programming languages, such as Common Lisp and Dylan.

Why is Scheme good as an introductory language?

Scheme is a wonderful choice as an introductory language: its clear syntax makes it possible to concentrate on the programming problems at hand instead of wasting a lot of time on teaching the syntax. It is also possible to teach several different programming paradigms, e.g. functional, imperative and object oriented. Scheme is also a very small language and is therefore easy to learn.


next up previous contents
Next: Getting started Up: Scheme Tutorial Previous: Foreword   Contents
Timo Lilja 2001-09-11