================================================================== Hunk A starts here: ==================================================================
First, a bunch of jargon--ignore it if you want to:
Scheme is a lexically-scoped, block structured, dynamically typed, mostly functional language. It is a variant of Lisp. It has first-class procedures with block structure and indefinite extent. Parameter passing is by value, but all values are references. It has first-class continuations to allow the construction of new control abstractions. It has lexically-scoped ("hygienic") macros to allow definition of of new syntactic forms, or redefinition of old ones.
If none of that means anything to you right now, don't worry. Keep reading.
Scheme is designed to be an interactive and safe language. A normal Scheme system is really an interactive program that you can use to run parts of your Scheme program in the order you want. When a program or a part of a program has run, your program doesn't just terminate, and your data don't disappear--Scheme asks you what to do next, and you can examine the data or tell Scheme to run another part of the program.
Scheme is safe in that the interactive system generally won't crash. If you make a mistake that would crash the system, Scheme detects that, and asks you what to do about it. It lets you examine and change the system's state, and go on. This style of programming and debugging is very different from the normal edit-compile-link-run-crash cycle of "batch" programming languages like C and C++.