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
|