– Why a new language and why Haskell?
Reason 01: Understanding my students or why I started learning Haskell, Part I
Reason 02: Understanding my students or why I started learning Haskell, Part II
Ok, so it was decided. I, the volunteering Guinea pig, should start the quest for a really good book – not exactly a holy quest for the holy Grail but still (and finally), a quest!!!
Quest:
- Find one good book to a limited list of programming languages (Scheme and Haskell).
- Use the book to learn the programming language.
- Find what’s good and bad about the book – and compile that to a list.
I will cheat and GOTO 3 before I finish (2). ….. I, personally, will use this list later when I will look for books for new courses or when updating existing ones.
Disclaimer (redundant given the text above, but important!):
- I am NOT looking for the best book for someone already being a programmer.
- I am looking for a book that explains the language for a newbie.
- I totally suck at, among other things, writing manuals – so who am I to complain?
And ….. “I am not looking for a New England”
Searching for a good book
…… with my good eyes open
Scheme documentation
Oh boy, will I get in trouble now.
I started with Guile/Scheme docs but they were somewhat dry and there were some barriers that lowered my motivation. I couldn’t find book that really inspired me to continue reading. I am not saying that there is anything wrong with the books, but I don’t think they were aimed at newbies.
Haskell documentation
I tried some Haskell guides but starting out with “dry mathematical introduction” didn’t really motivate me. And an almost 600 pages long manual is kind of tough to have in front of you.
Heureka, I found Learn You a Haskell which seemed nice. After a while I noticed that I’d been reading and hacking for two hours. Now, that’s a sign of a good book! Perhaps not for programming newbies but nice for me. Ok it’s about time, I am coming out of the terminal/command line closet: I like the graphics!!
The last year I have tried to teach the same way as the book did. Mix theory and practical studies in small increments.
Haskell it is… I will learn Haskell
So this book made the decision easy – I will learn Haskell, since the book will not only learn me Haskell but I hope it will also give me some pedagogical ideas.
Some extra words here. It is crucial for me that the tools for the language (e.g. compilers) are Free Software. Furthermore the language specification should be free. ….. and there should be an emacs-mode for the language!
Result:
These are my findings so far. And this experiment is flawed from start since I am using only one person, furthermore that person is myself. So I am the first to blame myself for not using a scientific approach. Still I will use the results as input for choosing a book for students in the future.
A good book for newbies is imho a book that:
- Is short enough to feel you can finish it in a couple of days/weeks – certainly doesn’t mean you should master the language after just a few days. 100 is a perhaps bit short and 600 pages is a bit too long. 200-400?
- Uses Small increments. It’s important the theory and practice/hans-on (and exercises) are show with small increments. Give the user gratification every now and then.
- Has quite a few examples that the reader can copy and try out herself.
- As quick as possible, give me what I need to write a small but useful program (play audio, fetch web pages..) and then teach me more. I think it is important to quickly show the reader that the language can be used for something good and useful.
- Does NOT write your own API and use that throughout the book.
- Provides some exercises and well commented solutions.
- Uses a relaxed language. Not a dry/mathematical one. Programming is fun!
For those of you saying that the Haskell book is not fulfilling all of the above. Yes, I agree. It doesn’t. But it’s the best I found and it’s good!
And for those saying “write your own damned book then!” – perhaps I will. Fact is that I secretly have started.
… If you feel there’s something missing in the list above. Please email me (hesa _AT= sandklef.com) with suggestions or write your comments on the blog.
Btw ……. my favorite programming books:
- Linux Device Drivers (I liked the 2nd edition best)
- The Art of Computer Programming
- Expert C Programming: Deep C Secrets
- The C Programming Language
Woops lots of C books there! I’ve read some Tannenbaums as well from which I learned a lot, but they’re not among my favorites.
And I really have to bring this paper up:
- Reflections on Trusting Trust by Ken Thompson
Coming up next: A Good book introducing programming to newbies.