I first worked on this in the 1980s/1990s, with the Transputer, on a Helios computer.
In the 80s I was hand-translating Apl to Basic and 6800 assembler, in the 90s to LabVIEW, and at the moment I am having to do it to VHDL. The aim is to make use of Tim Budd's aplc Apl to c translator, which in the 1990s I ported to SGIs and the Dec Alpha, as well as the lowly Atari TT. This has the advantage that in the 19980s/1990s I also added a minimum set of multi-tasking / multi-processor facilities (Julian Timestamp, pipe, spawn, and detailed I/O control) which I believe give it some of the capacity to form multiprocessing nodes :
http://home.earthlink.net/~swsirlin/aplcc.html
http://www.lab-tools.com/instrumentatio ... dod22.html
A Pipe has two ends. Using APL in a multiprocess/multiprocessor environment. A proposal for a flexible but easy to use syntax. J.B. Webber. Apl Quad Quote 20, 1, 1-2, Sept 1989. http://doi.acm.org/10.1145/379199.379200 (The proposal and implementation of a software mechanism now used by IBM.)
Now I have had some trouble in compiling the aplc run time library for the XMOS devices, I seem to keep picking up more than one library definition for some functions. I regret to say that to get this library to compile I have had to turn off all the multi-tasking facilities, but for the moment simple code does run. I will have to dig and see what the problem is, because when I look at the library files, it all seems to be there.
Anyway, for a very short test, of summing a vector :
Apl running in MicroApl's AplX :
Code: Select all
V ← ⍳ 9
⎕ ← V
1 2 3 4 5 6 7 8 9
S ← +/V
⎕ ← S
45
Translated to c and compiled and running on a single core of the XC-1A module :
Code: Select all
1 2 3 4 5 6 7 8 9
45
If anyone else would like to look at this library problem, that would be great.
The aplc source code is freely down-loadable, see above
cheers,
Beau