←back to thread

141 points winkywooster | 1 comments | | HN request time: 0s | source
Show context
epolanski ◴[] No.40217466[source]
> Lisps have great control over what happens at compile-time, which lets you do incredible things.

> Lisp programmers have struggled ever since it was invented to explain why this is so powerful and why this has a major impact on simplifying software development

I've written some Common Lisp, Scheme, Racket.

I like them.

But what op defines as a feature is actually what kills all those lisps but Clojure where macro abuse is rare.

Everybody implementing their abstractions, every library implementing their own language, I like those features, macros are fun, but it just doesn't scale neither in open source and even less at work.

Haskell to some extent too suffers the same issue, simple Haskell is nowadays a dead project, but every single project has different language extensions, syntax, etc..

I feel like Lisp and Haskell attract people that love programming more than shipping code.

Which is why at the end of the day, php has more killer software than all those languages combined.

replies(5): >>40217975 #>>40218227 #>>40218333 #>>40220555 #>>40221174 #
fiddlerwoaroof ◴[] No.40217975[source]
This is one of those perpetual myths about macros. Ruby on Rails metaprogramming is often harder to debug than macros in Common Lisp. Flink and Spark work by generating and loading Java code at runtime (macros) but, since Java has no language-level support for macros, the generated code is very hard to inspect and debug.

What killed most lisps was the AI Winter and the concurrent drying up of DARPA funding.

replies(1): >>40218437 #
epolanski ◴[] No.40218437[source]
I don't think I've expressed myself well.

When I say software at scale I mean:

- going on GitHub opening a file and understanding what's happening

- reviewing a PR and figuring out stuff without requiring an ide

- having easy onboarding with devs already accustomed to a base language and its patterns

Java, C, TypeScript, Scala, Kotlin, etc. Pretty much all major languages offer this: less power but much less ambiguity and mental overhead.

Lisps (with a minor exception for clojure) and Haskell are just not those languages.

Which, again, is why all of those languages produced very little software worth of mentioning for decades.

replies(5): >>40218462 #>>40219416 #>>40219972 #>>40221301 #>>40230977 #
fiddlerwoaroof ◴[] No.40218462[source]
And this is just not true: I’ve worked on large lisp programs in various situations with minimal documentation and done just fine.
replies(1): >>40223479 #
epolanski ◴[] No.40223479[source]
That's not a strong argument.

That's like saying world hunger does not exist because you had lasagna for dinner.

replies(1): >>40227639 #
1. fiddlerwoaroof ◴[] No.40227639[source]
How about the existence of major pieces of software written in Common Lisp? For example, American Express fraud detection was and maybe still is done by a CL program. Google Flights uses ITA Software’s CL flight search system. Emacs is widely used and contains a lot of lisp.

I think basically no languages have failed or succeeded for technical reasons: generally, marketing and inertia explains the tech stack better than DX or theoretical superiority.