Friday, December 14, 2007

Winter break plans

I've actually gotten all A's again so far, with only my cryptography final to go. Quite surprising to me, but I can't really complain. Unfortunately, I tend to get less productive instead of more productive during break (that's what it's called break, I guess?), even though I have no schoolwork to bog me down. In any event, my to-do list:

  1. Sleep.
  2. Study for the Western Civilization I CLEP exam. I need two more gened classes (6 credits), and this exam will satisfy the requirement. I only need a 50%, so I can't imagine myself studying very hard. Hope it doesn't come back to bite me.
  3. Read The Little Book of Semaphores, or at least some of it. I'll probably be helping design a class on concurrent programming next semester, so I figure it's best to advance my knowledge as best I can so I'm not useless.
  4. Sleep.
  5. Look into more web programming. I got bored this week and started trying to scrape together a new template for a blog; you know things are going bad when I start writing HTML and CSS. My hope is to do some stuff with Django, a Python web framework. If no other ideas come to mind, I may end up replacing my blog with a Django site. I haven't completely ruled Pylons out yet, since I still subscribe to the mailing lists, but since the Django book was published recently, hopefully it will provide a better source of documentation. And hopefully the book will be released online during break, or I'll be sad.

I've unfortunately put language-related things behind me for now. If I'm looking for an industry job, it probably isn't very marketable.

The difficulty of Lisp

An blog post on the difficulty of learning Lisp recently appeared on Reddit, which argued that Lisp was actually not very hard to learn. Unfortunately, to be honest, the reasoning totally sucks.

I think the "Lisp is hard" idea is general bunk. It’s different and looks funny (but, hey, if you can stomach C++, what can’t you take!) but getting started in Lisp is no harder that any other language. In fact, its easier to get started in Lisp than it is in programs that require a separate compilation step.

Of all of the points to argue why Lisp would be easy, this is certainly not a very good place to start. A hello world application indicates nothing about the difficulty on learning a language. Well, almost nothing. Java's hello world is often cited as indication of how difficult it is for some to learn Java, but I don't think the converse applies. I do agree with the author, though. It's going to take a lot of work of some sort to start convincing people otherwise. Mark Guzdial, a long-time teacher now at Georgia Tech, wrote a post about the best paradigm for teaching programming, saying:

Supporters have argued that a functional approach is most like mathematics (and is thus more familiar) and that non-mutable variables lead to more easily maintained software, are easier to understand, and are more likely to be provable. A paper at ESP by Michael Eisenberg and Mitchel Resnick showed how hard functional programming is for students. If the students are comparing functional programming to mathematics, it’s not obvious and even if it’s happening, it’s not clear that it’s helping.

Unfortunately, the article was published in 1987 and isn't even available at ACM's digital library. Funny enough, the five comments at the time of this writing all agree that Lisp is not hard. The general consensus seemed to be that Lisp makes other languages hard, that learning Lisp first would make other languages harder. I find this somewhat difficult to believe, and very subjective at best. It may certainly have an impact (to a degree) on what language you prefer, but as to increasing the difficulty of learning, there probably isn't much research in that area. It's similar but more radical to the debate over whether learning object-oriented programming before procedural programming (Java, C) is better.

Indeed, some of the resistance to learning Lisp is probably FUD of some sorts. It's probably also somewhat related to many universities' reluctance to teach a language that isn't used in the industry, which doesn't use Lisp because universities don't teach it, ad infinitum. However, it's certainly unfair to argue about ease of programming with hello world programs.