Refined Languages (Refined Fortran, Refined C, etc.) are extensions of their parent languages in which it is possible to express parallelism, but impossible to create races or deadlocks. Where strictly deterministic behavior is desired, multiple executions of a Refined Fortran program with the same input data can be guaranteed to either compute the same results or terminate with the same run-time errors regardless of differences in scheduling. Where asynchronous behavior is desired, freedom from races can be guaranteed. The Refined Languages approach achieves its goal by extending sequential imperative programming languages with data- (rather than control-) oriented constructs, and by viewing the expression of parallelism in data- (rather than control-) oriented terms. Earlier versions of Refined Fortran are discussed in [1]-[2]; the present work supersedes and extends work reported in these earlier publications.
[1]
Phil Pfeiffer,et al.
Dependence analysis for pointer variables
,
1989,
PLDI '89.
[2]
Alfred V. Aho,et al.
Compilers: Principles, Techniques, and Tools
,
1986,
Addison-Wesley series in computer science / World student series edition.
[3]
John Randal Allen,et al.
Dependence analysis for subscripted variables and its application to program transformations
,
1983
.
[4]
David Klappholz,et al.
Refined C: an update
,
1990
.
[5]
Henry G. Dietz,et al.
Refined Fortran: Another Sequential Language for Parallel Programming
,
1986,
ICPP.
[6]
Utpal Banerjee,et al.
Dependence analysis for supercomputing
,
1988,
The Kluwer international series in engineering and computer science.