|Entity language for parallel programming email@example.com (vincent_belliard) (2011-09-22)|
|Date:||Thu, 22 Sep 2011 11:30:24 -0700 (PDT)|
|Posted-Date:||22 Sep 2011 22:25:02 EDT|
Making parallel programs has always been tedious. In Entity (http://
code.google.com/p/entity-language), it can nearly be transparent. The
concept of entities is made for that. An entity is a small unit of
processing. It has a separate memory. Communication between entities
is made sending messages. This is the only way to communicate. You
send a message to an entity without expecting any result. If the
callee entity wants to send a result, it sends a new message to the
first entity. This mechanism is built inside the compiler so, sending
a message is like calling a function.
If needed, an entity can be moved from one process to an other (and
maybe on a separate server). This functionality is essential for one
idea I had:
When you use a pad, you often needs a docking station to add a
keyboard and a better screen. I would like to make a docking station
with a CPU and a GPU. In this case, when a pad is connected to the
docking station, the pad take the control of the docking station and
can use all the power of the docking station's CPU.
Imagine a text processing program. It could run three entities. One
for the display, one for text manipulation and one for controlling the
others entities and managing the inputs (keyboard and mouse). Only the
controlling entity needs to run on the pad. The others could run on
the docking station. If the user wants to leave, all the entities are
moved to the pad, the display is now on the pad, it still work even if
the text operations are slower. Then the user go from the office to
his home and he can plug the pad to his own docking station and the
entities are moved to the new docking station.
Such an application can only be written if the language help the
programmer. That's why Entity has been made.
A small introduction on entities can be found here:
Return to the
Search the comp.compilers archives again.