[Openmcl-devel] Speed, compilers and multi-core processors
Dan Weinreb
dlw at itasoftware.com
Thu May 21 10:33:32 PDT 2009
mikel evins wrote:
>
> Clojure and Common Lisp both do the same thing that Haskell does: they
> take away certain facilities because their absence makes certain
> solutions workable.
>
Indeed, and what's more, practical Common Lisp programmers are even
more restrictive than that. For example, we rarely use "eval" and
we very, very rarely write self-modifying code. You'd be surprised
how many people out there, who have had a bit of exposure to Lisp
but not any real exposure, don't know that, and assume that Lisp
cannot be compiled, etc.
> Concurrency is different from memory management in this respect only
> because multiple cores have become cheap and widespread long after
> large memories did. GC is a solution to the robustness and
> productivity problems caused by manual memory management. STM is a
> solution (one of several) to the robustness and productivity problems
> caused by manual concurrency management.
>
Yes, exactly.
> There are certainly many programs that don't involve a lot of
> concurrency, but Moore's law is over, and chipmakers are giving us
> more cores now instead of faster ones. Sure, some people will always
> want to manage their threads manually, just as some people will always
> want malloc and free. But some like GC, because it makes a bunch of
> headaches go away, and the cost of giving up malloc and free goes down
> all the time. As cores multiply, the same thing will happen for
> facilities that do for concurrency what GC does for memory management.
>
In all fairness, there are some programs that are extremely
easy to parallelize, and you hardly need any locks or
transactions or anything. Our system at ITA just runs
8 Lisp processes on a 8-core machine, and none of
those processes treats any of the other 7 differently
than it treats the other members of the cluster running
on separate boxes.
But there are other programs that do want to use
closely-coupled algorithms on multiple cores,
and those are the ones we've been talking about.
>
> Jeremy suggested that someone could implement a Common Lisp designed
> around Clojure's concurrency features. You said you hoped not; I don't
> think you have anything to worry about. I don't think bolting
> Clojure's concurrency features onto Common Lisp buys much. Clojure's
> concurrency features work well because they're part of a package deal.
> I think it's pretty hard to fit that package deal into Common Lisp. I
> can imagine a Lisp other than Clojure that would fit it, but it
> wouldn't be Common Lisp.
>
I agree completely.
> - Dan
>
> --me
>
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel
>
More information about the Openmcl-devel
mailing list