Sunday, May 13, 2007

Back to Basics

These days I have been studying a lot of programming. To be fair, it's not like I ever stopped studying; it's just that recently I have been getting more than my normal share of programming lessons.

I guess it all started when I learned of John Backus' death. The Register's article provided some intriguing links on Backus' work, and before long I wound up looking for some manual on Scheme, seemingly the closest match available today to the late scientist's ideal of a programming language. What I found was a book entitled How To Design Programs, a very nice introductory book on computer programming, that doubles as a Scheme manual. I found it a little childish at times, but at the same time, the ellegant simplicity of the development process it constructs led me into rethinking my own programming practice, whether and where it needs some improvement.

Then there's Dive into Python. This is a book I've known for some time, but only got serious about reading it after finding that Python is the main programming interface for Numenta's NuPIC platform. The book is easy to follow, and Python does look powerful enough to be well worth the trouble of learning, but so far I can't say I'm impressed. Let's see if this changes when I get to actually coding in it.

Last but not least, there's Matlab / Octave. This semester I took Artificial Neural Networks as a discipline in the master degree course, and I have been using Octave to implement the algorithms presented by the professor; and I have also been using Matlab as a fast prototyping tool for the artificial vision project I am in at work. Both are very nice environments to work in, with highly expressive scripting languages and close-at-hand plotting tools for visualizing the data; most of the time their performance is also good enough, but there are times (specially when I am processing those huge point clouds I get from our artificial vision software) that I wish there was some readily available compiler, or some other straightforward way to speed up things. Seems you can't get everything you want, though.