Tuesday, June 24, 2003


Paul Graham's Hundred Year Language.

I like LISP. I like the Scheme variant best, because I think it just comes up a lot cleaner. You can absolutely work any sort of computation model into it, which people can and have done. The distance between the language and the machine is short, and there's a ton of power there. All is good so far.

So why is LISP so hard to read? It's absolutely inscrutable at times. Yes, you get better at it with experience, as we all do. Even with that experience, it's hard to pick out what's going on. I think there are a few reasons for this:

  • A general paucity of commenting. This is often because it's hard to figure out where to put them.
  • Poor naming conventions. This is one of the things I like about Scheme...vastly superior naming strategy relative to CL.
  • The "you can do anything factor". Macros are super cool, and super-tangly. Forcing someone to understand your private language before they can understand your code is pretty cruel. And see the note about comments above.

The thing that's missing from most LISP code are the conceptual signposts that help us "get" things. When you're looking at C code, you look for curly braces to tell you where code blocks are. You look for parentheses to see function definitions and calls. You look for brackets to see operations on arrays. When you take in a wash of code quickly, your brain can pick out these signposts and construct a mental map of an area fairly quickly.

LISP just uses parentheses for all of this. Yes, it's very powerful, but it's also confusing to look at. At a minimum it might make sense to be able to use the other forms, when wanted...just to provide that visual clue.

The terseness of LISP really works against it when it comes to comprehension. On the other hand, sometimes things seem a little inscrutable because something complicated really is going on; something that wouldn't have bee possible in another language.

I like the language. I just wish there were more signposts.


8:42:09 PM    

Games are about Shooting.

Because it's so darn easy to program them. Player pushes button, little missile flies through space, does/does not hit target. Easy math, dammit. Scoring a more complex interaction, like a social one, requires actual thinking by a developer. You've got to balance a complex model. That's a pain in the ass.

And that's why we still have so many shooter arcade games coming out. Bleep! Faaazooot! Bawooom!


8:41:40 PM    

SpamBayes is Badass.

I usually have about 3 months of spam at any one time...just waiting for the day that I needed a training set.  I was using Cloudmark and was somewhat happy with it, but there was just too much stuff sneaking through.  Other guys at work have started using SpamBayes, and recommended I give it a try.  I read Paul Graham's articles a while back, and I like the way it individualizes itself.  Good mathematics there.

In any case, this thing just positive rocks.  It's classified virtually everything correctly..only had one false positive, and a few maybes.  I'm sufficiently impressed that I unsubcribed from Cloudmark.  Sorry guys, but your distributed collection just doesn't beat a good statistical method.  And SpamBayes is faster.


8:41:00 PM