
The way to write the book, I think, would be to take something
referred to as "real world problems" - problems a large proportion of
programmers deals with and gets paid for, and then show how to solve
these problems in Haskell (preferrably quicker and easier than with
"conventional" solutions).
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.
Thanks,
- Slava.
On 12/11/06, Kirsten Chevalier
On 12/11/06, Patrick Mulder
wrote: In my opinion it would be important to increase the understanding about "semantics" and "processes". And it would be good to introduce the concepts in a similar way as Profokiev introduces the sound of classical music in "Peter and the Wolf". If my suspicion is correct, functional programming would be very close to composing classical music (or concurrent algorithms and processes). Has anyone of you similar thoughts on music and programming ? What are the basic ingredients for making abstractions (like in music rythm, keys, tempo, ...) ? It would be useful to express different ways of expression by explaining first "semantics" of processes and abstractions.
I love the analogy, though it's been at least eleven years since I tried to compose any music. (Coincidentally, eleven years ago was when I learned to program...)
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. There's certainly a sense of rhythm involved in how you choose variable names: that's why nobody likes variable names like theHashTableThatStoresMappingsBetweenNamesAndEmails.
I'm not sure what the analogy with keys would be. Maybe writing in a point-free versus a pointed style is sort of like transposing a melody into another key.
For the potential book, I definitely think a Peter-and-the-Wolf-like idea is good. (The wolf would be unsafePerformIO, obviously.) Probably any metaphors that assume any knowledge of music should be left for a different piece of writing that assumes a different audience, but pursuing it would be fun. I've been thinking a lot lately about how to present computer science (and programming languages) to a popular audience, too. I don't remember who originally posed the question of "who's going to be the Carl Sagan of computer science?", but it's a question somebody should try to answer. (The answer isn't "Douglas Hofstadter", because obviously somebody needs to be out there explaining why languages with static type systems are cool, too.)
Cheers, Kirsten
-- Kirsten Chevalier* chevalier@alum.wellesley.edu *Often in error, never in doubt "Are you aware that rushing toward a goal is a sublimated death wish? It's no coincidence we call them 'deadlines'." -- Tom Robbins _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe