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