DRAFT for ACM Turing Award page on Ken Iverson based on template by Paul McJones / paul@mcjones.org / May 4, 2008ACM "Kenneth Iverson" page

*IBM Thomas J. Watson Research Center*

* 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.*

(PDF)* Notation as a Tool of Thought *

(HTML)* Notation as a Tool of Thought *

(or from ACM Portal - subscription required)

The importance of nomenclature, notation, and language as tools of thought has long been recognized. In chemistry and in botany, for example, the establishment of systems of nomenclature by Lavoisier and Linnaeus did much to stimulate and to channel later investigation. Concerning language, George Boole in his "Laws of Thought" [1, p.24] asserted "That language is an instrument of human reason, and not merely a medium for the expression of thought, is a truth generally admitted."

Mathematical notation provides perhaps the best-known and best-developed example of language used consciously as a tool of thought. Recognition of the important role of notation in mathematics is clear from the quotations of mathematicians given in Cajori's A History of Mathematical Notations [2, pp.332,331]. They are well worth reading in full, but the following excerpts suggest the tone:

By relieving the brain of all unnecesary work, a good notation sets it free to concentrate on more advanced problems, and in effect increases the mental power of the race.

A. N. Whitehead

The quantity of meaning compressed into small space by algebraic signs, is another circumstance that facilitates the reasonings we are accustomed to carry on by their aid.

Charles Babbage

Nevertheless, mathematical notation has serious deficiencies. In particular, it lacks universality, and must be interpreted differently according to the topic, according to the author, and even according to the immediate context. Programming languages, because they were designed for the purpose of directing computers, offer important advantages as tools of thought. Not only are they universal (general-purpose), but they are also executable and unambiguous. Executability makes it possible to use computers to perform extensive experiments on ideas expressed in a programming language, and the lack of ambiguity makes possible precise thought experiments. In other respects, however, most programming languages are decidedly inferior to mathematical notation and are little used as tools of thought in ways that would be considered significant by, say, an applied mathematician.

The thesis of the present paper is that the advantages of executability and universality found in programming languages can be effectively combined, in a single coherent language, with the advantages offered by mathematical notation. It is developed in four stages:

(a) Section 1 identifies salient characteristics of mathematical notation and uses simple problems to illustrate how these characteristics may be provided in an executable notation.

(b) Sections 2 and 3 continue this illustration by deeper treatment of a set of topics chosen for their general interest and utility. Section 2 concerns polynomials, and Section 3 concerns transformations between representations of functions relevant to a number of topics, including permutations and directed graphs. Although these topics might be characterized as mathematical, they are directly relevant to computer programming, and their relevance will increase as programming continues to develop into a legitimate mathematical discipline.

(c) Section 4 provides examples of identities and formal proofs. Many of these formal proofs concern identities established informally and used in the preceding sections.

(d) The concluding section provides some general comparisons with mathematical notation, references to treatments of other topics, and discussion of the problem of introducing notation in context.

The executable language to be used is APL, a general purpose language which originated in an attempt to provide clear and precise expression in writing and teaching, and which was implemented as a programming language only after several years of use and development.

Although many readers will be unfamiliar with APL, I have chosen not to provide a separate introduction to it, but rather to introduce it in context as needed. Mathematical notation is always introduced in this way rather than being taught, as programming languages commonly are, in a separate course. Notation suited as a tool of thought in any topic should permit easy introduction in the context of that topic; one advantage of introducing APL in context here is that the reader may assess the relative difficulty of such introduction.

However, introduction in context is incompatible with complete discussion of all nuances of each bit of notation, and the reader must be prepared to either extend the definitions in obvious and systematic ways as required in later uses, or to consult a reference work. All of the notation used here is summarized in Appendix A, and is covered fully in pages 24-60 of APL Language [4].

Readers having access to some machine embodiment of APL may wish to translate the function definitions given here in "direct definition" form [5, p. 10] (using {alpha} and {omega} to represent the left and right arguments) to the "canonical" form required for execution. A function for performing this translation automatically is given in Appendix B.

*The design of APL influenced a number of other programming languages such as Mathematica, J, K, S+, and many others, especially in the field of functional programming. The language was also a factor in the success of the early time-sharing systems, as well as early work in the implementation of a form of parallel processing known as vector processing.*

The language's original motivation, to rationalize mathematical notation, has been more slowly realized. But, hey, it took 500 years for Hindu-Arabic notation to supplant Roman numerals even though the advantages there are just as overwhelming and there was a much smaller installed base.

