Raul,

I believe that Viktor was trying to explain that Actors are used in 
programming languages where the concurrency is explicitly defined. This 
is where you take a large dataset, divide it up into small chunks, and 
send the chunks off to various processors to be processed. Finally, the 
processed data is recalled from the various concurrent processors, and 
and re-assembled for the completed dataset. We call that "expliict" 
parallel programming, where the programmer is required to deal with the 
processor cores directly. Your example of starting multiple J programs 
could be considered an example of Actor programming or explicit 
programming, as long as you can run the J programs in separate 
processors. So, in this way, J could be considered capable of Actor 
programming.

On the other hand, J could theoretically configure the parallel 
sub-tasks automatically, parsing the data, allocating the processors, 
running the algorithms, and re-assembling the data, all under the covers 
of the interpreter. The programmer wouldn't have to worry about how to 
divide up  the data, allocate processors, re-assemble the data, etc. The 
J interpreter would do all of that. Viktor and I call that "implicit" 
parallel programming, a much more powerful concept than Actors, and 
potentially a major breakthrough in concurrent programming technology.

Now THAT would be an impressive feat for the J interpreter.

Skip Cave

Raul Miller wrote:
> On Mon, Apr 27, 2009 at 6:52 PM, Viktor Cerovski
> <viktor.cerov...@gmail.com> wrote:
>   
>> Raul Miller-4 wrote:
>>     
>>> I believe, in the context of J, the word "Actor" should be taken to mean
>>> "Program".
>>>       
>> Raul,  I disagree, because Actors are about writing explicitly parallel
>> programs,  while J programs are at best and currently in principle,
>> only implicitly parallel.
>>     
>
> Could you state this distinction using concrete examples?
>
> To illustrate my confusion: I can run several J programs simultaneously and
> they can all be writing to the file system and reading from the file system
> and their changes will be happening in parallel.  Are you saying that because
> I do not have a keyword in J that says "PARALLEL", I am using "implicit
> parallelism" rather than "explicit parallelism"?  If this is the distinction,
> can you tell me what advantages "explicit parallelism" would have?
>
>   
>> I say only because just as it is clear that auto-vectorization inherent
>> in J is finely adopted to the multi-core processors, it is also clear that
>> auto-vectorization is not going to solve all the problems of parallel
>> programming.
>>     
>
> Or perhaps you are thinking of a system which only has one program
> (one "actor", from my point of view) as opposed to a system which
> has multiple programs?
>
>   
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to