Discovering APL: Difference between revisions
Jump to navigation
Jump to search
→Origins
Miraheze>Adám Brudzewsky (Created page with ":''A brief review of APL, its origins and what makes it distinctive.'' By Stephen Taylor. == Origins == Early programming languages were designed to control what computers d...") |
Miraheze>Adám Brudzewsky |
||
Line 5: | Line 5: | ||
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. | 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 [[Wikipedia:Howard Aiken|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, [[Wikipedia:Fred Brooks|Fred Brooks]], author of ''[[Wikipedia:The Mythical Man-Month|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 [ | Iverson was a key member of the early computer science community. At Harvard with [[Wikipedia:Howard Aiken|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, [[Wikipedia:Fred Brooks|Fred Brooks]], author of ''[[Wikipedia:The Mythical Man-Month|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 [https://web.archive.org/web/20070710100707/http://www.research.ibm.com/journal/sj/032/falkoff.pdf described formally] — in [[Iverson notation]], of course.) Iverson also went to IBM, who made him a Research Fellow, and [[APL\1130|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. | ||
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 3 characters.) Ironically, experience shows APLs are easier for novices to learn than conventional programming languages. | 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 3 characters.) Ironically, experience shows APLs are easier for novices to learn than conventional programming languages. | ||
Line 16: | Line 16: | ||
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. | 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 vector languages? == | == Why vector languages? == | ||