BrowserUK,
Off topic, I recommend (if you ever find time with all your studies) pursuing LISP, at least to the point where you see its power (the MANY uses of macros). I think you'd like it a lot. It is so completely customizeable, so you can make it whatever you want. It seems very perlish, but more-so. Except that in common lisp they often opted for long function names instead of short ones. But I've found that my ability to employ once-and-only-once to the extreme and to introduce new abstractions everywhere to simplify and shrink my code -- I've found all that makes up for the annoyingly long names. And it's fast.
Anyway, here's a good (free) book that sprints through the language so it can get to all the coolnesses of macros. Some of the concepts are very different from what I'm used to, so it took FOREVER to get through some of those middle chapters. But the material I learned from the effort was worth it.
http://paulgraham.com/onlisp.html
Thanks for all the enlightening posts. They've been a joy to read (if a bit long ;-)