4 ms·
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 Lob
by lproven 2y ago
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.
- rini17 2y agoMany more people use Excel formulas than any programming language. And I don't believe it's solely thanks to easy notation. Rather something how the data is laid out? Idk I would like for CS to reflect on this more instead of internecine wars on prgramming syntax.
- lproven 2y agoSo very much this. I think programming languages are also long overdue for some controlled trials. They can't be blinded: any experimental subject bright enough to learn to program is probably going to know what language they are programming in. But trials comparing the effectiveness of different languages. How long they take to attain a specified level of proficiency, how long to learn enough to produce working code, and importantly, readability: for instance, how long it takes to find intentionally-planted bugs in existing, unfamiliar code. NeXT did this, way back in the 1980s, and Sun lost badly: https://www.youtube.com/watch?v=UGhfB-NICzg https://www.youtube.com/watch?v=UGhfB-NICzg There is a writeup of some of it here: http://www.kevra.org/TheBestOfNext/BooksArticlesWhitePapers/WhitePapers/files/page646_5.pdf http://www.kevra.org/TheBestOfNext/BooksArticlesWhitePapers/... But speaking as a non-video-liker, this 17min one is worth it.
- lispm 2y ago> 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.
- lycopodiopsida 2y agoI agree, even after only working through examples and small learning projects in "Common Lisp: A Gentle Introduction to Symbolic Computation" writing is quite easy. Maybe the secret is writing lisp instead of writing about and studying it. The same approach also works with every other programming language, as a bonus :)
- lproven 2y ago> 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?
- analog31 2y agoFor me, the issue wasn't cognitive, but simply lack of access. The two languages that ran on my Sanyo MBC-550 were BASIC and Turbo Pascal. Outside of expressions, those languages are essentially prefix in that the operator comes before the list of arguments.
- kazinator 2y ago> a large fraction of humanity simply lacks the mental flexibility to adapt to prefix or postfix notation. I doubt it. Firstly, there are entire prefix and postfix natural languages, which have capable native speakers of all intellectual persuations. But in natural languages, sentences do not go to very deep levels of nesting before people get confused. In programming, we have the deep nesting quite often. Nobody has the mental flexibility to adapt to it. We indent the code instead. Nobody can read a large Lisp program (or even a small one) if it is flattened into one long line, which is then wrapped to a paragraph. Within a single line of Lisp, there is rarely much nesting going on where the prefix notation causes a problem. The rest is indentation. Everyone doing serious programming relies on their editor for that, which helps them spot nesting errors.
- lproven 2y ago> Firstly, there are entire prefix and postfix natural languages, which have capable native speakers of all intellectual persuations. Sure. And you are also aware that there are natural languages which are regarded as being very hard for non-native adults to learn, right? Some natural human languages are easier than others. This is axiomatic. Some programming languages are easier than others too. Excluding the ones that are designed to be, from INTERCAL to Ook!
- kazinator 2y agoI'm not aware that major features like verb order cause difficulty in language learning. It's usually gratuitous syntax like noun cases, especially when the same feature is not present in any shape in one's native language. Also writing systems that have large numbers of symbols, which have multiple interpretations. In any case all mainstream programming languages have prefix notation in the form of function calls. And also statement constructs that begin with a command word followed by argument material. Imperative sentences in English amount of prefix notation because the subject is omitted (it is implicitly "you") so we're left with verb and object.
- lproven 2y ago