Live data from Hacker News

Learn Lisp the Hard Way

learnlispthehardway.org

91–100 of 144 posts

Re: Learn Lisp the Hard Way

#91
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…

I don't think The Little Schemer is intended for young kids. The preface says

> The Little LISPer is based on lecture notes from a two-week ``quickie'' introduction to Lisp for students with no previous programming experience and an admitted dislike for anything quantitative. Many of these students were preparing for careers in public affairs.

I don't know exactly what that means, but it sounds university-level?

Re: Learn Lisp the Hard Way

#92
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 re…

You could choose to understand it that way, but only if you want to kill the conversation. Which is fine, of course. Judging by the amount of controversy mirrored in the voting of my comment (I suspect moderator intervention was involved as well), a large number of HNers really do believe that all non-Lisp languages are abominations, that there is no appropriate paradigm besides Lisp's, and that Lisp already contains all the innovations and concepts that could ever be worthwhile. That's an almost cartoonishly narrow way of thinking.

At best, this is a religious point of view, and at worst it's also a matter of being part of the in-group - which means this opinion is calcified because it's a critical part of these programmers' identity.

I generally don't like to comment on these kinds of threads anymore than I would on political or religious ones. However, this thread is about outreach to people outside of the cult. Continually forcing the impression of being a cult might well serve to recruit more followers, but I'm wondering: does it really have to be a dogmatic movement? Isn't the larger opportunity here to try and reach another kind of person?

I know there's a taboo in this community about addressing aggressiveness and arrogance, and maybe that's an excellent policy to prevent flame wars. However, I think it's a mistake to overshoot this target by accepting abrasiveness and fervor as valid replacements for reason and reflection.

Re: Learn Lisp the Hard Way

#93

Earlier quoted context omitted.

There is not so much difference between "parseable by humans" and "parseable by compilers". What is hard for the machine is hard for you also. For instance, if you're asked to sort a deck of 1000 randomly shuffled cards, each printed with a unique integer, you will not do better than O(N log N). Take any LALR(1) defined programming language. Now write it in one line without indentation. How easy is it to parse (for y…

I think you're missing the point and/or wrong. First, I don't want to have to turn myself into an LALR parser to read some code. > What is hard for the machine is hard for you also. But what's easy for the machine may well not be easy for the human. LZW isn't very hard for a computer, but good luck reading it. Syntaxes that may be equivalent to the computer may well not be for the human. Yes, a human can train itself…

My point is hinting at that Lisp is readable when it is properly written with indentation and alignment. And when good coding practices are followed, like writing reasonably small functions, using good variable names and so on.

Humans do not count parentheses and keep track of nesting levels when reading Lisp, any more than they go through LALR(1) state transitions when reading C++.

We structure the code in 2D, and use visual cheats.

With Lisp, there is no clear distinction between "language" and "library".

In any language, code is hard to understand when it uses a lot of external symbols from a library.

No matter how well you understand C, if I suddenly give you a tarball of the USB subsystem of a kernel you've never worked with, and open a random file, it will look like gobbledygook, even though you "understand" the declarations at the "language level".

Most operators in Lisp code are essentially library symbols; and if you're missing some key symbol (such as the outermost one), you might not be able to understand it at all.

Lisp readability requires not only nice code structure, but a decent working vocabulary: enough vocabulary that you're not tripped up by the standard things that are in the language, and you know what is in the language and what is defined by the program.

For instance if you see some (macrolet ...) form and you have no idea what that means, you may be stuck. What is macrolet? Did the program define that somewhere? An experienced lisper doesn't bat an eyelash. Of course she knows what macrolet is: it's a binding construct for making lexically scoped macros, doesn't everyone?

(But at least you know from the unambiguous syntax and formatting clues what goes with what: what parts of the whole thing are arguments to that macrolet, and which are outside that macrolet! So when you look up macrolet in the reference manual, you know exactly what is being passed to it and can figure it out without any undue difficulties.)

