Why Compute?
If you are somewhat of a novice, and have flipped through the pages of this book, you may be wondering what you have gotten yourself into. Nothing of what you see makes much sense, and you may be having second thoughts about learning computing after all.
On the other hand, you may be fascinated by computers, already have a working knowledge of one or more computer languages, and want to upgrade your skills--you also have glanced through the book and are excited about what you see. Actually, you probably are so eager to get going that you will just skim this introduction and the first chapter for the essentials, and even that only if your instructor requires you to read it, so most of what is said here will be addressed to the other group.
So why compute? The high speed with which computers can perform tasks makes them suitable for solving problems that require a large number of repetitive steps, sorting through vast quantities of data, or performing complex calculations--provided in the latter case, that the calculation is first broken down into a series of simple steps by the programmer.
The ability to store data (such as the characters that form the words comprising this textbook) makes the computer useful indeed to writers. Few people who have learned to use a good word processor would ever go back to producing their manuscripts by pen and ink and then laboriously typing each of several drafts. After the first draft, corrections are made by instructing the computer through the word processing program to delete a paragraph here, insert a word there, correct a spelling somewhere else, move a chapter to a different place, and so on.
In the old system, a novelist who had just completed the final typed draft of a 500 page masterpiece, and was faced with the demand from an editor to change the name of the main character from John Doe to Sam Crud, might quail at the task of revising and re-typing all those many, many sheets. Now, a few keystrokes on the word processor, and the whole thing is done. Creating the new typed copy is simply a matter of waiting for the printer to crank it all out; one can read a book while it is happening.
Accountants and bookkeepers computerize their operations to gain speed, accuracy, and efficiency. No more the endless hours of searching for the missing $0.21 by which the balance is off; now you know that the errors must be in typing the numbers in, because the totals derived by the computer are not subject to the kind of human error we all make when doing a massive addition (such as mentally transposing two digits.)
Want to look up some obscure piece of knowledge? If you know the name of the library, or database, where it is stored, you can usually dial it up on the telephone or connect to it on the network using your computer, search for and obtain what you want, and then store or print out a copy for your own use. If you are a researcher, this means that you can have accurate information about the problems you are working on at all times.
Computers provide a competitive edge in many areas of human endeavor; they can and do free people from drudgery and give them more power over their world. By giving people more time to think, more time to plan, a wider scope to create new ideas, more readily available information, more control over their environment, and more and more time (potentially) to spend with people, computers and similar high technology devices are ushering in a new type of society--one characterized by a great flowering of creativity, a vast outpouring of new ideas (especially of new writing), and instant access to virtually any information.
This "Information Age", or "Communications Age", or "New Renaissance", is already well under way. While not everyone who lives in the new era does all the things described here, there are few occupations untouched by computers. So many people use them for so many things, that those who have no knowledge of them are functionally illiterate. Education for life must include some work with computers as a matter of necessity, not as an option.
Whether you are an old hand at programming and are just picking up another language, or whether you are a novice, these things should add some excitement and anticipation to your study--some degree of feeling that you are a part of history in the making.
The majority of people in the New Renaissance will be satisfied by the ability to make good use of applications other people have written. In fact many of you will do a large percentage of your computing with only one or two programs, and will never need anything else.
Some of you are more curious, and like to know how it's done, even if you may never be part of a large programming team rushing the latest "wunderprodukt" to market. You may never go beyond a course or two in Computer Science before your interest begins to wane, and you decide you have had enough theory to suit your needs.
Still others have or will develop a talent for the reduction of large problems to smaller more manageable pieces, and derive a great deal of satisfaction from mechanizing solutions and seeing the results as working programs. For you, programming is more than merely interesting; it has the potential to become a livelihood and a profession, and programming is just the starting place--you must go on to study many additional aspects of the craft before being ready to hang out a professional's shingle.
Returning to the beginner--you may have looked around and seen that the world in which you live is changing faster and faster as more and more new technology impacts on the way people live and work. It seems as though everyone and her aunt is involved with computers, and there are people around who talk an incomprehensible "high priestly" language full of words like ROM and Modula-2. You smile politely, but vacantly, hoping that no one notices your ignorance. You realize that even if you were to shout in frustration: "Stop the world, I want to get off!" no one will have the time to say much more than: "Go ahead, get off."
Whoever you are, you have bought this book on your own, or have taken a University course that requires it, and you may be expecting from it an easy initiation to certain of the mysteries of Computer Science. You may think that you can breeze through it, perhaps sit in on a few lectures, and then you will be able to sling the buzzwords with the best of them.
If you are part of the group using this book as a second or subsequent language, you already know that it's not that easy. This book is intended to introduce freshman University students to one means of giving instructions to computers (i.e., a programming language or notation.) Learning any worthwhile skill, especially a communications one, takes time, dedication, and a lot of hard work. However, it will not be assumed that you already are, or plan to become a professional in the field, though a book such as this one could be the first step along that path.
While you may not become a professional programmer, your life is going to be touched by computers, whether you like the idea or not. By learning the rudiments of a modern programming language, you will gain an appreciation for how computers work, and for how applications are actually programmed. Not only will computers be demystified for you, but your own problem solving skills will be sharpened, and you will be able to apply the design principles to other areas of your work as well. In addition, if you are ever in a position of management, you will not only know what you can expect of your computer personnel, you will know what not to expect.
In the spirit of the information age, this book is available on the internet to all who wish to use it. All its contents are, however, copyright, and cannot be used as if they were your own work in your course; any such use must be acknowledged. Moreover, the book is not free, but shareware. See the copyright section for more information on payment.
The course that this text represents will cost you a large investment in time and energy. It will be a lot of work. It is for your future, and mine.
Enjoy, eh?
Richard J. Sutcliffe
Trinity Western University
Fort Langley, British Columbia--1986, 1992, 1995, 1997, 1998, 1999, 2002, 2004.