4 ms·
Lisp will never be popular. 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 p
by markessien 18y ago
Lisp will never be popular. 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.
The trend has always been to easier and easier languages - I don't remember any case where a more complex language, no matter how useful, has become the next big thing.
The only thing that can make lisp popular is a framework or API based off it. Something that offers something new or something easier.
- ajross 18y agoSo how does that trend explain C++, or Java, or C#, all of which are clearly evolving in the direction of increased complexity. Likewise Python today is a vastly more complicated environment than the language I learned 8 years ago. And Ruby is quirkier still, taking most of perl's weird syntax and adding an object model from smalltalk and a statement-based execution metaphor that comes straight out of BASIC -- certainly not a "simple" language. C is a simple language. Scheme is a simple language. Everything else is growing more complicated by the day.
- markessien 18y agoA language will always grow in complexity. But it does not become more popular because it grows in complexity. My point was that the trend in popularity is towards less complex languages - i.e, languages that abstract away difficulty. In that respect, C++ is less complex than C.
- neilc 18y agoless complex languages - i.e, languages that abstract away difficulty That is a very anomalous definition of complexity. In truth, a language that is more complex may or may not be more abstract. For example, Prolog operates at a very high level of abstraction, and it is far less complex than a language like C++. C++ is less complex than C C++ allows programs to be written at a higher level of abstraction than C, but it is not less complex than C by any reasonable definition of "complexity". In fact, it is the very existence of the C++ tools for abstraction (classes, templates, virtual functions, MI) that cause much of C++'s language complexity. Perhaps you are conflating the complexity of the language with the complexity of a typical program written in that language?
- davidw 18y agoI don't think that Java is more complex than C++ in terms of the language itself. I think that being simpler is actually one of the reasons it has caught on.
- jamesbritt 18y ago"And Ruby is quirkier still, taking most of perl's weird syntax ..." Um, what? I don't think you know much Ruby.
- 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.
- whacked_new 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. If you have ever parsed a syntactic tree, you'll realize that it's inherently an s-expression. That means that everything you ever say, and all human communication for that matter, are s-expressions. Sans the logic, operators, symbol quoting and observance of rules (first item is interpreted as a function), lisp is at its core as close to human language you'll ever get. Popularity depends on other things, but lisp doesn't break the way we think.
- markessien 18y agoTake a look at this sample from wikipedia: (defun factorial (n) (if (<= n 1) 1 (* n (factorial (- n 1))))) Now imagine trying to explain that to a person who does not use a computer. Humans always start learning by looking for the objects, then applying an action on the object. With lisp, this object is not obvious, and the actions being applies are not obvious either.
- utx00 18y agoare the axioms of non-euclidean geometry obvious? what about special relativity?
- markessien 18y agoYou are saying that I am using the solution for a tough problem as being representative of the use of the language? That may be so, but what I was pointing out was how different they language structure was from traditional human languages.
- utx00 18y agothey are different domains of expression. so that should not come as surprise. maybe one day when computers are super powerful. for now "code is data and we write in the same data structures the compiler understands" seem like the bigger win. that of course means a lisp of some sort.
- nihilocrat 18y agoIt's not "hard", it's just "different". I don't see how it breaks a "certain type of thinking" that we are "wired" for, other than that it fundamentally different from the imperative / structured programming that 99% of programmers are introduced to in their first language. I don't see how breaking with that model is beyond the ken of human beings. You can even take intermediate steps; learning Python and its code introspection features makes "code == data" a lot simpler to grok because you've already seen that sort of thing before. Maybe the electrician just wired your brain wrong. You might want to try and get a refund.
- markessien 18y agoNo, it's fundamentally difficult for human beings. You know why? Take a look at mathematics. It is fundamentally difficult for human beings because it does not fit the model that we grew up with evolutionarily. Math is just a language, but it's a very difficult language for most human beings to learn because we don't naturally think using those type of expressions. Lisp was created as mathematical notation for computers. It is based of a language that the most people have difficulty with in school. I'm good at math, and I have no problem with lisp. I'm just pointing out that it will not be the next big thing because this type of thinking is not easy for most people to get into. Pythonic thinking on the other hand is easy for people to understand.
- fauigerzigerk 18y agoIf lisp is hard to pick up but those who do have a grasp of it are significantly more productive than they would be in other languages, then it should be a success. Since so little software is written in lisp, I can only conclude that the language doesn't actually make its users much more productive or that the significance of libraries is greater than pg wants to admit or that most brilliant programmers are rather ignorant when it comes to selecting their tools.
- ivanstojic 18y agoActually, I have authored a piece commercial Common Lisp based web 2.0 software. It's small, simple, and for whatever problems I didn't feel like resolving myself, I could find a library to solve it for me. In my book, Lisp is great. P.S. And I'll keep using it for future projects!
- comatose_kid 18y agoWhile I disagree with you, I think it's unfortunate that your comment was modded down. I'd respond by saying that lisp is an easier language to learn than C (for example) - they syntax is much more consistent.
- markessien 18y agoLisp would not be easier to learn than C if you had to do the OS specific stuff you do in C in Lisp.
- utx00 18y agoplease explain.
- deleted 18y ago[deleted]
- markessien 18y agoC code is usually very simple. The difficulty in C is not in grasping the syntax, it's in manipulating pointers, understanding the byte layout of structures, linking libraries and so on. If you had to do the same stuff in lisp, you'd face the same problems.
- utx00 18y agoyes, but you have the ability to tailor the language and create constructs to deal with your problems more concisely. i learned lisp before C. i always found C to be very obtuse and arbitrary. for example: 1. why can't i define a function inside a function and then return it, why can't i define a function based on some conditional? 2. macros that are just text expansions are useless (well not useless but in comparison to lisp macros!) 3. no way to embed a mini language. or way, but too difficult. in lisp you don't even have to think about it. (a little query language, or a little configuration language, or a language to do gene annotations based on certain protein sequences that non-computer people can write in :) 4. you have to compile and use a debugger. in lisp you can change and run things as you write them. 5. recursion is unequivocally expensive. 6. can't write new iteration constructs (or you can by passing function pointers but it's limited and ugly) 7. no anonymous functions! c'mon! etc etc so the fact that lisp doesn't map into a preconceived model of understanding has very little practical significance ... C, by all measures, is less powerful and wouldn't allow me to do my work with reasonable amount of effort. neither would python btw. as i maintain a domain specific language that would have been very difficult to write in some other language.
- utx00 18y agoDanielle Steele vs. Jane Austen ... or something.