When did you first try Lisp (meaning here and throughout the survey "any member of the Lisp family") seriously, and which Lisp family member was it?
I tried Scheme a few months ago, when I heard the SICP lectures were out on video (as divx and mpeg files).
What led you to try Lisp?
There's a background buzz about lisp when you go deeper into CS. Of course, there's the Kent Pitman interview at Slashdot, and Paul Graham's joyful rantings... Plus a video of Gregor Kiczales talking about metaobjects.
Concretely speaking, SICP was free (I soon bought the book + answer guide) and Dr. Scheme was an incredibly usable beginner's environment. The nice thing about lisp is that there's the other dialect when you want to step up in power, CL. Definitely like going from a crotchrocket motorcycle to a Lamborghini with a lot of strange tools and which can, in certain circumstances, fly. So I bought PAIP and a few other CL books.
If you were trying Lisp out of unhappiness with another language, what was that other language and what did you not like about it, or what were you hoping to find different in Lisp?
I feel it would be immature of me to be unhappy with other languages, since that means I haven't gotten good yet at building powerful tools to generate code in them.
How far have you gotten in your study of Lisp? (I know, that is hard to measure)
I'm ok. I'm limited by my lack of CS knowledge, so I'm studying "how languages work" right now, with a couple texts. So there's little point to continuing to learn lisp until there's a point to it.
What do you think of Lisp so far?
See absurd flying Lamborghini reference above.
Seriously, I think CL is an incredibly expressive language, and the reason I compared it to a flying car with all sorts of tools, is because there are incredible things like the disassemble function. Who would have thought to put this into a standard? This function most of all means something, though I don't know how to put it into words. The Quality with No Name, as Christopher Alexander would put it?
At the same time, I don't want to sound like some zealot; it's also just a programming language, though one done pretty well. I'm glad the AI years went through a lot of excesses, since I suspect CL would have been a lot cleaner and yet lesser otherwise.
(By the way, I don't actually know what a Lamborghini is like. Feel free to edit this page and put in a better car with an exotic name.)
Switch Date 2003 RtL Paul Graham RtL Kent Pitman RtL SICP RtL Word of Mouth
There are some new thoughts I have since I started doing stuff with lisp.
- no need for XML. Something just like XML is built in, but stronger and looks just like normal lisp syntax. None of these irregularities that make using XML painful. You're barely aware of crossing over into using it.
- documentation advantages -- few syntax details to look up. I just need to know what some function or macro does.
- documentation advantages II -- Try out apropos and describe. The apropos command is like a Google where you type in a string and shows you what commands and symbols look like it. describe explains what it knows about a piece of data or function you show it. Common Lisp is not a language, but a system.
- accepts no compromises. Integers are actually integers, not those sharply bounded things that other languages call "integers." Previously I'd wondered if people were living in illusions or not. And operations on rational numbers appear sane!
- shortcuts the mental stack most languages have. Thoughts don't have to be "compiled" by the human mind into syntax. Syntax does not unduly influence coding decisions. Syntax may have actually been an insane presumption by language designers, an early optimization for the sake of end-users who are already insulated behind wizards and GUIs. Why have languages look like high-school algebra? Don't programmers have enough pride to desire a notation made for them, just as mathematicians would scoff at writing equations in English?
- greater freedom in naming symbols. Sometimes, you simply need to name a symbol "->", just because it's the most readable and maintainable thing to do.
- you don't need to abuse language features to do what you want. For example, Kent Pitman explains that many languages rely on OOP for syntactic abstraction, not just data abstraction. Lisp has macros for syntax needs, leaving OOP for what it's designed for.
- completeness. There are a lot of holes filled in by Lispers. Like the disassemble function, which shows you what a function compiles to. Or the fresh-line command inserts a newline to the output stream, unless it knows there wasn't one before. Little details that they cared about enough to get right. Especially since they're not hard to do; you just have to care.
- more unique advantages of lisp.