Open-ended programming environments
Next: A new logic
Up: New efforts
Previous: Towards improved education
Programming environments for parallel machines in use today
are built on previous experience with sequential program development.
They can be classified as:
-
Implicit parallel programming [25][6][16][1],
where programmers develop sequential programs and
compilers discover parallelism and create processes.
-
Explicit parallel programming, where programmers use
sequential languages paired with
a coordination language for process creation and management.
The coordination language is either supported by the operating system
and compiler [13][12][7], or is independent
[5][9] and thus provides for parallel program portability.
-
Machine-dependent parallel programming, developed on
processor arrays and heterogeneous networks, much like sequential
programming was developed
[3][20].
None of these parallel programming environments satisfies the
essential condition for a true education in parallel computing:
the development of the intuition for parallel programming as a
distinct computational phenomenon. However, all of them could
contribute to this intuition by allowing us to
develop hands-on experience with the currently available machines.
Programming environments for HPCS is a crucial topics
for future software technology because a suitable environment
provides for both research and education and may have good feedback
on the technology itself. But we stress here that with a parallel
programming environment many implicit activities in the conventional
environments must be explicitly carried out and therefore the
concept itself must be carefully designed. Building upon the
conventional interactive environments, we can introduce a unifying
concept of programming environment as a tuple
where
is a collection of objects (data and programs)
used for program development and execution,
allows
the programmer to express requests to the environment, and
maps
into streams of
control on the underlying machine.