Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

But it does. Allegro CL has it. Other implementation might have it too. It's hard to say because you've been very vague about exactly what it is that you want.


Was I vague? Or were you being overly pedant about Wikipedia-sourced definitions that, as another commenter pointed out, are kind of outdated? And now trying to frame me as not knowing what I want? And pretending that the examples I gave about three other languages don't paint the picture well enough?

You seem to be arguing in bad faith from where I am standing.

...And okay -- I'd like a M:N green threads runtime (or library if you prefer) with preemptive scheduling or at least not a completely manual cooperative scheduling. And yes, we're talking full 100% CPU usage on all cores when needed. Not single-thread.

And to repeat, since you kind of pretended I never said anything about what other languages do, and if you are indeed aware of how Erlang's BEAM VM is doing it -- that is what should be present in more than one language / runtime IMO. Failing that, Golang's goroutines and Rust's async workers+channels are quite fine too.

To me, in 2023, no language has an excuse for not having something like that. Modern example: OCaml team worked on it for years and recently delivered it.


> Was I vague?

Well, here's what you originally wrote:

> Where is the stuff like Erlang/Elixir's green threads or Golang's goroutines/channels and Rust's async runtimes workers/channels, and OCaml 5.0's recent multicore runtime (and the emerging libraries around it)?

> I want the higher-level stuff. I want to solve problems and not invent a new async orchestration runtime for every project I work on.

That seems pretty vague to me. You mentioned four different languages (Erland, Go, Rust, OCaml). Do you want the intersection of the features of all those languages? The union? Some subset?

> You seem to be arguing in bad faith

I didn't even realize this was an argument, so I guess the problem must be that I'm just too dim to glean the correct meaning of your words. Sorry about that.


Well it is an argument insofar as you keep insisting that the LISP ecosystem has what I want, and I keep disagreeing with that claim.

But yep, I want Erlang-style concurrency / parallelism and, failing that, something like Golang builtins or Rust's libraries.

So not a subset or intersection, more like a priority-ordered wish-list: I want what I perceive as an ideal model (Erlang) but if that's not available, there is stuff 1-2 floors below that are good enough (Golang, Rust).

But native threads or fully cooperative opt-in parallelism are practically a drag (or were in the projects I used them) and aren't cutting it for the work I do.

I'll grant you that the building blocks for something like what I need are there but I am not willing to put the work to create the runtime / the library, nor pay anyone to do it for me. Hence my original post: I am commenting on the status quo, not on how it could theoretically change at any time. I find the latter of no consequence.


> I want Erlang-style concurrency

OK, but you must want something besides that because...

> an ideal model (Erlang) but if that's not available

It is available. In Erlang. So if that's what you want, why are you not just using Erlang? Why even bother with the contingency of "if that's available"? Why are we having this discussion at all?

This is the reason that Erlang-style concurrency is not available off-the-shelf in Lisp. There's no market for it. The people who really want Erlang-style concurrency just use Erlang. No language will ever do Erlang-style concurrency better than Erlang. Erlang-style concurrency is Erlang's defining feature. The whole point of Erlang is to do Erlang-style concurrency. You can't do better than Erlang at "Erlang-style concurrency" by definition.

The point of Lisp is not do X-style-anything better than X. The main benefit of Lisp is that it allows you to explore a much larger space of possible solutions in a much shorter time, which is a big win when you don't know what you want, which, I submit, is most of the time.


> So if that's what you want, why are you not just using Erlang?

I do.

> Why are we having this discussion at all?

I saw an article praising LISP, I decided to chime in with realism because certain fandoms (LISP's included) seem very unaware of the realities of the commercial programming outside of their niche hobby language. As a senior dev (who also worked as a CTO a few times) I have learned to evaluate technology and to never wear rose-tinted glasses even for my favorite tech stacks. They became favorites based on merit and nothing else. (In fact I am starting to dislike working with Elixir for certain projects, even though I loved doing them with it in the past.)

LISP is not cutting it for commercial work in general, so I strive to bring nuance to articles (or discussions) that to me seem heavily tilted to the "I am a fan!" direction. And forgive me if "LISP has longevity" and "it's future-proof" seem like hand-waving to me. I don't see factoids, I see people reinforcing their own positive feeling based on actual factoids (like the powerful macro system and a REPL, for example).

And we keep chatting because you seem to insist that either LISP has what I deem good (disagreed, it doesn't) or that it's not important / there's no market for it (disagreed).

> There's no market for it.

You're doing post-hoc rationalization. You don't know that for a fact. I know I would have coded much more Racket and Gerbil Scheme if they had proper async runtime a la Erlang or Golang or Rust (OCaml these days as well though the story there is still unfolding after their recent 5.0 release).

> You can't do better than Erlang at "Erlang-style concurrency" by definition.

Loose definitions then. Rust and OCaml are making very serious strides. I have hope they can surpass Erlang in the next 2-5 years. Both are faster, much stricter with types (lack of those is an endless pit of bugs) and more memory-safe than Erlang (though anything with a GC like OCaml is prone to some of the nastiest problems Erlang has, like cycles between big objects but... topic for another time).

> The point of Lisp is not do X-style-anything better than X. The main benefit of Lisp is that it allows you to explore a much larger space of possible solutions in a much shorter time, which is a big win when you don't know what you want, which, I submit, is most of the time.

We finally got somewhere productive, thank you.

I use Elixir (lives in the Erlang's BEAM VM so has access to everything Erlang) for the same and I agree that being able to explore quickly is very valuable. I've only made the mistake to prototype stuff with Rust once. Never again. Nowadays I use Elixir and Golang for prototyping and the end products either remain that or get rewritten in Rust.

Also REPL story can be better with Clojure but I'll admit it at least exists, unlike that of many other languages. Startup time is not ideal but then again, neither is Erlang's sadly. Editor support I haven't checked in a long time, might be good. Library coverage is very hit and miss depending on which LISP you use. I keep hearing CL has a lot, maybe that's true but I am 50/50 there; judging by your attitude -- "it took me a day to roll it myself" -- I remain unconvinced that the library story is good, it's more like some pie-in-the-sky goodness that's eternally out of reach. Still, if I reach for LISP again in the future I'll evaluate that aspect in detail and will know for a fact.

So yeah, on the "LISP is quick to prototype stuff with" I agree completely. To me it doesn't go all the way however, hence my initial comment.

You can think of me as "dislikes anything that looks like shilling".

There is no place for feelings in our work. When I retire and if I still want to code then, maybe I'll make decisions based on feelings. Before that -- no.


> I saw an article praising LISP, I decided to chime in with realism because certain fandoms (LISP's included) seem very unaware of the realities of the commercial programming outside of their niche hobby language.

Lisp's detractors often seem equally unaware. I've been using Lisp in a commercial setting for the last ten years. And before that I used it in a research setting for 15 years, and even got Lisp sent into space. It worked great.

> LISP is not cutting it for commercial work in general

Lisp is rarely tried for commercial work nowadays, in no small measure because people like you keep taking pot shots at it from the side lines. Have ever actually tried using Lisp in a commercial setting? I have. It works great.

> > There's no market for it.

> You're doing post-hoc rationalization. You don't know that for a fact.

Well, I pitched the idea to you and you didn't bite, so there's a data point.

Yes, it's possible that there's a huge untapped market for Lisp out there if only it had Erlang-style concurrency. But I'll give you long odds against that being the limiting factor. The limiting factor from where I sit is ignorance and prejudice.

> To me it doesn't go all the way however

That's fine. But please don't assume that because it doesn't go all the way for you that it can't go all the way for others. Different goals give rise to different requirements.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: