[1] It was designed as a publication language: a thinking tool to enable the clear and concise expression of concepts in parallel programming.
SuperPascal is based on Niklaus Wirth's sequential language Pascal, extending it with features for safe and efficient concurrency.
The requirements of SuperPascal were based on the experience gained by Hansen over three years in developing a set of model parallel programs, which implemented methods for common problems in computer science.
[6][7] SuperPascal is secure in that it should enable its compiler and runtime system to detect as many cases as possible in which the language concepts break down and produce meaningless results.
Several features in Pascal were ambiguous or insecure and were omitted from SuperPascal, such as labels and goto statements, pointers and forward declarations.
Another example is the recursive definition of a process tree: The most difficult aspect of concurrent programming is unpredictable or non-reproducible behaviour caused by time-dependent errors.
Time-dependent errors are caused by interference between parallel processes, due to variable updates or channel conflicts.
If processes sharing a variable, update it at unpredictable times, the resulting behaviour of the program is time-dependent.
Similarly, if two processes simultaneously try to send or receive on a shared channel, the resulting effect is time-dependent.