Dave Whipp wrote: > I was reading Synopsis 4 with regards to multi core programming. It > seems to be infused with a bias towards non-parallel models of > computation. Concurrently appears to be an add-on feature -- whereas we > should have a mindset that explicit sequential constraints are the > add-on feature.
That sounds really like a bad idea for simple "just do it" scripts. Just
imagine explaining concurrency issue to a beginner who is not even
confident with variables and blocks...
> Two statements that are missing from S04 (feel free to change the names)
> are C<forall>; and a form of C<given> that tests/executes multiple
> C<when> clauses in arbitrary order (without needing the sequential
> C<continue> statement).
>
>
> forall @a -> $x { ... }
>
> runs the code block on each element of @a (no defined order).
You can achieve that with the "hyper" list-op (see S02).
Also note that an optimizer is free to automatically add the "hyper"
list op if it can prove that the executed block has no side effects.
...
> Similarly, C<map>, C<classify>, C<grep>, C<reduce>, ... should all
> accept this ":sequential" adverb to force them to iterate their lists
> sequentially -- and should otherwise iterate in arbitrary/concurrent order.
Some of this can be written with hyper ops, just as the dot for method
calls has a "hyper dot" Object>>.method
> I'm not too concerned about the exact details: my point is that we
> should be fully aware of the fact that perl6 will be released into a
> multicore (some people use the term many-core for devices with hundreds
> of cores) world, and that exploitation of these parallel resources
> should be the default (easy) behavior. We shouldn't have a "concurrency"
> synopsis (we don't -- but we do have Spec/concurrency.pod). Instead, we
> should have "sequential.pod" that defines how to impose additional
> sequential constraints (e.g. ":atomic", ":sequential") on top of the
> those inferred from data dependencies.
I think that the concurrency synopsis is still useful for explicit
threading, STM and the like.
Also note that Perl 6 tries to preserver Perl's soul, and is not an
Erlang based language ;-)
Cheers,
Moritz
--
Moritz Lenz
http://moritz.faui2k3.org/ | http://perl-6.de/
signature.asc
Description: OpenPGP digital signature
