PAL (programming language)

Last updated

PAL, the Pedagogic Algorithmic Language, is a programming language developed at the Massachusetts Institute of Technology in around 1967 to help teach programming language semantics and design. [1] [2] It is a "direct descendant" of ISWIM and owes much of its philosophy to Christopher Strachey. [3]

The initial implementation of PAL, in Lisp, was written by Peter Landin and James H. Morris, Jr. It was later redesigned by Martin Richards, Thomas J. Barkalow, Arthur Evans, Jr., Robert M. Graham, James Morris, and John Wozencraft. It was implemented by Richards and Barkalow in BCPL as an intermediate-code interpreter and ran on the IBM System/360; this was called PAL/360. [4]

RPAL

RPAL, the Right-reference Pedagogic Algorithmic Language, is a functional subset of PAL with an implementation on SourceForge. [5] It is used at the University of Florida to teach the construction of programming languages and functional programming. Programs are strictly functional, with no sequence or assignment operations.

Related Research Articles

<span class="mw-page-title-main">APL (programming language)</span> Functional programming language for arrays

APL is a programming language developed in the 1960s by Kenneth E. Iverson. Its central datatype is the multidimensional array. It uses a large range of special graphic symbols to represent most functions and operators, leading to very concise code. It has been an important influence on the development of concept modeling, spreadsheets, functional programming, and computer math packages. It has also inspired several other programming languages.

<span class="mw-page-title-main">Computing</span> Activity involving calculations or computing machinery

Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithmic processes, and development of both hardware and software. Computing has scientific, engineering, mathematical, technological and social aspects. Major computing disciplines include computer engineering, computer science, cybersecurity, data science, information systems, information technology, digital art and software engineering.

Computer programming or coding is the composition of sequences of instructions, called programs, that computers can follow to perform tasks. It involves designing and implementing algorithms, step-by-step specifications of procedures, by writing code in one or more programming languages. Programmers typically use high-level programming languages that are more easily intelligible to humans than machine code, which is directly executed by the central processing unit. Proficient programming usually requires expertise in several different subjects, including knowledge of the application domain, details of programming languages and generic code libraries, specialized algorithms, and formal logic.

<span class="mw-page-title-main">Computer science</span> Study of computation

Computer science is the study of computation, information, and automation. Computer science spans theoretical disciplines to applied disciplines. Though more often considered an academic discipline, computer science is closely related to computer programming.

In computing, a virtual machine (VM) is the virtualization or emulation of a computer system. Virtual machines are based on computer architectures and provide the functionality of a physical computer. Their implementations may involve specialized hardware, software, or a combination of the two. Virtual machines differ and are organized by their function, shown here:

ISWIM is an abstract computer programming language devised by Peter Landin and first described in his article "The Next 700 Programming Languages", published in the Communications of the ACM in 1966.

<span class="mw-page-title-main">Kenneth E. Iverson</span> Canadian computer scientist (1920–2004)

Kenneth Eugene Iverson was a Canadian computer scientist noted for the development of the programming language APL. He was honored with the Turing Award in 1979 "for his pioneering effort in programming languages and mathematical notation resulting in what the computing field now knows as APL; for his contributions to the implementation of interactive systems, to educational uses of APL, and to programming language theory and practice".

<span class="mw-page-title-main">Guy L. Steele Jr.</span> American computer scientist (born 1954)

Guy Lewis Steele Jr. is an American computer scientist who has played an important role in designing and documenting several computer programming languages and technical standards.

<span class="mw-page-title-main">Hal Abelson</span> American mathematician

Harold Abelson is the Class of 1922 Professor of Computer Science and Engineering in the Department of Electrical Engineering and Computer Science at the Massachusetts Institute of Technology (MIT), a founding director of both Creative Commons and the Free Software Foundation, creator of the MIT App Inventor platform, and co-author of the widely-used textbook Structure and Interpretation of Computer Programs, sometimes also referred to as "the wizard book."

MultiLisp is a functional programming language, a dialect of the language Lisp, and of its dialect Scheme, extended with constructs for parallel computing execution and shared memory. These extensions involve side effects, rendering MultiLisp nondeterministic. Along with its parallel-programming extensions, MultiLisp also had some unusual garbage collection and task scheduling algorithms. Like Scheme, MultiLisp was optimized for symbolic computing. Unlike some parallel programming languages, MultiLisp incorporated constructs for causing side effects and for explicitly introducing parallelism.

<span class="mw-page-title-main">Barbara Liskov</span> American computer scientist

Barbara Liskov is an American computer scientist who has made pioneering contributions to programming languages and distributed computing. Her notable work includes the introduction of abstract data types and the accompanying principle of data abstraction, along with the Liskov substitution principle, which applies these ideas to object-oriented programming, subtyping, and inheritance. Her work was recognized with the 2008 Turing Award, the highest distinction in computer science.

<span class="mw-page-title-main">Matthias Felleisen</span> German-American computer science professor and author

Matthias Felleisen is a German-American computer science professor and author. He grew up in Germany and immigrated to the US in his twenties. He received his PhD from Indiana University under the direction of Daniel P. Friedman.

<span class="mw-page-title-main">Racket (programming language)</span> Lisp dialect

Racket is a general-purpose, multi-paradigm programming language and a multi-platform distribution that includes the Racket language, compiler, large standard library, IDE, development tools, and a set of additional languages including Typed Racket, Swindle, FrTime, Lazy Racket, R5RS & R6RS Scheme, Scribble, Datalog, Racklog, Algol 60 and several teaching languages.

<span class="mw-page-title-main">Programming language theory</span> Branch of computer science

Programming language theory (PLT) is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of formal languages known as programming languages. Programming language theory is closely related to other fields including mathematics, software engineering, and linguistics. There are a number of academic conferences and journals in the area.

Douglas Taylor "Doug" Ross was an American computer scientist pioneer, and chairman of SofTech, Inc. He is most famous for originating the term CAD for computer-aided design, and is considered to be the father of Automatically Programmed Tools (APT), a programming language to drive numerical control in manufacturing. His later work focused on a pseudophilosophy he developed and named Plex.

References

  1. Evans, Arthur Jr. (February 1968). "PAL: Pedagogic Algorithmic Language: A Reference Manual and a Primer" (PDF). Computer History Museum: Software Preservation Group. Mountain View, California: Department of Electrical Engineering, MIT . Retrieved 10 November 2022.
  2. John M. Wozencraft and Arthur Evans, Jr. Notes on Programming Linguistics. Unpublished report, Department of Electrical Engineering, MIT. February, 1971.
  3. Arthur Evans, Jr., "PAL—a language designed for teaching programming linguistics" Proceedings of the 1968 23rd ACM National Conference (August 27–29, 1968), p. 395-403 ACM abstract
  4. "PAL (Pedagogic Algorithmic Language)". Computer History Museum/Software Preservation Group.
  5. "RPAL - The Right-reference Pedagogic Algorithmic Language". SourceForge.