================================================================== 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 the values are references. It has first-class continuations to allow the construction of new control abstractions. It has lexically-scoped ("hygeinic") 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 one 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 is a very different style of programming and debugging from the normal edit-compile-link-run-crash cycle of "batch" programming languages like C and C++.