3 ms·
Lisp is blub. Compared to some things, yes. For instance, I think the type system of Haskell (combined with its purely functional nature) is a powerful abstrac
by jgg 16y ago
Lisp is blub.
Compared to some things, yes. For instance, I think the type system of Haskell (combined with its purely functional nature) is a powerful abstraction technique not present in most languages. I'd like to hear what you think is missing from Lisp that makes it less powerful than other programming languages!
It ignores Noam Chomsky and a large amount of research and development in linguistics and CS that goes way back to the 1950's.
Could you please explain? I've read some of Noam Chomsky's stuff but haven't touched his linguistic material much (I intend to though). Keep in mind if you're going to call it "Blub", it helps your point if you play by the rules of the original Blub thought experiment. Namely, you probably should provide a language which is more powerful (see my response to your last point).
Sometimes I wonder if the MIT CS department was so hot on LISP in the 1970's as a way to spite Noam Chomsky for biting the hand that feeds them (DOD research $.)
This seems like a far-out conspiracy theory, but I wouldn't know if it's true or not.
Funny, modern work on machine understanding of language is pointing more and more to the primitive "markov chain" sort of models that Chomsky rejected in the 1950s; simple experiments prove that humans don't have recursive (LISP-like) mental models of language (or anything else) -- actually, ALGOL-type languages, much closer to natural languages, are a much better match for the human brain.
So the use of recursion makes the language less powerful because it isn't close to writing a human language (recursion is pretty relevant to a lot of activities, whether you realize it or not, but I'll play along)? I think from this discussion you can ask an interesting question: if you have a language with less abstraction ability that is more intuitive to use than a competitor, is it actually more powerful? So (playing along with what you wrote, not saying I agree) is Python better than Lisp because, despite the fact that it lacks some abstraction techniques of Lisp, it is easier to write? Doesn't that whole house of cards collapse when you realize there are:
a) human languages which syntactically and semantically probably don't resemble anything ALGOL-ish
and
b) there are people like me who find Lisp much more natural than Python
Despite the fact that part of your comment sounds absolutely crazy, I think there are tidbits in there that can provoke an interesting discussion. Thanks!
- silentbicycle 16y agoFirst off - not the original poster, and an amateur linguist at best. > So the use of recursion makes the language less powerful because it isn't close to writing a human language (recursion is pretty relevant to a lot of activities, whether you realize it or not, but I'll play along)? What I think the poster above means is that there usually isn't a great deal of recursion in typical human languages. While I've only studied a couple, I remember hearing a cliche of an absentminded German professor whose lecture ends in dozens of infinitive-form verbs. In German, subclauses tend to move their verb to the end, vaguely like, "Earlier today, I was with my old roommate downtown pad thai and Thai iced tea drinking eating driving talking." (But less silly. College German was a while ago.) So if someone keeps going off on tangents, the infinitive (getrunken, gesprachen, etc.) verbs could just keep stacking higher and higher. Beyond a fairly shallow depth, such nesting is pretty uncommon, certainly compared to the sort of nesting that commonly occurs in Lisp. IIRC, Chomsky (or perhaps someone summarizing him) noted that human language usually doesn't go much deeper than three levels of recursion. (I guess after that point, languages risk smashing the stack?) That's probably what the poster above is referencing - While recursion adds a lot of expressiveness to language (much like induction adds to mathematical reasoning), it tends to be used in a fairly limited fashion. (Besides...people who have several levels of parenthesis in their writing? (Nerds. (Ha!))) Incidentally, some people seem to favor "chaining" languages. I've see this in Smalltalk, with blah.send(m).add(3).rotate(x, y).etc()-ish constructs, and I've also seen people very excited about doing that lately in Javascript / jQuery. I don't really get the appeal, but I've gotten used to reading Lisp/tree expressions over the years. (Prolog syntax seems like a nice compromise, though - homoiconic data structures, but clause definitions tend to be flat. The structural difference is probably due to ubiquitous pattern-matching.)