←back to thread

Hofstadter on Lisp (1983)

(gist.github.com)
372 points Eric_WVGG | 3 comments | | HN request time: 0s | source
Show context
analog31 ◴[] No.41864347[source]
I read that article when it came out, as my parents subscribed to Scientific American. Even though I had learned BASIC and Pascal, the concepts in the article were just way over my head. Also, I had no access (that I was aware of at least) to a machine where I could try my hand at Lisp programming. Alas, I wish I had taken it more seriously.

At least Hofstadter was successful at getting me interested in math beyond high school.

replies(2): >>41867602 #>>41885203 #
lproven ◴[] No.41867602[source]
Me too. I admire the theory of Lisp, but man, all the Lisp folks going "but don't you get it, the absence of syntax IS the syntax!" don't half get tiring.

For some of us, we can just about handle the simple algebraic infix stuff, and we'll never make that leap to "my god, it's full of CARs".

https://xkcd.com/224/

replies(1): >>41867926 #
anthk ◴[] No.41867926[source]
If you have a look on some Emacs code (and modules such as Mastodon.el), you'll see than the syntax is not that scary, as Lisp makes it trivial to modularize code into smaller functions.
replies(1): >>41868428 #
lproven ◴[] No.41868428[source]
I have spent years writing about and studying Lisp, including buying several books.

This is categorically not the case.

Let me paraphrase my own post from Lobsters a year or two back:

I hypothesise that, genuinely, a large fraction of humanity simply lacks the mental flexibility to adapt to prefix or postfix notation.

Algebraic notation is, among ordinary people, almost a metonym for “complicated and hard to understand”. I suspect that most numerate people could not explain BODMAS precedence and don’t understand what subexpressions in brackets mean.

I have personally taught people to program who did not and could not understand the conceptual relationship between a fraction and a percentage. This abstraction was too hard for them.

Ordinary line-numbered BASIC is, I suspect, somewhere around the upper bound of cognitive complexity for billions of humans.

One reason for the success of languages with C syntax is that it’s the tersest form of algebraic notation that many people smart enough to program at all can handle.

Reorder the operators and you’ve just blown the minds of the majority of your target audience. Game over.

I admire Lisp hugely, but I am not a Lisp proponent.

I find it fascinating and the claims about it intrigue me, but to me, personally, I find it almost totally unreadable.

Those people I am talking about? I say this became I am one.

I myself am very firmly in the camp of those for whom simple algebraic infix notation is all I can follow. Personally, my favourite programming language is still BASIC.

replies(4): >>41868496 #>>41868767 #>>41874523 #>>41893281 #
lispm ◴[] No.41868767[source]
> I have spent years writing about and studying Lisp, including buying several books.

The key is "writing and maintaining" Lisp software.

Lisp often won't get learned by reading or writing ABOUT it, but by reading AND writing actual Lisp code.

It's a bit like riding a bike. You can study bikes for a long time, but you will typically not be able to ride a bike. That's something which can be learned when actually practicing to ride the bike. This means also not needing to consciously think about it, but by moving tasks to internal automatisms. Lisp code is data and this wants to be "manipulated". This manipulation is a key to learn Lisp. The other key element is to work with a system which gives live feedback -> interactive programming. "Interactive" means to do things, to fail, to improve, to do it again.

It's in part the experience of actually using an interactive programming system.

replies(2): >>41868940 #>>41869032 #
lproven ◴[] No.41869032[source]
> The key is "writing and maintaining" Lisp software.

You may be right there, but I think there is a point you are smoothing over and almost trying to hide here.

What if someone can't get to the point where they are able to write useful code?

If you can't start riding a bike without stabilisers or someone holding it, then you're never going to learn to ride well.

At around age 11 or 12 I tried to learn to roller-skate. My parents bought me skates, and I put them on and tried to stand up.

I fell over so much over a few days that I bruised my pelvis and walking became very painful, let alone lying down. It was horrible and I gave up.

25 years later I managed to learn to ride a snowboard, after years of failure, because of having to do an emergency turn to avoid hitting some children and getting up on one edge and learning that edge-riding is the key. Nobody told me, including 3 paid days of lessons with a professional teacher.

