diff options
author | elioat <elioat@tilde.institute> | 2023-08-23 07:52:19 -0400 |
---|---|---|
committer | elioat <elioat@tilde.institute> | 2023-08-23 07:52:19 -0400 |
commit | 562a9a52d599d9a05f871404050968a5fd282640 (patch) | |
tree | 7d3305c1252c043bfe246ccc7deff0056aa6b5ab /js/games/nluqo.github.io/~bh/ss/foreword.html | |
parent | 5d012c6c011a9dedf7d0a098e456206244eb5a0f (diff) | |
download | tour-562a9a52d599d9a05f871404050968a5fd282640.tar.gz |
*
Diffstat (limited to 'js/games/nluqo.github.io/~bh/ss/foreword.html')
-rw-r--r-- | js/games/nluqo.github.io/~bh/ss/foreword.html | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/js/games/nluqo.github.io/~bh/ss/foreword.html b/js/games/nluqo.github.io/~bh/ss/foreword.html new file mode 100644 index 0000000..b678405 --- /dev/null +++ b/js/games/nluqo.github.io/~bh/ss/foreword.html @@ -0,0 +1,107 @@ +<HTML> +<HEAD> +<TITLE>Simply Scheme Foreword</TITLE> +</HEAD> +<BODY> +<CITE>Simply Scheme</CITE> 2/e Copyright (C) 1999 MIT +<H1>Foreword</H1> + +<TABLE><TR><TD> +<P><IMG SRC="../simply.jpg" ALT="cover photo"> +<TD valign="center"> +<CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian +Harvey</A><BR><A HREF="http://www.cnmat.berkeley.edu/~matt">Matthew +Wright</A><BR>University of California, Berkeley<BR> +Foreword by Hal Abelson</CITE> +<BR><BR><A HREF="http://www-mitpress.mit.edu/book-home.tcl?isbn=0262082810">MIT +Press web page for Simply Scheme</A> +</TABLE> + +<P><A HREF="../simply-toc.html">(back to Table of Contents)</A> + +<HR> + +<P>One of the best ways to stifle the growth of an idea is to enshrine it +in an educational curriculum. The textbook publishers, certification +panels, professional organizations, the folks who write the college +entrance exams--once they've settled on an approach, they +become frozen in a straitjacket of interlocking constraints that +thwarts the ability to evolve. So it is common that students learn +the "modern" geography of countries that no longer exist and +practice using logarithm tables when calculators have made tables +obsolete. And in computer science, beginning courses are trapped in +an approach that was already ten years out of date by the time it was +canonized in the mid 80s, when the College Entrance Examination Board +adopted an advanced placement exam based on Pascal. + +<P>This book points the way out of the trap. It emphasizes programming +as a way to express ideas, rather than just a way to get computers to +perform tasks. + +<P>Julie and Gerry Sussman and I are flattered that Harvey and Wright +characterize their revolutionary introduction to computer science as a +"prequel" to our text <EM>Structure and Interpretation of Computer +Programs.</EM> When we were writing <EM>SICP,</EM> we often drew upon +the words of the great American computer scientist Alan Perlis +(1922-1990). Perlis was one of the designers of the Algol +programming language, which, beginning in 1958, established the +tradition of formalism and precision that Pascal embodies. Here's +what Perlis had to say about this tradition in 1975, +nine years <EM>before</EM> the start of the AP exam: + +<P><BLOCKQUOTE> +Algol is a blight. You can't have fun with Algol. Algol is a code +that now belongs in a plumber's union. It helps you design correct +structures that don't collapse, but it doesn't have any fun in it. +There are no pleasures in writing Algol programs. It's a labor of +necessity, a preoccupation with the details of tedium. +</BLOCKQUOTE> + +<P>Harvey and Wright's introduction to computing emerges from a different +intellectual heritage, one rooted in research in artificial +intelligence and the programming language Lisp. In approaching +computing through this book, you'll focus on two essential techniques. + +<P>First is the notion of <EM>symbolic programming.</EM> This means that +you deal not only with numbers and letters, but with structured +collections of data--a word is a list of characters, a sentence is a +list of words, a paragraph is a list of sentences, a story is a list +of paragraphs, and so on. You assemble things in terms of natural +parts, rather than always viewing data in terms of its tiniest pieces. +It's the difference between saying "find the fifth character of the +third word in the sentence" and "scan the sentence until you pass +two spaces, then scan past four more characters, and return the next +character." + +<P>The second technique is to work with <EM>higher-order functions.</EM> +That means that you don't only write programs, but rather you <EM>write +programs that write programs,</EM> so you can bootstrap your methods +into more powerful methods. + +<P>These two techniques belong at center stage in any beginning +programming course, which is exactly where Harvey and Wright put them. +The underlying principle in both cases is that you work with general +parts that you extend and combine in flexible ways, rather than tiny +fragments that you fit together into rigid structures. + +<P>You should come to this introduction to computing ready to think about +ideas rather than details of syntax, ready to design your own +languages rather than to memorize the rules of languages other people +have designed. This kind of activity changes your outlook not only on +programming, but on any area where design plays an important role, +because you learn to appreciate the relations among parts rather than +always fixating on the individual pieces. To quote Alan Perlis again, + +<P><BLOCKQUOTE> +You begin to think in terms of patterns and idioms and phrases, and no +longer pick up a trowel and some cement and lay things down brick by +brick. The Great Wall, standing for centuries, is a monument. But +building it must have been a bore. +</BLOCKQUOTE> + +<P>Hal Abelson +<BR>Cambridge, MA + +<P><A HREF="../simply-toc.html">(back to Table of Contents)</A> + +</HTML> |