PL360
   HOME

TheInfoList



OR:

PL360 (or PL/360) is a
system programming language 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 W ...
designed by
Niklaus Wirth Niklaus Emil Wirth (born 15 February 1934) is a Swiss computer scientist. He has designed several programming languages, including Pascal (programming language), Pascal, and pioneered several classic topics in software engineering. In 1984, he w ...
and written by Wirth, Joseph W. Wells Jr., and Edwin Satterthwaite Jr. for the
IBM System/360 The IBM System/360 (S/360) is a family of mainframe computer systems that was announced by IBM on April 7, 1964, and delivered between 1965 and 1978. It was the first family of computers designed to cover both commercial and scientific applica ...
computer at
Stanford University Stanford University, officially Leland Stanford Junior University, is a private research university in Stanford, California. The campus occupies , among the largest in the United States, and enrolls over 17,000 students. Stanford is consider ...
. A description of PL360 was published in early 1968, although the implementation was probably completed before Wirth left Stanford in 1967.


Description

PL/360 is a one pass
compiler In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
with a syntax similar to
ALGOL ALGOL (; short for "Algorithmic Language") is a family of imperative computer programming languages originally developed in 1958. ALGOL heavily influenced many other languages and was the standard method for algorithm description used by the ...
that provides facilities for specifying exact
machine code In computer programming, machine code is any low-level programming language, consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). Each instruction causes the CPU to perform a very ...
(language) instructions and registers similar to
assembly language In computer programming, assembly language (or assembler language, or symbolic machine code), often referred to simply as Assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence be ...
, but also provides features commonly found in
high-level programming language In computer science, a high-level programming language is a programming language with strong Abstraction (computer science), abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language ...
s, such as complex arithmetic expressions and
control structure In computer science, control flow (or flow of control) 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 ''imp ...
s. Wirth used PL360 to create
ALGOL W ALGOL W is a programming language. It is based on a proposal for ALGOL X by Niklaus Wirth and Tony Hoare as a successor to ALGOL 60. ALGOL W is a relatively simple upgrade of the original ALGOL 60, adding string, bitstring, complex number and ...
. Data types are: * Byte or character – 1 byte * Short integer – 2 bytes, interpreted as an integer in two's complement binary notation * Integer or logical – 4 bytes, interpreted as an integer in two's complement binary notation * Real – 4 bytes, interpreted as a base-16 (
hexadecimal In mathematics and computing, the hexadecimal (also base-16 or simply hex) numeral system is a positional numeral system that represents numbers using a radix (base) of 16. Unlike the decimal system representing numbers using 10 symbols, hexa ...
) short
floating-point arithmetic In computing, floating-point arithmetic (FP) is arithmetic that represents real numbers approximately, using an integer with a fixed precision, called the significand, scaled by an integer exponent of a fixed base. For example, 12.345 can be ...
number * Long real – 8 bytes, interpreted as a base-16 long floating-point number Registers can contain integer, real, or long real. Individual System/360 instructions can be generated inline using the PL360 "function statement" that defined an instruction by format and operation code. Function arguments were assigned sequentially to fields in the instruction. Examples are:


Example

R0, R1, and R2, and FLAG are predeclared names. BEGIN INTEGER BUCKET; IF FLAG THEN BEGIN BUCKET := R0; R0 := R1; R1 := R2; R2 := BUCKET; END ELSE BEGIN BUCKET := R2; R2 := R1; R1 := R0; R0 := BUCKET; END RESET(FLAG); END


Implementation

Wirth was at Stanford between 1963 and 1967, during the earlier part of which he was developing his
Euler Leonhard Euler ( , ; 15 April 170718 September 1783) was a Swiss mathematician, physicist, astronomer, geographer, logician and engineer who founded the studies of graph theory and topology and made pioneering and influential discoveries in ma ...
compiler and interpreter, the sources of which are dated 1965. Also in 1965, Stanford updated their
drum memory Drum memory was a magnetic data storage device invented by Gustav Tauschek in 1932 in Austria. Drums were widely used in the 1950s and into the 1960s as computer memory. For many early computers, drum memory formed the main working memory ...
based
Burroughs large systems The Burroughs Large Systems Group produced a family of large 48-bit mainframes using stack machine instruction sets with dense syllables.E.g., 12-bit syllables for B5000, 8-bit syllables for B6500 The first machine in the family was the B5000 in ...
B5000 to a
disk storage Disk storage (also sometimes called drive storage) is a general category of storage mechanisms where data is recorded by various electronic, magnetic, optical, or mechanical changes to a surface layer of one or more rotating disks. A disk drive is ...
based B5500. Since the target IBM S/360 (which was to replace an existing
IBM 7090 The IBM 7090 is a second-generation transistorized version of the earlier IBM 709 vacuum tube mainframe computer that was designed for "large-scale scientific and technological applications". The 7090 is the fourth member of the IBM 700/7000 ser ...
) was not installed until 1967, the initial implementation of PL360 was written in ALGOL and tested on Stanford's B5500. Once working, the compiler was then recoded in PL360, recompiled on the Burroughs system, and moved as a binary file to the S/360. The B5500 is programmed in a high-level ALGOL-derived language
Executive Systems Problem Oriented Language The Executive Systems Problem Oriented Language (ESPOL) is a programming language, a superset of ALGOL 60, that provides abilities of what would later be termed a '' system programming language'' or ''machine oriented high order language'' (mohol), ...
(ESPOL), and PL360 was intended to bring a comparable facility to the IBM mainframe architecture, although it was lacking major facilities of both Assembler F and ESPOL. This intent was largely ignored, with programmers continuing to use implementations of IBM's
macro assembler Macro (or MACRO) may refer to: Science and technology * Macroscopic, subjects visible to the eye * Macro photography, a type of close-up photography * Image macro, a picture with text superimposed * Monopole, Astrophysics and Cosmic Ray Observato ...
s. However, in the early 1970s, PL360 was extended to provide more capabilities, and was the programming language of choice for developing
Stanford Physics Information Retrieval System The Stanford Physics Information Retrieval System (SPIRES) is a database management system developed by Stanford University. It is used by universities, colleges and research institutions. The first website in North America was created to allow re ...
(SPIRES), Stanford's Database Management System.


See also

*
IBM PL/S PL/S, short for Programming Language/Systems, is a "machine-oriented" programming language based on PL/I. It was developed by IBM in the late 1960s, under the name Basic Systems Language (BSL), as a replacement for assembly language on internal ...
*
High-level assembler A high-level assembler in computing is an assembler for assembly language that incorporate features found in a high-level programming language. The earliest high-level assembler was probably Burroughs' Executive Systems Problem Oriented Language ...


Notes


References


External links

* *
PL360 Textbook

PL360@Everything2
{{Authority control Procedural programming languages IBM System/360 mainframe line Programming languages created in 1966