
(to Kirsten, Akhmechet, cc: Haskell-Cafe)
I would divide the book into two parts. The first part would introduce Haskell via traditional small examples. Quick sort, towers of Hanoi, etc. The second part would have two or three large examples - something that people would relate to. I'd take a web application, tetris, and perhaps a chat server.
Tetris could be fun, because it would allow to present your software/learning curve to people without technology background, and maybe they would look into programming then as well. Your setup also reminds me on the book by Peter Seibel on learning Lisp. He shows how to program a small database to organise your CD collection (by writing a sort of SQL replacement.)
I've often thought that reading code (if it's well-written code) is a little like reading a poem, which of course is also a little like listening to classical music.
Indeed, poems are another form of abstract expression, and certainly it would be interesting to think about similarities with programming. Poems can be interesting because of multiple associations in words, e.g. an obvious meaning and hidden meaning. And this involves some parallel processes. But to me, the idea of parallel processes is more clearly to see in music. Processes are rendered in the voices of instruments, and every voice transmits or contributes to a certain message. In a way, the voices of an orchestra can be seen to describe a process (experience) or function. Another idea that comes to my mind is attributing processes to protagonists in a drama. (Another quote how programming shares aspects of making music. From the preface of Structure and Interpretation of Computer Programs: "A computer is like a violin. You can imagine a novice trying first a phonograph and then a violin. The latter, he says, sounds terrible. That is the argument we have heard from our humanists and most of our computer scientists. Computer programs are good, they say, for particular purposes, but they aren't flexible. Neither is a violin, or a typewriter, until you learn how to use it." Marvin Minsky, ``Why Programming Is a Good Medium for Expressing Poorly-Understood and Sloppily-Formulated Ideas'')
I've been thinking a lot lately about how to
present computer science (and programming languages) to a popular audience, too.
Yes, this is an important topic. But there is also the common misunderstanding that computers = Von Neumann machines. I think the concept of computer is better to see as sort of telescope or translator. Computers allow to look at processes (and complexity) which would otherwise not conceivable to our limited minds. The idea of computers as telescopes is from Daniel Dennett though. I will think about these ideas, and let you know my progress. Patrick ___________________________________________________________ Der frühe Vogel fängt den Wurm. Hier gelangen Sie zum neuen Yahoo! Mail: http://mail.yahoo.de