Kenneth Eugene Iverson (17 December 1920 – 19 October 2004) was a Canadian computer scientist noted for the development of the programming language APL.
At age 17, while still out of school, he enrolled in a correspondence course on radios with De Forest Training in Chicago, and learned calculus by self-study from a textbook.
[4][6] During World War II, while serving in the Royal Canadian Air Force, he took correspondence courses toward a high school diploma.
After the war, Iverson enrolled in Queen's University in Kingston, Ontario, taking advantage of government support for ex-servicemen and under threat from an Air Force buddy who said he would "beat his brains out if he did not grasp the opportunity".
Kenneth Iverson has recalled graduate study under Aiken as "like an apprenticeship" in which the student "learned the tools of the scholarship trade".
A student was thus "made to feel part of a scholarly enterprise" and was provided, "often for the first time, with easy and intimate access to others more experienced in his chosen field".When interviewing Aiken, I had asked him whether Tropp and I might see his lecture notes; Aiken replied that he had always destroyed his lecture notes at the end of each year, so that he would not be tempted to repeat his lectures.Howard Aiken had developed the Harvard Mark I, one of the first large-scale digital computers, while Wassily Leontief was an economist who was developing the input–output model of economic analysis, work for which he would later receive the Nobel Prize.
Iverson stayed on at Harvard as an assistant professor to implement the world's first graduate program in "automatic data processing".
[4][19] The first published paper using the notation was The Description of Finite Sequential Processes, initially Report Number 23 to Bell Labs and later revised and presented at the Fourth London Symposium on Information Theory in August 1960.
[4] He was preceded to IBM by Fred Brooks, who advised him to "stick to whatever [he] really wanted to do, because management was so starved for ideas that anything not clearly crazy would find support."
In particular, he was allowed to finish and publish A Programming Language[20][21] and (with Brooks) Automatic Data Processing,[18] two books that described and used the notation developed at Harvard.
(Automatic Data Processing and A Programming Language began as one book "but the material grew in both magnitude and level until a separation proved wise".
[20][21] In early 1963 Falkoff, later joined by Iverson and Ed Sussenguth, proceeded to use the notation to produce a formal description of the IBM System/360 computer then under design.
[4][24] One hotbed of interest was at Stanford University which included Larry Breed, Phil Abrams, Roger Moore, Charles Brenner,[25] and Mike Jenkins,[26][27] all of whom later made contributions to APL.
[25][29][30] Subsequently, Breed, Dick Lathwell (ex University of Alberta), and Roger Moore (of I. P. Sharp Associates) produced the System/360 implementation;[31] the three received the Grace Murray Hopper Award in 1973 "for their work in the design and implementation of APL\360, setting new standards in simplicity, efficiency, reliability and response time for interactive systems.
[19] Two treatises from this period, Conventions Governing the Order of Evaluation[40] and Algebra as a Language,[41] are apologias of APL notation.
[49] He used the funding that came with being an IBM Fellow to bring in visiting teachers and professors from various fields, including Donald McIntyre from Pomona[28] and Jeff Shallit as a summer student.
[50] Iverson's work at this time centered in several disciplines, including collaborative projects in circuit theory, genetics, geology, and calculus.
He was preceded there by his IBM colleagues Paul Berry, Joey Tuttle, Dick Lathwell, and Eugene McDonnell.
In the 1970s and 1980s, the main APL vendors were IBM, STSC, and IPSA, and all three were active in developing and extending the language.
[88][89][90] Work on APL2 proceeded intermittently for 15 years,[29] with actual coding starting in 1971 and APL2 becoming available as an IUP (Installed User Program, an IBM product classification) in 1982.
[114]Roger Hui described the final impetus that got J started in Appendix A of An Implementation of J:[115] One summer weekend in 1989, Arthur Whitney visited Ken Iverson at Kiln Farm and produced—on one page and in one afternoon—an interpreter fragment on the AT&T 3B1 computer.
I studied this interpreter for about a week for its organization and programming style; and on Sunday, August 27, 1989, at about four o'clock in the afternoon, wrote the first line of code that became the implementation described in this document.
[85] In retrospect, Iverson's APL87 paper APL87,[107] in five pages, prescribed all the essential steps in writing an APL interpreter, in particular the sections on word formation and parsing.
Arthur Whitney, in addition to the "one-page thing", contributed to J development by suggesting that primitives be oriented on the leading axis, that agreement (a generalization of scalar extension) should be prefix instead of suffix,[117] and that a total array ordering be defined.
It was realized only later[119][120] that forks made tacit expressions (operator expressions) complete in the following sense: any sentence involving one or two arguments that did not use its arguments as an operand, can be written tacitly with fork, compose, the left and right identity functions, and constant functions.
Two obvious differences between J and other APL dialects are: (a) its use of terms from natural languages instead of from mathematics or computer science (the practice began with A Dictionary of APL): noun, verb, adverbs, alphabet, word formation, sentence, ... instead of array, function, operator, character set, lexing, expression, ... ; and (b) its use of 7-bit ASCII characters instead of special symbols.