Live data from Hacker News

Learn Lisp the Hard Way

learnlispthehardway.org

81–90 of 144 posts

Re: Learn Lisp the Hard Way

#81

From the FAQ: "Is Lisp as hard as people say it is? No. Lisp is actually the simplest programming language, and has no syntactic cruft. While it wasn't designed to be “easy to learn” like Swift, Python, Ruby, or Basic, there is less overall to learn and you will be writing real, useful programs in Lisp sooner than you could with other languages." Is it necessary to put strong subjective statements that have no suppor…

Syntax wise, it is probably the simplest language as long as you don't include Turing tarpits.

Of course, simple syntax is nice, but it doesn't actually get you very far by itself.

Re: Learn Lisp the Hard Way

#82
post #51

Earlier quoted context omitted.

I believe that Lisp requires years to master. If you're a bright developer, who puts in time eagerly, it will take at least six months before you begin to "get it". At that time you may start itching to evangelize to others, but those who have not put in the time will not get it. It's not realistic to try to make someone see in one or two e-mails or postings what took you a year to see for yourself.

I think the whole enlightenment thing w.r.t. lisp is overblown.

From what vantage point?

Re: Learn Lisp the Hard Way

#83
I really hope Colin finishes this as I've always thought Lisp would be a better beginner language if there was a book like mine for it. You've either got "The Little Schemer" series, which is annoyingly written for little kids but close to the style, or you have giant academic tomes that only hard core geeks would bother reading. A "trainer" book like mine would definitely solve this gap.

The intro is a little bit copied but it's fine since he is keeping to the idea and the "rules" I have, but could be nicer if it was in his own voice more. Who knows, maybe he does write like me a lot or he's just ultra inspired.

The big reason I say people should use their own words, apart from copyright, is that if you're writing one of these books for a programming language you love then your words will express that better. You'll say things that come from your community and culture, and you'll give away a sense of what you like about that language. When people copy what I say the prose comes out obviously not by them and not for that language.

Anyway, this is pretty cool and I hope he works on it some more.

Re: Learn Lisp the Hard Way

#84
post #35

" that Lisp is not already the de-facto programming language is just a reflection of the state of the world as a whole—only a very small percentage of the population are excited for the technological singularity, but the singularity is coming no matter how much people complain. " As a transhumanist myself I resent the arrogance that led to this ridiculous appropriation. Yes, Lisp is pretty great, but the use of other…

>If the goal here is to evangelize Lisp, radiating this kind of pomposity seems like a questionable move because it reflects badly on the community you are trying to win new members for. Worse, this could be interpreted as willful cluelessness in the face of the rich multi-language ecosystem potential readers are living in.

How circular! A Lisper would respond that the very passage you critiqued is the appropriate response to your critique---that Lisp is coming, no matter the tone, and our complaints or praises will have no effect on the final outcome.

Perhaps Lispers would do well to be less pompous, but that is for their welfare, not Lisp's.

Re: Learn Lisp the Hard Way

#85
post #35

" that Lisp is not already the de-facto programming language is just a reflection of the state of the world as a whole—only a very small percentage of the population are excited for the technological singularity, but the singularity is coming no matter how much people complain. " As a transhumanist myself I resent the arrogance that led to this ridiculous appropriation. Yes, Lisp is pretty great, but the use of other…

Something I find ironic is that Zed Shaw dislikes both haskell and lisp programmers for a variety of reasons that would only provoke if I put them here, some of which you already mentioned. Search "lisp" in second source. [1] http://lemire.me/blog/archives/2010/05/31/computer-science-i... [2] http://learnpythonthehardway.org/book/intro.html

Yeah that is kind of funny, but if he finishes it then I can update that intro to point people at his book instead.

Re: Learn Lisp the Hard Way

#86
"Lisp is, at its heart, a very mystical language, that blurs the line between programming and magic."

I like lisp, but this kind of mystical gobbledeygook is not helpful. It's worth noticing that mystics and lisp-ninnies are alike in a very important way: promising much, and delivering little. The people who actually accomplish things in lisp (Yann LeCun, Richard Fateman) do not speak in this preposterous mouth foamy way. They also don't work for overt frauds like d-wave.

Re: Learn Lisp the Hard Way

#87
post #83

I really hope Colin finishes this as I've always thought Lisp would be a better beginner language if there was a book like mine for it. You've either got "The Little Schemer" series, which is annoyingly written for little kids but close to the style, or you have giant academic tomes that only hard core geeks would bother reading. A "trainer" book like mine would definitely solve this gap. The intro is a little bit co…

Practical Common Lisp is a very good introduction. It's very much targeted at competant non-academics.

Re: Learn Lisp the Hard Way

#88
post #51

Earlier quoted context omitted.

I think the whole enlightenment thing w.r.t. lisp is overblown.

From what vantage point?

I'm not the above poster but I think the power of macros is way overhyped and not nearly as strong as people claim. I see the claim of "you can write a macro to do it" for any imaginable feature all the time, but it is simply not true.

A recent example from personal use is continuations. Scheme has them as a first-class object. Common Lisp does not, but a common claim is that you can write macros to provide continuations. Some people have: there's "cl-cont" available on Quicklisp, which is a macro that will code-walk your functions to turn them into continuation-passing style and thus allow you to use continuations in those functions.

So that's great, right? Common Lisp now totally has continuations? Not at all. In order to get this feature, you need to wrap ahead of time (specifically, at compile time) the functions you want to be continuable, and all of their callers, in this macro. You cannot simply use a function that you've been given as part of a continuation, it had to have been compiled under this macro.

That's where the power of macros completely falls down and, in my opinion, gets completely overblown. Yes, your language is extendable, but your extensions are limited to computation and source-to-source transformation at compile time. You can't apply any of that power to already-existing artifacts.

Re: Learn Lisp the Hard Way

#89

I have nothing against Lisp, but... >Is Lisp as hard as people say it is? >No. Lisp is actually the simplest programming language, and has no syntactic cruft. I always see this used when claiming certain languages are easy to grasp. "It's not complex at all! The syntax is incredibly simple!" x86 assembly also has very simple syntax but it's not too easy for beginners to write in, beyond very simple and small programs…

The syntax of assembly language isn't combinative, beyond simple catenation. You're not creating trees, just a "link sausage" (or, a graph, more accurately) of instructions. Lisp syntax expresses tree structures; it actually does what other languages achieve with complicated syntax. They have parsers which build trees out of nodes. Those trees can be written in a Lisp-like way. E.g. a C declaration might be turned, by a C compiler, into (declare specifiers-qualifiers declarators), where specifiers-qualifiers might look like (const int) and declarator might be (a (pointer (array 3))), giving us (declare (const int) ((a (pointer (array 3)) (b (pointer (function (a int) (b int))))) for the surface syntax "const int (a)[3], (b)(int, int)". It's not just that the syntax is simple, but that it can capture the structure of programming (and other) languages while remaining simple.

Re: Learn Lisp the Hard Way

#90
post #76
post #3

Earlier quoted context omitted.

Just because Lisp looks foreign doesn't mean that it's harder. The syntax is different , but it is also very simple . If this were untrue, Scheme wouldn't have survived as a teaching language all these years.

Simplicity of syntax does not translate to ease of use. Or else we'd all be programming in one-instruction Turing Tarpit.

That's right; Lisp's syntax is not only simple; it is simple while retaining the power to combines together and express any syntax tree. If you put on special Lisp goggles, you can see S-expressions inside the syntaxes of other languages.
Post reply on HN