As a programmer, I started quite early, when I learnt GW-BASIC on my sister’s PC, and then continuing (yes I know that it’s more a regression, but..) with the C64 BASIC and then QBASIC on MS-DOS 6. Probably most of you wouldn’t consider BASIC a programming language, but I was 7 years old, it was enough already. I then learnt VisualBASIC 5 through a CCE distribution that was free as in soda with some magazines (laugh as you wish, but this helped me when I was in high school, as one of the teachers was obsessed with Visual BASIC, even though at the time I would have preferred working with Borland C++ Builder, probably I would have been even faster to write the exercises if I had it).
Of course, when I was fifteen I understood that VisualBASIC was bad and didn’t allow me to do what I wanted, and so I started studying C++; it wasn’t until the second year of high school that I ended up meeting Pascal (for school), but it was piece of cake after studying C.
Then, I ended up learning the basic Python, and PHP, and of course Java. Not for school, no, as we studied C++ in high school, and I already knew enough of it to slack off, but I decided to look at those languages, and they paid off, even if I’m not too confident with Python, I was able to fix up Portage to run on FreeBSD at the start of Gentoo/FreeBSD.
Ruby came more or less last year, I was reading so much good about it, and I wanted to try it, and I loved it. I was never able to get over the basic Perl, it still makes me puke after too much of it.
So, this whole introduction was just to say, up until now I never got interested in any functional programming language. But lately I’ve been using Emacs, and from time to time I need to understand why some particular mode does not work, especially since I like looking for modes doing more stuff for me so I don’t have to do all of that myself (nxml, nxhtml, quilt.el, ebuild-mode… well okay, ebuild-mode I originally tried to write, and mostly failed, but thanks to our magnificent Emacs team we now have gentoo-syntax that works flawlessy). And sometimes I have wishes that I’d like to implement myself rather than doing like I did today (I did go to Ulrich asking him to implement something for me 😉 ).
So in light of this, I asked to the LISP wizards in #gentoo-lisp for a good way to learn LISP, in particular the variant used by Emacs, and Ulrich suggested me the introductory text on Emacs LISP. I started reading it tonight, and I have to say that at least now I know how to read basic LISP.
As an addition, I found the podcast for CS1A from U.C. Berkley on iTunes, and loaded it on my iPod; okay it teaches Scheme, but it’s still functional programming, and some GNU tools (included LilyPond) seems to be written in Scheme, so I might need it one day, continuing to work as a maintainer 🙂
Oh and for who’s following xine’s bugtracker story, tomorrow I should have an interesting update for you all.
scheme is one wicked language. i can tell you this much ;-)but it’s fun to learn, nevertheless.
Scheme is in fact more functional than most Lisp dialects. Don’t know about ELisp, never studied it.My favourite functional language, simply for the fun factor, is Haskell.
I was lucky enough to be taught Haskell at university. It fucks with your head but it’s a refreshing change from the regular stuff.