SuperPascal

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by JamieHanlon (talk | contribs) at 13:58, 4 December 2009 (Initial version of article (moved from 'Super Pascal')). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
SuperPascal
Paradigmconcurrent
Designed byBrinch Hansen
First appeared1993
Stable release
1 / 1993
Typing disciplineStrong
Websitebrinch-hansen.net
Influenced by
Communicating Sequential Processes, Pascal, Concurrent Pascal, Joyce

SuperPascal is an imperative, concurrent computing programming language developed by Brinch Hansen[1]. It was designed as a publication language: a thinking tool to enable the clear and concise expression of concepts in parallel programming. This is in contrast with implementation languages which are often complicated with machine details and historical conventions. It was created to address the need at the time for a parallel publication language. Arguably, few languages today are expressive and concise enough to be used as thinking tools.

History and development

SuperPascal is based on Niklaus Wirth's sequential language Pascal, extending it with features for safe and efficient concurrency. Pascal itself was used heavily as a publication language in the 1970s; it was used to teach structured programming practices and featured in text books, for example, on compilers[2] and programming languages[3]. Brinch Hansen had earlier developed the langauge Concurrent Pascal[4], one of the earliest concurrent languages for the deisgn of operating systems and real-time control systems.

The requirements of SuperPascal were based on the experience gained by Brinch Hansen over three years in developing a set of model parallel programs, which implemented methods for common problems in computational science[5]. This experimentation allowed him to make the following conclusions about the future of parallel scientific computing.

  • Future parallel computers will be general-purpose, allowing programmers to think in terms of problem-orientated process configurations. This was based on his experience programming networks of Transputers, which were general-purpose processors able to be connected in arrays, trees or hypercubes.
  • Regular problems in computational science require only deterministic parallelsim, that is, expecting communication from a particular channel, rather than from several.
  • Parallel scientific algorithms can be developed in an elegant publication language and tested on a sequential computer. When it is established an algorithm works, it can easily be implemented in a parallel implementation language.

These then led to the following requirements for a parallel publication language.

  • The language should extend a widely used standard language with deterministic parallelism and message communication. The extensions should be in the spirit of the standard language.
  • The language should make it possible to program arbitrary configurations of parallel processes connected by communication channels. These configurations may be defined iteratively or recursively and created dynamically.
  • The language should enable a single-pass compiler to check that parallel processes do not interfere in a time-dependent manner.

Features

Implementation

The SuperPascal software can be accessed freely from the Brinch Hansen Archive. It consists of a compiler (sc) and interpreter (sr), which are both written in sequential Pascal.

References

  1. ^ Per Binch Hansen, SuperPascal: a publication language for parallel scientific computing, 1993
  2. ^ Welsh, Jim (1980). Structured System Programming. Upper Saddle River, NJ, USA: Prentice-Hall, Inc. ISBN 0138545626. {{cite book}}: Cite has empty unknown parameter: |coauthors= (help)
  3. ^ Tennent, R. D. (1981). Principles of Programming Languages. Upper Saddle River, NJ, USA: Prentice-Hall, Inc. ISBN 0137098731. {{cite book}}: Cite has empty unknown parameter: |coauthors= (help)
  4. ^ Hansen, Brinch (1977). The Architecture of Concurrent Programs. Prentice-Hall. {{cite book}}: Cite has empty unknown parameter: |coauthors= (help)
  5. ^ Hansen, Brinch (May), "Model programs for computational science: A programming methodology for multicomputers", Concurrency: Practice and Experience, pp. 407–423 {{citation}}: |access-date= requires |url= (help); Check date values in: |date= and |year= / |date= mismatch (help); Cite has empty unknown parameters: |coeditors= and |coauthors= (help)

External links