What is the central core of the subject [computer science]? What is it that distinguishes it from the separate subjects with which it is related? What is the linking thread which gathers these disparate branches into a single discipline. My answer to these questions is simple -it is the art of programming a computer. It is the art of designing efficient and elegant methods of getting a computer to solve problems, theoretical or practical, small or large, simple or complex. It is the art of translating this design into an effective and accurate computer program.

He is not a true man of science who does not bring some sympathy to his studies, and expect to learn something by behavior as well as by application. It is childish to rest in the discovery of mere coincidences, or of partial and extraneous laws. The study of geometry is a petty and idle exercise of the mind, if it is applied to no larger system than the starry one. Mathematics should be mixed not only with physics but with ethics; that is mixed mathematics. The fact which interests us most is the life of the naturalist. The purest science is still biographical.

The history of science, like the history of all human ideas, is a history of irresponsible dreams, of obstinacy, and of error. But science is one of the very few human activities-perhaps the only one-in which errors are systematically criticized and fairly often, in time, corrected. This is why we can say that, in science, we often learn from our mistakes, and why we can speak clearly and sensibly about making progress there. In most other fields of human endeavour there is change, but rarely progress ... And in most fields we do not even know how to evaluate change.

Many people correctly make the point that our only hope is to turn to God. For example, Charles Lindbergh, who said that in his young manhood he thought "science was more important than either man or God," and that "without a highly developed science modern man lacks the power to survive," . . . went to Germany after the war to see what Allied bombing had done to the Germans, who had been leaders in science. There, he says, "I learned that if his civilization is to continue, modern man must direct the material power of his science by the spiritual truths of his God."

For there is a great difference in delivery of the mathematics , which are the most abstracted of knowledges, and policy , which is the most immersed. And howsoever contention hath been moved , touching a uniformity of method in multiformity of matter, yet we see how that opinion, besides the weakness of it, hath been of ill desert towards learning, as that which taketh the way to reduce learning to certain empty and barren generalities; being but the very husks and shells of sciences, all the kernel being forced out and expulsed with the torture and press of the method.

We speak erroneously of "artificial" materials, "synthetics", and so forth. The basis for this erroneous terminology is the notion that Nature has made certain things which we call natural, and everything else is "man-made", ergo artificial. But what one learns in chemistry is that Nature wrote all the rules of structuring; man does not invent chemical structuring rules; he only discovers the rules. All the chemist can do is find out what Nature permits, and any substances that are thus developed or discovered are inherently natural. It is very important to remember that.

When you grow up, you tend to get told that the world is the way it is, and your life is just to live your life inside the world. Try not to bash into the walls too much. Try to have a nice family life. Have fun, save a little money. That's a very limited life. Life can be much broader, once you discover one simple fact, and that is everything around that you call life was made up by people who were no smarter than you. And you can change it. You can influence it. You can build your own things that other people can use. Once you learn that, you'll never be the same again.

...One of the most important lessons, perhaps, is the fact that SOFTWARE IS HARD. From now on I shall have significantly greater respect for every successful software tool that I encounter. During the past decade I was surprised to learn that the writing of programs for TeX and Metafont proved to be much more difficult than all the other things I had done (like proving theorems or writing books). The creation of good software demand a significiantly higher standard of accuracy than those other things do, and it requires a longer attention span than other intellectual tasks.

Composing computer programs to solve scientific problems is like writing poetry. You must choose every word with care and link it with the other words in perfect syntax. There is no place for verbosity or carelessness. To become fluent in a computer lnaguage demands almost the antithesis of modern loose thinking. It requires many interactive sessions, the hands-on use of the device. You do not learn a foreign language from a book, rather you have to live in the country for year to let the langauge become an automatic part of you, and the same is true for computer languages.

Well. There was noting to be done for it. Things had happened as they did, time's arrow had yet to be reversed by humans, done was done. If a man spent his life looking over his shoulder at every possible branching of his path he could have taken, he would never accomplish anything. One must learn from history so as not to repeat it, but one must not waste one's energy or time worrying about what might have been. Sorry . . . but people die every day and the galaxy continues on quite well without them. Consider yourself lucky you are one of those as yet unselected by the Fates.

Yes, I share your concern: how to program well -though a teachable topic- is hardly taught. The situation is similar to that in mathematics, where the explicit curriculum is confined to mathematical results; how to do mathematics is something the student must absorb by osmosis, so to speak. One reason for preferring symbol-manipulating, calculating arguments is that their design is much better teachable than the design of verbal/pictorial arguments. Large-scale introduction of courses on such calculational methodology, however, would encounter unsurmoutable political problems.

I think that it's extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don't think we are. I think we're responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun.

We have also obtained a glimpse of another crucial idea about languages and program design. This is the approach of statified design, the notion that a complex system should be structured as a sequence of levels that are described using a sequence of languages. Each level is constructed by combining parts that are regarded as primitive at that level, and the parts constructed at each level are used as primitives at the next level. The language used at each level of a stratified design has primitives, means of combination, and means of abstraction appropriate to that level of detail.

Share This Page