Our hypothesis is that an advanced compiler can generate efficient parallel programs for distributed memory machines if a programming language can naturally represent an application's parallelism. Fortran 90D/HPF is such a language. In Fortran 90D/HPF, parallelism is represented with parallel constructs, such as array operations, where statements, forall statements, and intrinsic functions. The Fortran 90D/HPF language provides distribution directives to help the compiler distribute data efficiently on distributed memory machines which demand high data locality for good performance. This language gives the programmer a powerful tool to express data parallelism that is natural to a problem. To validate this hypothesis, we have implemented the Fortran 90D/HPF compiler.