💾 Archived View for tranarchy.fish › ~autumn › apl2 › foreword.gmi captured on 2023-03-20 at 17:52:50. Gemini links have been rewritten to link to archived content

View Raw

More Information

➡️ Next capture (2023-04-19)

-=-=-=-=-=-=-

<- Back to APL2 at a Glance

Foreword

<header>

<table width=100%>

<tr>

<td style="text-align: left">

[<a href="preface.html"><code>←</code></a>]

</td>

<td style="text-align: center">

[<a href="contents.html"><code>↑</code></a>]

</td>

<td style="text-align: right">

[<a href="chapter1.html"><code>→</code></a>]

</td>

</tr>

</table>

</header>

<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.&nbsp;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>

<footer>

<table width=100%>

<tr>

<td style="text-align: left">

[<a href="preface.html"><code>←</code></a>]

</td>

<td style="text-align: center">

[<a href="contents.html"><code>↑</code></a>]

</td>

<td style="text-align: right">

[<a href="chapter1.html"><code>→</code></a>]

</td>

</tr>

</table>

</footer>

View this page on the web

View page source