THE 1960S

APL

At Harvard, Kenneth E. Iverson worked on his doctoral thesis under the supervision of Howard Aiken and Wassily Leontief. His research focused on the automatic solution of linear differential equations within an economic model. This initial foray into programming raised a question for him: how could algorithms be better represented and data manipulated?

The answer began to take shape in 1956 when Iverson taught in the brand-new Automatic Data Processing program that Aiken had just established at Harvard. He started developing a formal notation to describe and analyze data processing. This notation, which did not yet have a name, initially served as a pedagogical tool. Together with Frederick P. Brooks Jr., then a doctoral student, he wrote a book entitled “Automatic Data Processing” that formalized these early ideas.

In 1957, Iverson worked as a consultant at McKinsey & Company. His notation found concrete application there, acting as a communication language between designers and programmers working on complex systems. The teams discovered the value of this approach for clarifying architectures that were otherwise difficult to grasp.

Career circumstances brought Iverson to IBM in 1960. There he met Adin Falkoff, who immediately took interest in this notation for his work on associative memory systems. This collaboration would transform an academic idea into a new computing paradigm.

In 1962, Iverson published “A Programming Language”. The work formally presented his notation, but it remained confined to blackboards and paper. To use it on a computer, it had to be manually translated into Fortran or another existing language. A frustrating but necessary intermediate step.

Everything changed in 1964. Iverson and Falkoff decided to transform this theoretical notation into an operational programming language. Lawrence M. Breed joined them in 1965 to design a practical version of APL intended for interactive time-sharing systems. The first constraint to overcome concerned characters. The IBM 1050 terminal could only display 88 symbols. This limitation, initially perceived as a handicap, pushed the team to rationalize and generalize several aspects of the language. Ultimately, this constraint proved beneficial as it forced a salutary conceptual clarification.

By 1970, APL won over its first users. Thousands of people adopted it, including IBM’s research and design teams, staff at NASA’s Goddard Space Flight Center, and financial planners at major corporations. The language attracted users through its elegance and practicality, despite criticism from the established computing community who judged it too esoteric.

At Johns Hopkins University’s Applied Physics Laboratory, the F.T. McClure Computing Center pushed innovation further. The team developed special APL system software for the IBM 360/91 computer. These developments exploited the machine’s vector processing capabilities and radically transformed execution performance. In 1978, the center took another step forward with an APL system capable of handling very large applications through virtual memory technology.

APL’s true innovation lay in its treatment of arrays as primitive objects. This approach revolutionized the way algorithms were conceived. Programmers naturally thought in terms of vector and matrix processing rather than loops and conditions. The language distinguished itself through its remarkable syntactic simplicity with only three possible types of statements. Name assignment, branching, or neither. The semantic rules remained few and the definitions of primitive functions were independent of data representations.

The 1970s saw APL progress despite limited support from major computer vendors. The introduction of the shared variable system in 1973 with APLSV was an innovation that solved several APL/360 system problems, particularly communication between concurrent programs and with external devices. The possibilities expanded considerably.

The following decade confirmed this expansion. APL was installed on virtually every computer on the market, including personal computers such as the IBM PC and the Tandy TRS-80. Many commercial time-sharing companies offered APL as a service. Some specialized in international financial databases updated in real time, exploiting the language’s ability to efficiently process large volumes of numerical data.

Unlike other major languages of the era that moved away from traditional mathematical notations, APL continued their development. It retained established symbols when possible and employed consistent mathematical terminology. This fidelity to mathematical conventions did not prevent occasional departures dictated by principles of simplicity and uniformity, such as adopting a single form for dyadic and monadic functions.

APL’s development illustrates the importance of clearly stated principles. First, simplicity, pursued through uniformity, generality, and conciseness. Then pragmatism, manifested by attention to real applications and hardware limitations. The fact that the language was developed for eight years without a machine installation provided a freedom to modify that would have been impossible for languages constrained by an existing user base.