PAL (Pedagogic Algorithmic Language)

Introduction

The goal of this project is to preserve and present primary and secondary source materials (including specifications, source code, manuals, and papers discussing design and implementation) from PAL, the Pedagogic Algorithmic Language. The editor greatly appreciates comments, suggestions, and donations of additional materials.

"The PAL language is a direct descendent of Peter Landin's ISWlM, although there are important differences, particularly in the imperatives. The first implementation of PAL was by Landin and James H. Morris, Jr., in LISP. The language they implemented was much closer to ISWIM than to PAL as it now exists.

The present version of PAL was designed by Martin Richards along with Thomas J. Barkalow, Evans, Robert M. Graham, Morris and John M. Wozencraft. The implementation is the work of Richards and Barkalow.

The intellectual effort of which PAL is one outgrowth owes much to Christopher Strachey." [Evans 1968]

Source code

PAL system

The PAL/360 system consists of a compiler that translates from PAL to POCODE, an interpreter for POCODE, and a shell interfacing PAL to the underlying operating system.

"POCODE is stored in disk files to support separate compilation, so that
the instructors could supply test frameworks that student programs
would run against. PAL deliberately models the most interesting aspects
of contemporary languages (to fulfil the purpose of course 6.231) but
misses all the separate-compilation issues like local vs global names,
libraries, include files, linking, etc." [Robert Mabee, personal communication, September 4, 2010]

Robert Mabee notes: "I have an identical edition of the reference manual except for:
page 2.6/F - 1 third line typo: = should be .
page 2.7/E - 2 near bottom thinko in arithmetic: 13 should be 12, 43 sb 42
Ap 1.5 is misplaced near the end of Martin's file, followed by a duplicate of the start of sect 2.1
I have one additional appendix, Ap 2.1, 'The Complete Syntax for PAL' [see below].
The reference manual doesn't include later extensions to PAL such as a test/ifso/ifnot sugaring
(used in Pal-evans-19apr69)." [private communication to Paul McJones, June 20, 2010]

"PAL is a language designed for use as a tool to help teach programming linguistics[8]. As such, it incorporates generalizations of many of the features that are found in most common programming languages. PAL also has a relatively compact formal semantic definition. However, careful reading of this definition clearly shows that it would be much more readable if the control items and abstract syntax could be represented with a more sophisticated data definition facility. One goal of this thesis is to present such a facility."