Discovering APL
A brief review of APL, its origins and what makes it distinctive.
Kenneth E. Iverson |
Early programming languages were designed to control what computers do. At Harvard in the 1950s Ken Iverson was revising traditional mathematical notation. He wanted a consistent language for describing operations on arrays, a notation a machine could interpret.
Iverson was a key member of the early computer science community. At Harvard with Howard Aiken he taught the world’s first classes on computing. When he published his math notation, he titled the book A Programming Language (Wiley, New York, 1962). His teaching assistant at Harvard, Fred Brooks, author of The Mythical Man Month, was IBM’s project manager for the development of OS/360, its first multi-tasking operating system. (OS/360 was the first operating system ever described formally — in Iverson notation, of course.) Iverson also went to IBM, who made him a Research Fellow, and implemented his notation on an 1130 computer, where it was dubbed APL after the title of his book. APL\1130 was providing personal computing to a community of users well before OS/360 came to life.
A fragment of the description of SYSTEM/360 |
The 1960s and 70s saw many efforts to produce VHLLs (Very High Level Languages) that would lower the skill requirements for programmers, a general strategy of industrialisation. The APL community played no part in this. Iverson stressed the importance of APL as a “tool of thought”, a notation to help humans describe and solve complex problems. We were not trying to make everyday programming easy; we wanted to solve harder problems faster. (The complete code for calculating the mean of a list of numbers requires 4 characters in J.) Ironically, experience shows APLs are easier for novices to learn than conventional programming languages.
APL never fitted comfortably into IBM’s product line, but was widely used by managers within the company. Until PCs became widely available, IBM had more employees writing APL than any other company. In the 1970s and 80s, educators, mathematicians, language designers and programmers combined to give the APLs cult status.
In the 1980s and 1990s the interest of an increasingly professionalised IT community shifted to problems (writing GUIs, and formal methods for developing software) to which APLs had little to contribute. Formal software development methods especially deprecated the use of APLs, by distinguishing analysis, design, programming and testing as separate activities and embedding them in elaborate ‘methodologies’. Programming represents such a small fraction of these ventures that no plausible improvement in programmer productivity could justify the high skill levels associated with APL.
Despite extraordinary proven productivity, APL was dropped from company after company, largely on theoretical grounds that argued for compliance with IT strategies. Until the advent of Extreme Programming (XP) and the Agile Alliance, few saw that programming is a design activity, and analysis often best done iteratively. In this period the APLs flourished only where results consistently outweighed IT theory, for example, in investment bank trading rooms.
As support now ebbs generally from the Software Engineering movement, the APLs remain the sharpest tool in the box, with a strong tradition of agile development.
>> Why Vectors?