It took great persistence and physical pain but I did it. I gave up on skating of any kind.

My core point is that people vary widely in abilities. Some people pick up a complex motor skill in 10-15min and can do it and their skills grow from there. Others may struggle for days or weeks to attain that... And most are not doggedly determined enough to try for that long.

Algebra is most schoolchildren's way of describing "something extremely hard to learn and pointless in everyday life." For ordinary humans, the concepts of "variables" and "symbols" that manipulate them IS A WAY TO TALK ABOUT something super-difficult.

But most of it, with effort, can just about get through. Very very few choose to follow it further.

And yet, there are a few families of programming languages -- Lisp, Forth, Postscript, HP calculator RPN -- whose basic guiding assumption is "you will easily master this basic action, so let's throw it away and move on to the logic underneath".

And the people who like this family of languages are annoyed and offended that other languages that do not require this are hundreds of times more popular and are used by millions of people.

Worse still, when someone comes and says "hey, maybe we can simplify that bit for ordinary folks", they mock and deride the efforts.

Maybe just allow yourself to think: perhaps this stuff that's easy for me is hard for others, and I should not blame them for them finding it hard?

replies(3): >>41869262 #>>41869717 #>>41893378 #
anthk ◴[] No.41869262[source]
The rule of three is algebra, yet every grandma knows it.
replies(1): >>41869273 #
lproven ◴[] No.41869273[source]
What is "the rule of three"? I have never heard of it, and Googling it was not helpful. Conspiracy sites and rules for fiction writers and things.
replies(4): >>41869332 #>>41869640 #>>41869692 #>>41869759 #
UniverseHacker ◴[] No.41869692[source]
The person you are replying to clearly stated that every grandma knows this, and yet you seem to have given up without even trying to ask a grandma.
replies(1): >>41870307 #
lproven ◴[] No.41870307[source]
Well, this is true. I am 56, and my last living grandmother died over 30 years ago.

I became a father 5 years ago, so strictly, my mother is a grandmother. I could ask her, but I am very confident she does not know.

I have a science degree, and I just barely scraped through a statistics 101 course with great difficulty. I am pretty smart; I speak 6 foreign languages, and I have held down a career in software for approaching 40 years now, by understanding hard stuff and making it work, or documenting it, or explaining it.

But I find algebra hard, just scraped through a mathematics 'O' level in 1986 by taking corrective classes and resitting the 1985 exam that I failed.

I stand by what I said.

I've never heard this rule. Looking at the Wolfram explanation, I could do that, yes. But I've never heard of this, and I am pretty confident my mother could not do this.

replies(1): >>41871093 #
UniverseHacker ◴[] No.41871093[source]
I don't think it came across clearly but I was teasing the commenter you were replying to (and not you) for making an absurd claim in a confusing, sexist, and ageist way. Although my own grandparents are also dead, I know quite a few grandmas, including my stepmom (who had a ~5 decade career as a software engineer) - that are brilliant mathematicians and/or coders - so I take exception to the idea of using the word grandma as a stand-in for an ignorant person. Also, every person educated through public school in a wealthy country that isn't mentally disabled knows actual algebra and has studied it for 6+ years, not just the "rule of 3" whatever that is.

However, I do want to say something about listing out your qualifications and experience like you did on here... in the petty power struggles and trolling on the internet it does the exact opposite of what it seems like it should. It's putting the other person in charge of deciding if you are "good enough" to participate or have an opinion, by implicitly making an effort to convince them and asking them to judge you. Your opinion and reasoning carry more weight on their own, without arguing why you should have the right to have them.

replies(1): >>41877498 #
1. lproven ◴[] No.41877498[source]
Hmmm. Well, if we all misread you, ISTM that you also misread me.

What I was trying to say was: "I am pretty smart, but I can't do this."

Which means: "different people are smart in different ways."

Which means: "what is no problem for Lisp coders can be a pretty big problem for other folks."

replies(1): >>41879406 #
2. UniverseHacker ◴[] No.41879406[source]
Is your reply possibly meant for anthk and not me? I did understand what you wrote in the way you describe here.
replies(1): >>41879438 #
3. lproven ◴[] No.41879438[source]
No, it was for you, but it applies a little bit to them as well.