💾 Archived View for tranarchy.fish › ~autumn › apl2 › foreword.gmi captured on 2023-06-16 at 16:16:41. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-04-19)
-=-=-=-=-=-=-
<hr>
<h2 id="foreword">Foreword</h2>
<p>Twenty years ago, in 1966, Kenneth E. Iverson and Adin Falkoff quietly introduced <span class="small-caps">APL\360</span>, the first interactive implementation of the programming language <span class="small-caps">APL</span>. Based on an earlier interpreter developed by Phil Abrams and Larry Breed while they were students at Stanford University, <span class="small-caps">APL\360</span> was a time-shared implementation of the notation Iverson used in his book <strong><em>A Programming Language</em></strong> (Wiley, 1962). In fact, the name <span class="small-caps">APL</span> is derived from the initial letters of that book’s three word title.</p>
<p>After many implementations of and variations on <span class="small-caps">APL</span> from <span class="small-caps">IBM</span> and other companies, <span class="small-caps">IBM</span> released the program product <span class="small-caps">APL2</span>. <span class="small-caps">APL2</span> generalizes and expands <span class="small-caps">APL</span> In three important areas: types of data permitted in an array; provision for a data item in an array to itself be an array; and treatment of operators.</p>
<p><span class="small-caps">APL2</span> allows an array to contain both numeric and character data, thus removing an early implementation restriction of <span class="small-caps">APL</span>. By permitting an item of an array to hold any other array, <span class="small-caps">APL2</span> introduces nested arrays, enriching the data structures of the language. Finally, <span class="small-caps">APL2</span> allows any function, either primitive or defined, to be the operand of an operator and, moreover, permits defined operators.</p>
<p>The end result of this generalization and expansion is a highly usable programming language. <span class="small-caps">APL2</span> permits rapid development of applications and models of application design. It opens up a wealth of new programming paradigms that did not exist in <span class="small-caps">APL</span>.</p>
<p>This book introduces <span class="small-caps">APL2</span> as a language in its own right. It does not assume that you know <span class="small-caps">APL</span>, and so does not compare and contrast the programming techniques of the two languages. With this book, you learn <span class="small-caps">APL2</span> by concentrating on the data structures and programming techniques needed to solve problems using <span class="small-caps">APL2</span>. If you are familiar with <span class="small-caps">APL</span>, you may want to look at this book to get a feel for how <span class="small-caps">APL2</span> differs from the <span class="small-caps">APL</span> you have come to know. You will be surprised to find that problems difficult to solve in <span class="small-caps">APL</span> are often simple in <span class="small-caps">APL2</span>.</p>
<p>The authors of this book are well acquainted with using, teaching, writing about, and implementing <span class="small-caps">APL</span> and <span class="small-caps">APL2</span>. From the latter days of <span class="small-caps">APL\360</span> to the present, Jim Brown has been associated with the implementation and development of <span class="small-caps">APL</span> and <span class="small-caps">APL2</span>. He worked summers for the <span class="small-caps">APL</span> Design Group while he pursued his doctorate in Computer and Information Science (then Systems and Information Science) at Syracuse University. His dissertation, <strong><em>A Generalization of APL</em></strong>, supported by Trenchard More’s seminal work in array theory, forms the basis for <span class="small-caps">APL2</span>.</p>
<p>Sandra Pakin authored the <strong><em>APL\360 Reference Manual</em></strong>, and she co-authored with Ray Polivka the book <strong><em>APL: The Language and Its Usage</em></strong> and, with the staff of Computer Innovations, the book <strong><em>APL: A Short Course</em></strong>. Sandra Pakin was a major contributor to <span class="small-caps">IBM</span>’s <strong><em>APL2 Language Reference Manual</em></strong>. For many years, Ray Polivka has worked in <span class="small-caps">IBM</span>’s Mid-Hudson Education Center in Poughkeepsie, New York, where he has been a prime mover in shaping and teaching the <span class="small-caps">IBM</span> internal education courses in <span class="small-caps">APL</span> and <span class="small-caps">APL2</span>.</p>
<p>The authors have combined their <span class="small-caps">APL2</span> experience and knowledge into a book that deserves more than a glance.</p>
<div class="line-block">Garth Foster<br>
Syracuse, New York<br>
November 27, 1986<a href="#fn1" id="fnref1" role="doc-noteref"><sup>1</sup></a></div>
<section class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn1" role="doc-endnote"><p>Dr. Foster dated these introductory comments on the day that is now generally heralded as marking the twentieth birthday of <span class="small-caps">APL</span>.<a href="#fnref1" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
</ol>
</section>