Re: Learn Lisp the Hard Way

#94
post #69

Earlier quoted context omitted.

Ignorance of things like Lisp is a cultural defect in computer science. It's just a symptom of a greater problem: lack of awareness of what has already been done by prior generations. If electronics engineering were like CS, some twit would be reinventing the long-tailed differential pair today, and trying to get a patent on it, with full backing from his research institute or employer.

That's not the issue. It's about whether you think that Lisp is the only objectively correct answer whenever the question arises "what language are we going to use for this?". Willful ignorance about other languages and their features is as much a cultural failure as, the hypothecial, unwillingness to learn about Lisp.

The point is that other languages added little to what Lisp already had to offer over half a century ago.

Every language has its use, but really we ARE wasting time by splitting the worldwide community of programmers in different languages.

Look at how most programmers love one language and advocate it's the best there is. That's called a split.

Aren't we supposed to not reinvent the wheel?

Re: Learn Lisp the Hard Way

#95

Earlier quoted context omitted.

I wouldn't say "lies" so much as overly optimistic opinions. The idea that you can write a useful program in Lisp faster than in other languages is pretty unsupportable. For most users, the time and effort spent getting Lisp up-and-running on their machine of choice will already have lost. Incidentally, I played with the interactive REPL and it wouldn't advance beyond the second page. And, if you do write a useful pr…

The only thing that makes programs easy to deploy is the popularity of the language/environment they're written for. If the language you're using is popular enough that you can download the implementation using your system's package manager, deployment is easy. If not, it's harder. And for any language that's popular now, there was a time that it wasn't yet popular, and deployment was a pain. So I think you have it b…

This is only telling half the story. It is perfectly true for, say, Python (still a pain to deploy on Windows, or at least it was the last time I tried), but newer languages that are less popular like Go do not have this problem. Even Rust, a language that is only in alpha, does not have this problem!

Why is this? It's because they can live in, and interact with, the common linking and loading ecosystem that the rest of the world lives in: the C ABI. If you can link your output into something that respects the C ABI, you can deploy it[1].

Common Lisp implementations could immediately solve their deployment problem by living in this ABI. So far, the only one that has done so is ECL (which is an excellent project).

[1] A few alternatives exist. The Java and .NET ecosystems are also viable link targets (as I think Clojure has proved).

Re: Learn Lisp the Hard Way

#96
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…

http://landoflisp.com/ is a nicely informal book on learning lisp that is easy to get into. Pretty sure I've seen it highlighted here a few times.

Re: Learn Lisp the Hard Way

#97
post #46

I'm surprised there is no mention of Lispbox[0], by far the easiest way to set up Common Lisp. [0] http://common-lisp.net/project/lispbox/

Awesome, I'll give this a try. Does it use Steel Bank Common Lisp ?

They wrote that they use "Clozure Common Lisp compiler" [1]

[1] http://ccl.clozure.com/

Re: Learn Lisp the Hard Way

#98

An easily overlooked, seemingly forgotten book that is great for newbies is Stuart Shapiro's _Common Lisp: An Interactive Approach_. I stumbled into Lisp some fourteen years ago when a hard copy of the book landed my way. The book is now freely available in electronic form (and has been for years): http://www.cse.buffalo.edu/~shapiro/Commonlisp/

That was my first Lisp book 30 years ago already.

Re: Learn Lisp the Hard Way

#99
post #5
post #4

Earlier quoted context omitted.

> The biggest secret to Lisp is that it is actually the simplest programming language ever created—and that, coupled with its expressiveness and elegance, is why it is favored exclusively by the best programmers in the world. But is it?

Sounds like you just got told you're not one of the best programmers in the world and are still in shock about it.

I'm not one of the best programmers in the world, no shock there.

I'm learning and enjoying clojure, though!

Re: Learn Lisp the Hard Way

#100
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…

[deleted]
Post reply on HN