Chiron investigation

This page was last updated 2010 November 13

Robert W Floyd created Chiron, a programming language "designed to isolate and clarify the conceptual structures of algorithm design" (according to Floyd's Chiron Manual). Don Knuth's 2002 memoriam says Floyd...

...was destined to be disappointed that his dream of a new, near-ideal programming language called Chiron was never to be realized--possibly because he was reluctant to make the sorts of compromises that he saw me making with respect to TEX. Chiron was "an attempt to provide a programming environment in which, to the largest extent possible, one designs a program by designing the process which the program carries out." His plans for the Chiron compiler included novel methods of compile-time error recovery and type matching that have never been published.

and

Floyd also wrote many unpublished notes on a wide variety of subjects, often revising and polishing them into gems of exposition that I hope will some day appear on the Internet for all to enjoy. More than 17 boxes of his papers are on deposit in the Stanford University Archives, with catalog number SC 625.

In an interview, while discussing the difficulties of relying on others to implement software, Knuth mentions...

...Bob Floyd’s Chiron compiler never got going. Bob worked many years on a beautiful idea for a programming language, where he designed a language called Chiron, but he never touched the programming himself. I think this was actually the reason that he had trouble with that project, because it’s so hard to do the design unless you’re faced with the low-level aspects of it, explaining it to a machine instead of to another person.

What is the history of Chiron, and did the language achieve its design goals? Using a preliminary index prepared by the archives staff, eight boxes of Floyd's papers (boxes 3 through 7, 11, 15, and 16) deemed most likely to contain Chiron material were searched by a volunteer for 11 hours over two days in January 2010, in an attempt to learn and document for the sake of computing history just how far Chiron was developed. That search revealed:

A January 4, 1971 note (box 7) by Floyd indicating Ralph Gorin signed up for six units of Stanford course CS293 to develop a compiler "for my teaching language", but that no work was actually done.

A December 9, 1971 memo (box 6) from graduate student G. E. Autrey mentions a plan to implement a compiler named "7X", which is apparently a preliminary name for the Chiron project.

"Programming and the Chiron Language" (box 3 folder 11, 147 pages) is a version of the introductory programming text used at Stanford, with content and examples edited to use Chiron instead of ALGOL W, with a 1971 copyright. Another copy of the text is in box 15 folder 25, hand-marked "corrections copy", and a third copy is in box 16 folder 6 labeled "Guide to Chiron".

The "Chiron Manual" (box 3 folder 10, 85 pages), which says it is a "semi-formal" description of Chiron, to serve as a language and implementation manual. A version of Quicksort in Chiron written by Craig Franklin and dated November 2, 1972 starts on page 75 of the manual, and likely is the longest Chiron program ever written. A four-page description of Chiron's syntax starts on page 80.

A November 6, 1972 response (box 7) to an inquiry by R. D. Tennent about Floyd designing a language suitable for teaching introductory programming, where Floyd says "I deal with types by making type a semantic, rather than syntactic, category; e.g. subscripts must be integer valued, but need not be recognizable as such by the compiler. ...it is aimed at being a universal language; it includes capabilities, for example, permitting access to most hardware functions within the framework of functional notation, alaPL360."

A December 6, 1972 offer (box 6) to Gary Breitbard of Philadelphia to move to California and implement Chiron in one year as a Stanford Computer Science Department systems programmer.

Various short Chiron program listings and output (box 11) dated from September 1973 to March 1974 testing a Chiron compiler implemented in ALGOL W running on Stanford's IBM 360.

A March 13, 1974 memo (box 6) to Breitbard requesting a report on Chiron work over the last year, to include in a grant request.

A December 20, 1974 letter (box 7) to Ron Rivest mentions "the implementation is partially operating, using interpretive object code".

An April 18, 1977 memo (box 6) estimating that an ongoing LOTS implementation of Chiron would require three more months.

A May 17, 1977 extension (box 6) to August 31, 1977 for the ongoing contract with Horace J. Enea to implement Chiron on LOTS.

Listings of Chiron compiler source code (box 11) dated October 10, 1977 to January 15, 1978 in an unidentified Algol-like language, possibly SAIL. There are also runtime support routines written in assembler.

A June 6, 1978 letter (box 7) to Prentice-Hall responding to an offer to write a book on introductory programming in Pascal. Floyd mentions his old Algol W programming text became a Chiron text then a SAIL text, although "SAIL is not suitable for wide adoption and Chiron is not implemented yet".

A September 11, 1978 request (box 6) for Chiron compiler project files to be archived from disk to tape because the programmer is no longer employed on the project and the funding grant has expired.

Three undated documents are in box 3 folder 9: "Error Recovery in Chiron" (folder section 2, 3 pages), "Examples of Recursive Procedures in Chiron" (section 8, 7 pages), "Variables in Chiron" (section 9, 7 pages).

The above files indicate Chiron was planned but still unnamed in late 1971, and development was finally abandoned in 1978. Unfortunately, it appears there is no document that makes any comparison between Chiron and its predecessors, or that succinctly attempts to explain how and why Chiron would be considered an improvement. Comparing the introductory Chiron text with the prior ALGOL W version only reveals relatively minor "syntactic sugar" advances, such as no semicolons for terminating statements, cleaner input/output statements, COND() conditional expressions, an EXIT command for breaking out of statements, an indefinite iteration option in FOR-loops (now called ITERATE commands), and so on. No records of any memos or letters exchanged between Floyd and his compiler writers have been found, and the existing compiler source code is minimally commented, so much about Chiron will probably remain a mystery.

Update: Paul McJones pointed out that Floyd's files (programmer ID "RWF") in the SAILDART archives are a possible source of additional Chiron information. Contact Bruce Guenther Baumgart if you wish to request access to those files.