The programming system we use for the first part of this book is depicted in Figure 3.1. The input to our programming system is a program written in a programming language named Scheme. A Scheme interpreter interprets a Scheme program and executes it on the machine processor.
Scheme was developed at MIT in the 1970s by Guy SteeleSteele, Guy and Gerald SussmanSussman, Gerald, based on the LISPLISP programming language that was developed by John McCarthyMcCarthy, John in the 1950s. Although many large systems have been built using Scheme, it is not widely used in industry. It is, however, a great language for learning about computing and programming. The primary advantage of using Scheme to learn about computing is its simplicity and elegance. The language is simple enough that this chapter covers nearly the entire language (we defer describing a few aspects until Chapter 9), and by the end of this book you will know enough to implement your own Scheme interpreter. By contrast, some programming languages that are widely used in industrial programming such as C++ and Java require thousands of pages to describe, and even the world’s experts in those languages do not agree on exactly what all programs mean.
Although almost everything we describe should work in all Scheme interpreters, for the examples in this book we assume the DrRacketDrRacket programming environment which is freely available from link http://racket-lang.org/. DrRacket includes interpreters for many different languages, so you must select the desired language using the Language menu. The selected language defines the grammar and evaluation rules that will be used to interpret your program. For all the examples in this book, we use a version of the Scheme language named Pretty Big.