To take full advantage of the ever more complex architectures of the latest supercomputers, users are having to write increasingly intricate programs. Thus, one of the most pressing questions associated with the powerful new concurrent processors is how to make them practical for ordinary users. In our opinion, answering this question means figuring out how to use algorithms, languages and compilers to give users four crucial capabilities and tools, namely
▸ The ability to use old programs, in old languages, as well as new programs, in old or new languages.
▸ New languages that allow one to express, in a well‐structured form, algorithms that are amenable to parallel processing.
▸ Software that is able to exploit effectively all available architectural features, for use in developing and compiling programs in old and new languages.
▸ Packages and library routines that provide standard algorithms that are very amenable to parallel processing.