PAL (Pedagogic Algorithmic Language)
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]
Thanks to: Arthur Evans Jr. and Frances J. Wozencraft, Martin Richards, Edward A. Feustel, Robert Mabee, Jim Stephens, and C. D. Tavares.
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]
- Martin Richards et al. PAL/360 source code (BCPL). Last modified by Robert Mabee, June 12, 1970.
- Martin Richards. PAL implementation in BCPL. Approximate date? Version includes addition of a polynomial datatype as a student project. Online at feustel.us
- Arthur Evans, Jr. A PAL Program of the Blackboard Evaluator. May 16, 1968, 2+21 pages. PDF
"Attached is a listing of a PAL program that simulates the left-hand blackboard evaluator of 6.231."
- Arthur Evans, Jr. PAL program for right-hand and jumping evaluators. April-May 1969, 29 pages. PDF
- Arthur Evans, Jr. and Martin Richards. Short example programs, 1967-1969, 18 pages. PDF
- Arthur Evans, Jr. PAL Syntax as a Parse Algorithm. Appendix 2.2. November 24, 1967. 1+6 pages. PDF
Computer-printed appendix preceded by handwritten note from Art Evans to 6.231 staff: "Here is still another attempt at PAL syntax. It is Martin's parse algorithm."
- M. Richards. PAL manual draft. December 29, 1967, 13 pages. PDF
"This is part of an experimental PAL manual which was written to demonstrate the usefulness of L and Rvalues when describing PAL."
- A. Evans.
PAL -- A Reference Manual and a Primer.
Department of Electrical Engineering, Massachusetts Institute of Technology, February 1968, 185 pages.
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]
- Anonymous. POCODE. Undated, 10 pages. PDF
- Arthur Evans, Jr. PAL -- a language designed for teaching programming linguistics. In Proceedings of the 1968 23rd ACM National Conference (August 27 - 29, 1968). ACM '68. ACM, New York, NY, pages 395-403. ACM Digital Library
- Stephen N. Zilles. An Expansion of the Data Structuring Capabilities of PAL. Report MIT-LCS-TM-015, Laboratory for Computer Science, Massachusetts Institute of Technology, October 1, 1970.
"PAL is a language designed for use as a tool to help teach programming linguistics. 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."
- J. M. Wozencraft and A. Evans. Notes on Programming Linguistics. M.I.T. Department of Electrical Engineering, February 1971. PDF
- Arthur Evans, Jr. The lambda calculus and its relation to programming languages. In Proceedings of the ACM Annual Conference - Volume 2 (Boston, Massachusetts, United States, August 01 - 01, 1972). R. Shields, Ed. ACM '72. ACM, New York, NY, pages 714-716. ACM Digital Library
- Martin Richards. Miscellaneous PAL Files, June 14, 2010. Online at cl.cam.ac.uk/~mr10
- Includes the scanned documents under "Source code" and "Documentation" above. Also contains the start of a reimplementation of PAL
- Diarmuid Pigott. PAL: Pedagogic Algorithmic Language. HOPL: an interactive Roster of Programming Languages. Online at hopl.murdoch.edu.au