SP/k

Last updated
SP/k
Paradigm structured, imperative
Designed by R.C. Holt, D.B. Wortman, D.T. Barnard, J.R. Cordy
Developer R.C. Holt, D.B. Wortman, D.T. Barnard, J.R. Cordy
First appeared1974
Stable release
SP/8
Typing discipline static, strong
Influenced by
PL/I
Influenced
Turing

SP/k is a programming language developed circa 1974 [1] by R.C. Holt, D.B. Wortman, D.T. Barnard and J.R. Cordy as a subset of the PL/I programming language designed for teaching programming. It was used for about a decade at over 40 universities, schools, and research laboratories in Canada and the United States.

Contents

SP/k was one of the first languages specifically designed to encourage structured programming. The features of SP/k were chosen to encourage structured problem solving by computers, to make the language easy to learn and use, to eliminate confusing and redundant constructs, and to make the language easy to compile. The resulting language was suitable for introducing programming concepts used in various applications, including business data processing, scientific calculations and non-numeric computation.

SP/k is actually a sequence of language subsets called SP/1, SP/2, ... SP/8. Each subset introduces new programming language constructs while retaining all the constructs of preceding subsets, forming a stepwise system for teaching computer programming. Each subset is precisely defined and self-contained, and can be learned or implemented without the following subsets. This allows for various levels of programming education. The design and philosophy of SP/k was a strong influence on the Turing programming language.

See also

Related Research Articles

In computing, a compiler is a computer program that translates computer code written in one programming language into another language. The name "compiler" is primarily used for programs that translate source code from a high-level programming language to a lower level language to create an executable program.

Macro (computer science) In computer science, a concise representation of a pattern

A macro in computer science is a rule or pattern that specifies how a certain input should be mapped to a replacement output. Applying a macro to an input is macro expansion. The input and output may be a sequence of lexical tokens or characters, or a syntax tree. Character macros are supported in software applications to make it easy to invoke common command sequences. Token and tree macros are supported in some programming languages to enable code reuse or to extend the language, sometimes for domain-specific languages.

Programming language Language for communicating instructions to a machine

A programming language is a formal language comprising a set of instructions that produce various kinds of output. Programming languages are used in computer programming to implement algorithms.

PL/I is a procedural, imperative computer programming language developed and published by IBM. It is designed for scientific, engineering, business and system programming. It has been used by academic, commercial and industrial organizations since it was introduced in the 1960s, and is still used.

Structured programming is a programming paradigm aimed at improving the clarity, quality, and development time of a computer program by making extensive use of the structured control flow constructs of selection (if/then/else) and repetition, block structures, and subroutines.

Turing (programming language)

Turing is a Pascal-like programming language developed in 1982 by Ric Holt and James Cordy, then of University of Toronto, in Toronto, Ontario, Canada. Turing is a descendant of Euclid, Pascal and SP/k that features a clean syntax and precise machine-independent semantics.

In computer science, control flow is the order in which individual statements, instructions or function calls of an imperative program are executed or evaluated. The emphasis on explicit control flow distinguishes an imperative programming language from a declarative programming language.

In computer science, a compiler-compiler or compiler generator is a programming tool that creates a parser, interpreter, or compiler from some form of formal description of a programming language and machine.

Programming paradigms are a way to classify programming languages based on their features. Languages can be classified into multiple paradigms.

PL/C is an instructional dialect of the PL/I computer programming language, developed at Cornell University in the 1970s.

A system programming language is a programming language used for system programming; such languages are designed for writing system software, which usually requires different development approaches when compared with application software. Edsger Dijkstra refers to these language as Machine Oriented High Order Languages, or mohol.

The Syntax/Semantic Language (S/SL) is an executable high level specification language for recursive descent parsers, semantic analyzers and code generators developed by James Cordy, Ric Holt and David Wortman at the University of Toronto in 1980.

James Cordy Canadian computer scientist and educator

James Reginald Cordy is a Canadian computer scientist and educator who is Professor Emeritus in the School of Computing at Queen's University. As a researcher he is most recently active in the fields of source code analysis and manipulation, software reverse and re-engineering, and pattern analysis and machine intelligence. He has a long record of previous work in programming languages, compiler technology, and software architecture.

Euclid is an imperative programming language for writing verifiable programs. It was designed by Butler Lampson and associates at the Xerox PARC lab in the mid-1970s. The implementation was led by Ric Holt at the University of Toronto and James Cordy was the principal programmer for the first implementation of the compiler. It was originally designed for the Motorola 6809 microprocessor. It was considered innovative for the time; the compiler development team had a $2 million budget over 2 years and was commissioned by the Defense Advanced Research Projects Agency of the U.S. Department of Defense and the Canadian Department of National Defence. It was used for a few years at I. P. Sharp Associates, MITRE Corporation, SRI International and various other international institutes for research in systems programming and secure software systems.

XPL is a programming language based on PL/I, a portable one-pass compiler written in its own language, and a parser generator tool for easily implementing similar compilers for other languages. XPL was designed in 1967 as a way to teach compiler design principles and as starting point for students to build compilers for their own languages.

TUNIS was a Unix-like operating system, developed at the University of Toronto in the early 1980s. TUNIS was a portable operating system compatible with Unix V7, but with a completely redesigned kernel, written in Concurrent Euclid. Programs that ran under Unix V7 could be run under TUNIS with no modification.

Concurrent Euclid (ConEuc) is a concurrent descendant of the Euclid programming language designed by James Cordy and Ric Holt, then at the University of Toronto, in 1980. ConEuc was designed for concurrent, high performance, highly reliable system software, such as operating systems, compilers and embedded microprocessor systems. The TUNIS operating system, a Unix variant, was implemented entirely in Concurrent Euclid. ConEuc extends a core subset of Euclid with processes and monitors as well as language constructs needed for systems programming including separate compilation, variables at absolute addresses, type converters, long integers and other features.

David Gries is an American computer scientist at Cornell University, United States mainly known for his books The Science of Programming (1981) and A Logical Approach to Discrete Math.

In computing, a compiler is a computer program that transforms source code written in a programming language or computer language, into another computer language. The most common reason for transforming source code is to create an executable program.

References

  1. Holt, Richard; Wortman, D. (February 1974). "A sequence of structured subsets of PL/I" . Retrieved 2009-09-17.

This article is based on material taken from the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later.