“It
is the sad complaint, and almost true,
Whate’er we write, we bring forth nothing new.”
Innumerable innovative approaches have been devised to introduce coders of all ages to the art of computer programming.
- Richard E. Pattis christened Karel in Karel The Robot: A Gentle Introduction to the Art of Programming (John Wiley & Sons, 1981). Karel The Robot, Pattis explains, “lives in a world that is unexciting by present-day standards (there are no volcanoes, Chinese restaurants, or symphony orchestras), but it does include enough variety to allow the robot to perform simply stated, yet interesting tasks.”
- The Lifelong Kindergarten Group at the MIT Media Lab created the rare cat that responds to commands in Scratch—a kid-friendly, online, visual programming language and integrated development environment (IDE).
- With support from the National Science Foundation, Brian Harvey and Jens Mönig designed the (now) entirely browser-based language/IDE called Snap!, where a blank slate similar to the “scratchpad” found in Scratch invites us to compose programs by dragging, dropping, and snapping together components that look and act like puzzle pieces.
In addition to helping you learn a little and get excited about programming, these documents and the classes they are designed to accompany can also serve as an introduction to The Art of Computer Programming, the definitive series of books by Donald Ervin Knuth, which in 1999 American Scientist dubbed one of the twelve best physical-science monographs of the century. In fact, one of my hidden agendas is to help you see that books like Knuth’s contain a lot of Good Stuff!
As much as I would like these page to be the most beautiful, the most brilliant, the most appetizing that anyone could imagine, I know that like begets like; and I’ll be happy if they don’t make anyone sick. I’ll be delighted if they somehow help even one person inch toward Knuth where, if the culinarian in chief can make it to the end of the evening, a seven course feast awaits. And I’ll be overjoyed if they encourage some of you to really sink your teeth into Computer Science: An Interdisciplinary Approach by Robert Sedgewick and Kevin Wayne, especially if you’re taking AP Computer Science A in the Java era.
Finally, some advice in case you someday find yourself at Everest base camp (chapter 1, “Basic Concepts,” of Volume 1: Fundamental Algorithms, of TAOCP):
one thousands of your emails should have asked me to publish,
if only you knew what is good for you. It would take me years to actually complete,
testing and debugging countless fragments to bring you only my best, only the interesting to me,
only the apples of my eyes. Now I say, without a shadow of a doubt, that every single snippet,
if you run them as I shall, on exactly the same software stack and the same hardware to boot,
will probably work for you just as it will for me, even if you have never programmed before.
Gentle Reader: Without my swearing to it, you can believe that I would like this blog, the child of my understanding, to be the most beautiful, the most brilliant, and the most discrete that anyone could imagine. But I have not been able to contravene the natural order; in it, like begets like. And so what could my barren and poorly cultivated wits beget but the history of a child who is dry, withered, capricious, and continuously filled with streams of unbroken consciousness never imagined by anyone else, which is just what one would expect of a person betrodden in a corporation, where every discomfort has its place and every mournful sound makes its home? 1
I wanted only to present this blog to you plain and bare, unadorned by Prolog or recursive epigraphs.
For I can tell you that although it costs me effort to create,
none seems greater than the price of perfecting the preface you are now reading.
I grabbed hold of my mouse and clicked EDIT
many times to modify it, and many
times I pressed CLOSE
again because I did not know what to change;
and once, when I was baffled,
with a version on my screen in front of me,
my keyboard askew on my corner desk,
my elbows propped up on the arms of my Steelcase chair,
and my glosses on my nose, pondering what I should have said,
a book by an author who was witty and wise came to mind.
Déjà vu! 2
Miguel, too, was in precisely the same pickle, more or less, hundreds of years ago when a friend of his unexpectedly came in and, seeing him so perplexed, asked the reason. Cervantes hid nothing from his friend and told him that he was thinking about the prologue that he had to write for the history of a different Don, and the problem was that he did not want to write it yet did not want to bring to light the deeds of so noble a knight without one.
“What's sauce for the goose is sauce for the gander!” I exclaimed. Hence, I do not want to charge you too much for the service I am performing in cobbling together this squirrely site, but I do want you to thank me for allowing you to make the acquaintance of the famous Don Knuth, who has summarized for us, with wit and charm, heaps of knowledge scattered throughout great masses of sagacious journals in The Art of Computer Programming. And having said this, may God grant him health and not forget D.E.K. Salve. 3
- I labored in a corporation for twenty years.
- “Déjà vu” in French.
- “Hello” in Latin.
Audience, level, and treatment
— a description of such matters is
what prefaces are supposed to be about.