Programming environments are used to bridge the gap between actual computers ad developement of their application programs. Most parallel programming environments currently in use focus on a specific parallel programming tool. This paper examines programming environments. language, tools, and techniques used for programming of parallel computers.In this paper, several topics are examined. First, a brief survey of parallel computer architectures and typical application programs is performed. Then, a survey of available environments, languages, and tools is conducted to determine how parallel programming is currently performed. Finally, by considering architectures, applications, and environments, an attempt is made to find desirable characteristics for a parallel programming environment and a useful set of parallel programming tools