about summary refs log tree commit diff stats
path: root/js/games/nluqo.github.io/~bh/ss/foreword.html
diff options
context:
space:
mode:
authorelioat <elioat@tilde.institute>2023-08-23 07:52:19 -0400
committerelioat <elioat@tilde.institute>2023-08-23 07:52:19 -0400
commit562a9a52d599d9a05f871404050968a5fd282640 (patch)
tree7d3305c1252c043bfe246ccc7deff0056aa6b5ab /js/games/nluqo.github.io/~bh/ss/foreword.html
parent5d012c6c011a9dedf7d0a098e456206244eb5a0f (diff)
downloadtour-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.html107
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 &quot;modern&quot; 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
+&quot;prequel&quot; 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 &quot;find the fifth character of the
+third word in the sentence&quot; and &quot;scan the sentence until you pass
+two spaces, then scan past four more characters, and return the next
+character.&quot;
+
+<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>