5 ms·
"We are humans and our brains are wired for a certain type of thinking. Lisp breaks this model, and so it's difficult for people to pick it up." Please elabora
by Hexstream 18y ago
"We are humans and our brains are wired for a certain type of thinking. Lisp breaks this model, and so it's difficult for people to pick it up."
Please elaborate. I'd love to refute if there was something in there to refute. I really don't see how Lisp is inherently less (or for that matter, more) graspable on a fundamental level. Are you a neurologist? And do you have any actual experience with Lisp?
- markessien 18y agoIf you have ever been in a math class with people who are not programmers, who are just plain old Joes, you'll notice that the most difficult subjects have to do with abstractions. When particular concepts are represented by abstract concepts, and operations are executed on these concepts, that's where most people shut down. That's why many people don't go into programming - they are not able to easily deal with the abstractions that programmers have to deal with. Languages that are similar to human languages - i.e, one word, one 'object' or 'concept' are easy for people to understand. A language like lisp is not even near to that - it depends completely on abstractions of concepts, and this is where the core difficulty for most people would lie. For example, to take this example from wikipedia: (list '1 '2 'foo) The statement above is very difficult to reconcile with real world concepts, it's very difficult to put into the mental boxes we have grown up with. Contrast with python: if object is not null: Languages don't have to be similar to english, but they have to be mentally mapable to models we already know. This is difficult to do with Lisp. With lisp, you have to understand new concepts. It's just not that easy for most people.
- j3h 18y agoYour example is hideously flawed, why don't you compare creation of a list with creation of a list / vector rather than an if statement. The equivalent lisp (clojure) to your python example (if (not (nil? object))) Is very simple to read, even if you hate parens.
- utx00 18y agoBut who's to say your experience with a given subject domain does not expand your intuition and creates new models of understanding? btw, if object is not null is closer to (nil? object) than to (list '1 '2 'foo) lisp may not be simpler, it is more powerful. it is a distillation of the ideas that gave rise to computer languages.
- markessien 18y agoI don't doubt that learning lisp makes you better. But the argument is about if Lisp is the next big thing. My argument is that it is not because people have to learn new things, and they don't want to. They will only want to if there are concrete advantages to it (make a website in 3 hours), and not because of a more abstract result like 'expand your intuition'. Lisp is likely more powerful, but it is unlikely to become very popular in the form it currently exists in.
- utx00 18y agosure. but i only put forward the 'expand your intuition" argument as a rebuttal to your "models of understanding". i am saying though that the very same concepts that gave rise to lisp, also make it more powerful in practice. "in the field" as they say. but it takes a little practice to get there. yes, lisp won't ever be more popular. just like "30 Rock" won't ever be more popular than "the office"
- Hexstream 18y ago"If you have ever been in a math class with people who are not programmers, who are just plain old Joes, you'll notice that the most difficult subjects have to do with abstractions." People who can't think in abstractions shouldn't become programmers, that's all. Besides using very simple DSLs, perhaps (ha!). I don't see how arguing that people who aren't hard-wired to program have greater difficulty with Lisp than they do with languages with more exposure makes the case that Lisp is too complex.
- jimbokun 18y agoYou are making statements without data, and I do not share your intuitions. I think you underestimate the leap that doing the kinds of abstraction needed for doing any kind of programming at all, and the very small differences between programming languages. There are probably many (most?) people to whom both "if object is not null:" and "(if foo 1 2)" will never be comprehensible. But I think the number of people who can understand the first but not the second or vice versa is negligible. And I think you can make just as good a case that Lisp is easier for the beginner to understand. We tend to think that non-Lisp languages are easier to understand because they are superficially similar to one another. But to the beginner they are just a jumble of symbols arranged in strange ways. The simplicity and consistency of Lisp forms may very well be more quickly comprehended by a mind undamaged by Java or C or any of those similar languages.