Moving On

The knowledge and design skills from this book are a good foundation for learning more about programming, computing, and even practical work on software. First, the skills are good for learning the currently fashionable collection of object-oriented languages, especially Java. The two languages share a philosophy of programming. In both settings, computing means dealing with data, and programming means describing classes of values and functions on them. Unlike Scheme, however, Java requires programmers to spell out the class descriptions in Java, not just in English, and to place function definitions with class descriptions. As a result, Java requires programmers to learn a lot of syntactic conventions and is unsuitable as a first language. Second, a programmer must study the fundamental ideas of computing. Thus far, our studies have focused on the laws of computing for data-oriented programming languages. Using the programming skills from this book, we can design and implement a simulation of how the hardware computes. By doing so we see the laws of computing from a radically different perspective. The contrast points to a number of interesting questions:
  1. The two mechanisms of computing are rather different. Can one mechanism compute what the other one can compute and <#60275#>vice versa<#60275#>?
  2. The laws we have used are mathematical and abstract. They do not take into account any real-world limitations. Does this mean that we can compute whatever we wish?
  3. The (simulated) hardware shows that computers have limitations. How do these limitations affect what we can compute?
Research on these questions created the discipline of computing and still guides the design of most computing curricula. Finally, the design knowledge of this book is enough to build some real-world programs in Scheme. DrScheme with its build-in Web browser and email capabilities is such a program. Building large real-world programs, however, requires some more knowledge about the functions that Scheme uses to create GUIs, to connect computers on a network, to script things such as shells, common gateway interfaces (CGI), COM objects, and so on. Material on all three topics is available from this book's Web site in a form that just extends the coverage and the style of the book. The book's Web site is
3

Check in with this site on a regular basis and continue to study computing and programming.