*Ken was born in Camrose, Alberta, Canada, in 1920. He started elementary school in a one-room schoolroom, on April Fool's day in 1926, when he was five years old. By the age of 12, he was entering grade 9, but the one-room schoolrooms were disappearing by then, so he had to live away from home during the week to attend High School. Though he enjoyed school, he left after a year to work on the family farm during the early years of the Great Depression. Also, as he put it, "the only purpose of further schooling was to become a schoolteacher, and that I decidedly did not want."
*

*
He continued his education at the age of 17 by entering a correspondence course, offered by De Forest’s Training of Chicago, on the principles of the then-new technology of radio. In this course of study, Ken realized that "the really interesting books on radio and electricity used calculus." This led him to buy a book and teach himself the subject during the many cold days of Alberta winters.
*

*
Drafted in the Canadian army in 1942, he joined the Air Force a year later. In spite of his earlier disdain for advanced education, the opportunities offered in the service allowed him to complete the equivalent of high school by correspondence courses. Upon completion of his tour of duty, he as also alerted to the possibilities of higher education open to him as a veteran. In fact, as he put it, regarding the opportunity to go to a university, "one of my buddies threatened to return and beat my brains out if I did not grasp the opportunity."
*

*
He took a degree in mathematics and physics at Queen’s University, Ontario, then went on to postgraduate work at Harvard University at the urging of head of the mathematics department. However, he found mathematics at Harvard less to his liking than Engineering and Applied Physics, to which department he switched after getting his Master's degree in mathematics. Much of his interest here was attracted by the work of Professor Howard Aiken in the new field of "Automatic Data Processing". Dr. Aiken overcame opposition from Harvard's administration to introduce a Master's program in this field in 1955, in which Ken began his formal teaching career.
*

*
It was in this position that Ken first began to be "appalled to find that the mathematical notation on which I had been raised failed to fill the needs of the courses I was assigned" and to work on a better notation which was based heavily on ideas from matrix algebra. Of particular interest was "the notion of Operators in the sense introduced by Heaviside in his treatment of Maxwell’s equations." It was also in this position that Ken learned about teaching from a man he came to know as friend, Fred Brooks.
*

*
Thus "Iverson notation", as it was first called, began primarily as a notation rather than as a computer language per se. This unusual genesis was reflected in its first use, nearly ten years before it was first implemented on a machine, as a medium for recording business knowledge with the aim of computerizing certain operations when Ken took a six-month sabbatical from Harvard to work for McKinsey & Co. at a large sugar company. This experience encouraged him to continue development of his notation through the end of his time at Harvard and the beginning of his employment at IBM Research, culminating in the publication of his book A Programming Language in 1962. The name APL came from the title of this book, as suggested by Ken's long-time collaborator, Adin Falkoff.
*

*
This time at IBM marked a seminal period in the development of APL as a computer language. Much of the history of this period of the language is memorialized in a folk-song APL Blossom Time. The language was used to produce a formal description of the IBM System/360 computers then being developed. Subsequently, a version of the language was implemented in Fortran by Stanford graduate student Larry Breed. Soon after this, APL was implemented as an interactive interpreter on IBM mainframe systems. From this platform, it gained entry to many schools and corporations throughout the world.
*

*
*

*[This is a good place for photographs]*

*[Explanation of awardee's research contributions, for a Computer Science-cognizant audience]*

*[One approach is to organize this section thematically in roughly decreasing order of significance, but broad latitude is given to the associate editor to organize this section appropriately] *

*[It is a good idea to link to key publications here, to provide context; the full publication list comes later]*

*Notation as a tool of thought*

*Generalized Array Processing*

*Symbolic programming - executable notation*

*Interactive Programming*

*Making the power of a computer available to non-programmers*

*[Chronological order*]

*[This section could include source code, where relevant]*

*[Description of system 1]*

*[Description of system 2]*

*[Description of system 3]*

*[Include the awardee's vita, with no editing unless there are factual errors; it is best to work with the awardee to resolve such errors first]*

*[Typical sections: education, employment history, professional honors, professional affiliations, publications (but see next section)]*

*[Link to ACM author profile page for awardee; the profile should include links to freely-available versions wherever possible]*

*[In many cases the awardee's vita will list unpublished items (technical reports, etc.); where appropriate, these should be linked to, which in some cases can work around lack of free access to published versions]*

*[Reference list]*

*[Name and affiliation of the Turing Award Curator in charge of this page, with email and period of editing]*

*[Acknowledgments (e.g., for photographs, for providing material for Contributions section, help tracking down old publications, etc.)]*