Discovering APL: Difference between revisions

Jump to navigation Jump to search
73 bytes added ,  22:17, 10 September 2022
m
Text replacement - "</source>" to "</syntaxhighlight>"
Miraheze>Adám Brudzewsky
m (Text replacement - "</source>" to "</syntaxhighlight>")
 
(8 intermediate revisions by 5 users not shown)
Line 1: Line 1:
:''A brief review of APL, its origins and what makes it distinctive.'' By Stephen Taylor.
:''A brief review of APL, its origins and what makes it distinctive.'' By [[Stephen Taylor]] (lightly edited for [[APL Wiki]]).


== Origins ==
== Origins ==


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 [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.
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.
Line 19: Line 19:
== Why vector languages? ==
== Why vector languages? ==


Distinct from [[Object orientated programming|object-orientation]], currently the most popular abstraction paradigm for software developers, array-orientation is an older paradigm, closely associated with functional programming, that offers different powers. Just as Vector languages have been extended to facilitate object-oriented programming, so array-oriented extensions are available for OO languages such as Java and C++. From the Vector languages, OO programmers can learn powerful techniques.
Distinct from [[Object-oriented programming|object-orientation]], currently the most popular abstraction paradigm for software developers, array-orientation is an older paradigm, closely associated with functional programming, that offers different powers. Just as Vector languages have been extended to facilitate object-oriented programming, so array-oriented extensions are available for OO languages such as Java and C++. From the Vector languages, OO programmers can learn powerful techniques.


Interpreters for the Vector languages have always had managed code (managing machine details), to let the programmer focus on more abstract issues. Their low housekeeping and interactive development environments make them languages of choice for many programmers pressed for time. Not surprisingly, Vector languages have a long association with agile or lightweight software development.
Interpreters for the Vector languages have always had managed code (managing machine details), to let the programmer focus on more abstract issues. Their low housekeeping and interactive development environments make them languages of choice for many programmers pressed for time. Not surprisingly, Vector languages have a long association with agile or lightweight software development.
Line 31: Line 31:
== A Shocking Brevity ==
== A Shocking Brevity ==


APL (A Programming Language) takes its name from [[A Programming Language|the eponymous book]] in which [[Ken Iverson]], then teaching mathematics at Harvard, introduced his revised notation for linear algebra. From Harvard he became an IBM Fellow. At IBM, ‘[[Iverson notation]]’ became [[A Programming Language]], distinguished by a shocking brevity.
APL (A Programming Language) takes its name from [[A Programming Language|the eponymous book]] in which Ken Iverson, then teaching mathematics at Harvard, introduced his revised notation for linear algebra. From Harvard he became an IBM Fellow. At IBM, ‘[[Iverson notation]]’ became [[A Programming Language]], distinguished by a shocking brevity.


This brevity originates in
This brevity originates in
Line 43: Line 43:
=== Unusual Symbols ===
=== Unusual Symbols ===


The single-character APL glyphs have frequently been cited as evidence of APL being unintelligible, or “a write-only language”. This can also be said of any unfamiliar language (do [[Wikipedia:regular expression|regular expression]]s attract similar comment?)
The single-character APL [[glyph]]s have frequently been cited as evidence of APL being unintelligible, or “a write-only language”. This can also be said of any unfamiliar language (do [[Wikipedia:regular expression|regular expression]]s attract similar comment?)


The glyphs are largely unnecessary and can easily be replaced by reserved words. This can be helpful for a novice who wishes to separate learning syntax and semantics from mastering a keyboard mapping. However most writers prefer the ‘power shorthand’. For example:
The glyphs are largely unnecessary and can easily be replaced by reserved words. This can be helpful for a novice who wishes to separate learning syntax and semantics from mastering a keyboard mapping. However most writers prefer the ‘power shorthand’. For example:


<source lang=apl>+⌿÷≢</source>
<syntaxhighlight lang=apl>+⌿÷≢</syntaxhighlight>


rather than
rather than


<source>sum divide tally</source>
<pre>sum divide tally</pre>


The density of APL expressions helps writers identify and accumulate abstractions, a crucial part of [[Wikipedia:refactoring|refactoring]].
The density of APL expressions helps writers identify and accumulate abstractions, a crucial part of [[Wikipedia:refactoring|refactoring]].
Line 95: Line 95:
== References ==
== References ==
<references />
<references />
[[Category:Essays]]

Navigation menu