Functional programming

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.