Live data from Hacker News

Why didn't Common Lisp fix the world?

quora.com

61–70 of 127 posts

Re: Why didn't Common Lisp fix the world?

#61
post #27
post #18

I'm pretty sure the biggest reason it hasn't caught on is the syntax. http://jordi.platinum.linux.pl/piccies/lisp.png It's the most frequent complaint uttered against Lisp for a reason. All of the other things mentioned in the top responses are addressed by modern Lisp variants. If Rust or Swift were implemented with sexps and everything else about them were equal, they would have a lot of difficulty winning hearts a…

Usually people that complain, don't spend time counting the amount of times () [] {} appear on their beloved programming languages. print(args) => (print args) if (cond) { exp1} else {exp2 } => (if (cond) (exp1) (exp2)) array[index] => (index array) And so on. On average there is probably the same amount, but visually it kind of appears to be more.

This is absolutely true. Worse, those brackets each define a different modal state. Even more worse, some languages ran out of brackets for all the purposes they wanted brackets for, so they invented their own - is there anything less thought-out than the double underscores in python? No, there is not.

In general, the reliance of syntax on random punctuation instead of meaningful symbols (a'la APL) or clear, human-parsable text is maddening - LISP and its derivatives do it far less than other modern languages, but still too much for my taste.

I'd also prefer clearly spelled-out syntax in this age of autocomplete rather than a jumble of weird abbreviations while I'm wishing for unicorns, and languages with code editors that do a good job of visually representing the flow of code rather than rely on punctuation, white-space or some unholy combination.

Programming seems kinda primitive compared to other aspects of computer-enabled content creation at times.

Re: Why didn't Common Lisp fix the world?

#62
post #55
post #40

Earlier quoted context omitted.

> helps to reduce incidental complexity to some extent This extend stays untapped. You cannot even imagine how far this ability to eliminate complexity extends. Of course, it's not just Lisp, it's Lisp (or any other meta-language) combined with a certain design methodology. A methodology which pretty much boils down to a notion that "everything is a compiler". And, since compilers are trivial and there are well known…

since compilers are trivial No. and there are well known techniques for eliminating any complexity you can find in a chain of compiler transforms Any complexity? Really?

> No.

Why would you say so? There is nothing simpler than compilers. They can be broken down into pieces as small as you like which are still independent and fully sequential. Most of the rewrites you'll ever need to do can be done in a total language - i.e., you don't even need Turing-completeness for most of your code.

> Any complexity? Really?

I have not met a kind of complexity that cannot be decomposed into trivial pieces mechanically using this technique. And I've seen a lot of very different things.

P.S. And try not to confuse a size with a complexity. E.g., C++ spec is huge, and implementing a compiler for the full language is a daunting task. Long, but not complex.

Re: Why didn't Common Lisp fix the world?

#63
post #5

Norvig nailed it - instead of being sissy about macros altogether the mainstream languages must rather enforce a certain discipline. And the rules for the macros done right are very simple and well known.

Honestly, I don't get the fuss about macros. I haven't seen many (any?) use cases for them, where they don't make the code harder to understand while doing something that isn't already straightforward in the base language.

> Honestly, I don't get the fuss about macros.

DSLs are an ultimate solution. And DSLs are best implemented with macros.

> where they don't make the code harder to understand

Macros are there to make code easier to understand.

I just explained it in detail elsewhere: https://news.ycombinator.com/item?id=11705170

Re: Why didn't Common Lisp fix the world?

#64
I'll cons this onto my list of reasons why Lisp "failed". Other explanations are:

Worse is Better: https://www.jwz.org/doc/worse-is-better.html

The Bipolar Lisp Programmer: https://groups.google.com/forum/#!topic/comp.lang.lisp/eicqv...

The Lisp Curse: http://winestockwebdesign.com/Essays/Lisp_Curse.html

Where Lisp Fails: http://www.loper-os.org/?p=69

Lisp is still my language of choice. I'm more productive in it than other languages (C, Java), not because I know the other languages less well, but because they're less expressive. So, for me, Lisp fixes the world.

Why aren't people using it? There are three things often missed.

(1) People's choice of programming languages perhaps isn't as rational as they might like to believe. There's a large amount of personal taste involved. For a personal project, that's no barrier, you can use your favourite language, but if you're working with a dozen other people, Lisp is unlikely to be adopted because more people on the team will prefer Java, C++, or Python. Multiply over all the commercial projects and you can see why you can't build a career around Lisp programming.

(2) There are accidents of history. When DEC decided to discontinue the PDP-10, the days of the hacker community built around it were numbered. Those involved then went on to build Lisp machines, but they were undercut by cheaper, commodity hardware which ran Unix. Then, the AI winter arrived. It was bad for Lisp, but Prolog fared far worse.

(3) Linguistic relativity. The Sapir-Whorf hypothesis might be dubious for natural language, but for programming languages it certainly does apply. If you're uncomfortable with Lisp, you won't be tackling problems at which Lisp excels, or (at best) you'll do them in a completely different way, and it will take you longer. The result is that people think their language of choice is fine for everything that matters, and the problems they don't tackle don't matter to them.

Re: Why didn't Common Lisp fix the world?

#65
post #43
post #34

Earlier quoted context omitted.

Hmm.. my beard isn't fully grey yet.

(Don't worry - it will be). Just making on joke what a "Lisp advocate" is. But seriously; if you meet people who really understand programming language design they will have full understanding for other ways of designing a language than whatever is their specialty. After all there is a reason why PL is still a developing field.

> (Don't worry - it will be).

This assumes that weavie actually has a beard.

Re: Why didn't Common Lisp fix the world?

#66
post #41

Earlier quoted context omitted.

The OP is being downvoted because he lies. Common Lisp does have strong and optional static typing. It does have namespaces. As for CL having `eval` - well, this is true at least. But I fail to see how in the world could that be a bad thing...

If a language has an eval construct it is hard/impossible to reason about types, security and correctness. It also makes it hard to compile it to machine code.

That would be true if we were talking about normal languages eval'ing strings. Lisp on the other hand treats the code as data and has the full compiler available at runtime. It can check types at both runtime and compile time, and it will still compile it down to nice machine code on the fly.

Lisp eval is not the same as other languages, you use it implicitly all the time. Any occurence of macros or something like `(1 ,(+ 2 3) 4) is playing around with evaluation behind the scenes.

Re: Why didn't Common Lisp fix the world?

#67
post #60
post #38

Earlier quoted context omitted.

You took the examples where the number of parentheses is the same. Here is a more honest example: if (a && !b) {expr} => (if (and (a) (not b)) (expr)) That's a simple expression and I'm not even sure I managed to match the () correctly

Your example is also misleading. The `a` and `expr` are written as variables in the left example, but as function calls in the Lisp version. More correctly it would be either if (a && !b) { expr } => (if (and a (not b)) expr) Or if (a() && !b) { expr() } => (if (and (a) (not b)) (expr)) Now the amount of parentheses is either 4/6 or 8/10 which is not a very big difference (and caused only by the syntactic sugar for `…

You're absolutely right, I didn't know the difference between "a" and "(a)", sorry.

My point was more about the two extra parentheses for each && or ||. Imagine converting

   if (a && b && c && d || e)
to a LISP.

Re: Why didn't Common Lisp fix the world?

#68

I'll cons this onto my list of reasons why Lisp "failed". Other explanations are: Worse is Better: https://www.jwz.org/doc/worse-is-better.html The Bipolar Lisp Programmer: https://groups.google.com/forum/#!topic/comp.lang.lisp/eicqv... The Lisp Curse: http://winestockwebdesign.com/Essays/Lisp_Curse.html Where Lisp Fails: http://www.loper-os.org/?p=69 Lisp is still my language of choice. I'm more productive in it tha…

(2) There are accidents of history. When DEC decided to discontinue the PDP-10, the days of the hacker community built around it were numbered. Those involved then went on to build Lisp machines...

Nit on this bit of history: the PDP-6/10/Decsystem 20 architecture was a dead end due to its maximum address space of 1 MiB (of 9 bit bytes), but was still a very healthy line of computers when the Lisp Machine effort started circa 1974, about a decade before DEC dumped the whole line, then a 100 million a year business (a lot of us looked at that and decided DEC's business sense was so poor we weren't going to invest any more then we could in their systems, which of course turned out to be absolutely right).

Re: Why didn't Common Lisp fix the world?

#69
post #62
post #55

Earlier quoted context omitted.

since compilers are trivial No. and there are well known techniques for eliminating any complexity you can find in a chain of compiler transforms Any complexity? Really?

> No. Why would you say so? There is nothing simpler than compilers. They can be broken down into pieces as small as you like which are still independent and fully sequential. Most of the rewrites you'll ever need to do can be done in a total language - i.e., you don't even need Turing-completeness for most of your code. > Any complexity? Really? I have not met a kind of complexity that cannot be decomposed into triv…

Well, one thing I can tell you is that I've heard that much of the woe that came from the Common Lisp standard started with the line "any sufficiently advanced compiler..." in a discussion.

Re: Why didn't Common Lisp fix the world?

#70
post #67
post #60

Earlier quoted context omitted.

Your example is also misleading. The `a` and `expr` are written as variables in the left example, but as function calls in the Lisp version. More correctly it would be either if (a && !b) { expr } => (if (and a (not b)) expr) Or if (a() && !b) { expr() } => (if (and (a) (not b)) (expr)) Now the amount of parentheses is either 4/6 or 8/10 which is not a very big difference (and caused only by the syntactic sugar for `…

You're absolutely right, I didn't know the difference between "a" and "(a)", sorry. My point was more about the two extra parentheses for each && or ||. Imagine converting if (a && b && c && d || e) to a LISP.

I am a visible Hacker. Give me a trial. Tell me what you want me to do. It can be in our darkest secrets. I just need you to be truthful. That is the First step to make me have a deal done. I am only here to blow your mind, and Bring a smile on you..

To me, everything is possible, Tell me what you want to know about your spouse, your friend and family member, , result upgrade, bogging , spouse spy, just name it, as I will solve it. as an ex FBI secrete spy for 11 YEARS... I can change anything accessible online. I can hack into their privacy and Give you adequate output on what you are dying to know or maneuver...

My Contacts are :

Email: hack702j002d77s@gmx.us Phone number: +14437633327 ( Text me First if you want me to pick your call )

Where you are in the world does not matter. I am not a racist as I am open to every clients around the world... WHAT DO YOU WANT ME TO HACK???

As a professional hacker for hire company, we provide the best certified hackers available combined with talent and the highest level of privacy and confidentiality to our clients.

CALL ME GUARDIAN PROTECTION service includes

Change University grades Facebook, twitter,Wassap, IG hack Email hack Wipe criminal records Wipe credit card debt MasterCard's/visa cards Bank account Data base hack and lot more hacking services in general

Post reply on HN