Ken Iverson: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
Miraheze>Adám Brudzewsky
No edit summary
m (Text replacement - "Direct definition (Iverson)" to "Direct definition (notation)")
 
(23 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Kenneth Eugene Iverson (17 December 1920 – 19 October 2004) was a Canadian mathematician and computer scientist, noted for the development of APL. He was honored with the Turing Award in 1979 "for his pioneering effort in programming languages and mathematical notation resulting in what the computing field now knows as APL; for his contributions to the implementation of interactive systems, to educational uses of APL, and to programming language theory and practice".
[[File:KEI with ATW NY Aug 1989 (cropped) - Ken Iverson.png|thumb|right|Ken Iverson in 1989]]
'''Kenneth Eugene Iverson''' (17 December 1920 – 19 October 2004) was a Canadian mathematician and computer scientist, noted for the development of APL. He was honored with the Turing Award in 1979 "for his pioneering effort in programming languages and mathematical notation resulting in what the computing field now knows as APL; for his contributions to the implementation of interactive systems, to educational uses of APL, and to programming language theory and practice".


While teaching mathematics, Iverson developed an alternative [[Iverson Notation|mathematical notation]] and later described, in his book [[A Programming Language]], how this could be used for instructing computers. It was based on this book that [[Larry Breed]] and [[Philip Abrams]] implemented the first interpreter, and it eventually was named A.P.L. acronymising the book title.
== History ==
:''Main article: [[Wikipedia:Kenneth E. Iverson|Kenneth E. Iverson]]
 
While teaching mathematics, Iverson developed [[Iverson notation|an alternative mathematical notation]] and later described, in his book [[A Programming Language]], how this could be used for instructing computers. It was based on this book that [[Larry Breed]] and [[Philip Abrams]] implemented the first interpreter, and it eventually was [[The name APL|named ''A.P.L.'']] acronymising the book title.
 
On 17 December 2020, [[BAA]] organised an [[BAA#Iverson_Centenary|Iverson Centernary]] event, celebrating the 100th anniversary of Iverson's birth.


== Contributions to traditional mathematics ==
== Contributions to traditional mathematics ==
Line 8: Line 14:


Carl Friedrich Gauss introduced the square bracket notation <math>[x]</math> in his third proof of quadratic reciprocity (1808).
Carl Friedrich Gauss introduced the square bracket notation <math>[x]</math> in his third proof of quadratic reciprocity (1808).
This remained the standard in mathematics until Iverson introduced the names "floor" and "ceiling" and the corresponding notations <math>\lfloor x\rfloor </math>  and <math>\lceil x \rceil </math> in his 1962 book ''A Programming Language''. This notation has gained widespread use in mathematics.
This remained the standard in mathematics until Iverson introduced the names "floor" and "ceiling" and the corresponding notations <math>\lfloor x\rfloor </math>  and <math>\lceil x \rceil </math> in his 1962 book ''A Programming Language''. The names and notations have gained widespread use in mathematics.


=== Iverson bracket ===
=== Iverson bracket ===


In mathematics, the '''Iverson bracket''' generalises the Kronecker delta. It converts any logical proposition into a number that is 1 if the proposition is satisfied, and 0 otherwise, and is generally written by putting the proposition inside square brackets:
In mathematics, the '''Iverson bracket''' generalises the [[wikipedia:Kronecker delta|Kronecker delta]]. It converts any logical proposition into a number that is 1 if the proposition is satisfied, and 0 otherwise, and is generally written by putting the proposition inside square brackets:
:<math>[P] = \begin{cases} 1 & \text{if } P \text{ is true;} \\ 0 & \text{otherwise,} \end{cases}</math>
:<math>[P] = \begin{cases} 1 & \text{if } P \text{ is true;} \\ 0 & \text{otherwise,} \end{cases}</math>
where {{math|''P''}} is a statement that can be true or false.
where <math>P</math> is a statement that can be true or false.


In the context of summation, the notation can be used to write any sum as an infinite sum without limits:  
In the context of summation, the notation can be used to write any sum as an infinite sum without limits:  
Line 27: Line 33:
:<math>\prod_kf(k)^{[P(k)]} = \prod_{P(k)}f(k).</math>
:<math>\prod_kf(k)^{[P(k)]} = \prod_{P(k)}f(k).</math>


While the Iverson bracket was adopted into mainstream mathematics, it's use has not been very widespread. Donald Knuth has argued strongly for the its wider use.
While the Iverson bracket was adopted into mainstream mathematics, it's use has not been very widespread. Donald Knuth has argued strongly for its wider use.
 
In APL, the Iverson bracket is implied in all logical propositions, for example <syntaxhighlight lang=apl inline>4≥3</syntaxhighlight> evaluates to <syntaxhighlight lang=apl inline>1</syntaxhighlight> and <syntaxhighlight lang=apl inline>'hello'≡'world'</syntaxhighlight> evaluates to <syntaxhighlight lang=apl inline>0</syntaxhighlight>.
 
== Naming things ==
 
Iverson's work on programming languages sometimes crossed over with his studies of the English language. [[Roger Hui]] recounts that "Ken was deeply interested in words, their use and their etymology. He indeed did read the dictionary, and kept a copy of the [[wikipedia:The American Heritage Dictionary of the English Language|American Heritage Dictionary]] (along with other dictionaries) by his easy chair for ready reference."<ref>[[Roger Hui]]. [https://keiapl.org/rhui/remember.htm Remembering Ken Iverson]. 2004-11.</ref> Iverson also remarked on an interest in etymology among early APLers at [[IBM]].<ref>[[Roger Hui]]. "APL Quotations and Anecdotes", [https://www.jsoftware.com/papers/APLQA.htm#from_everywhere quoting Iverson].</ref> He chose names for APL concepts carefully and sometimes relied on obscure meanings, for example "[[ravel]]" in the sense of unmaking a knitted fabric<ref>[[Gitte Christensen]]. [http://archive.vector.org.uk/art10002270 Ken Iverson in Denmark]. [[Vector Journal]] volume 22 issue 3.</ref> and [[nub]] meaning the essential part. A suggestion of "coadunate representation" regarding [[wikipedia:reference counting|reference counting]] in [[SHARP APL]]<ref>[[Bob Bernecky]]. [https://dl.acm.org/doi/10.1145/390007.805333 Representations for enclosed arrays] at [[APL81]].</ref> was changed to "joint representation" by the time the feature was implemented.<ref>[[Leslie Goldsmith]]. "New Release of SHARP APL". IPSA Newsletter November/December 1982 ([https://www.snakeisland.com/IPSANewsletter_1982_11_12.pdf pdf])</ref> In [[A Dictionary of APL]], Iverson began to describe programming syntax in terms of English grammar, a choice that carried through to [[J]]—implementer Hui shared and encouraged Iverson's interest in English.
 
[[The name APL]] was chosen by [[Adin Falkoff]] and not Iverson, albeit based on his [[A Programming Language]]. However, some of Iverson's names have become accepted in mainstream mathematics or programming, such as "floor" and "ceiling" as mentioned above, and [[reduction]], which may have been named in part for how it reduces the argument's rank by one. It's possible that Iverson coined the term "bubble sort", as A Programming Language is the first publication known to use it.<ref>Owen Astrachan. [https://dl.acm.org/doi/10.1145/792548.611918 Bubble Sort: An Archaeological Algorithmic Analysis] ([https://users.cs.duke.edu/~ola/bubble/bubble.html web]). 2003-01-11.</ref><ref>[[Roger Hui]]. "APL Quotations and Anecdotes", [https://www.jsoftware.com/papers/APLQA.htm#bubble_sort on bubble sort].</ref>
 
== Publications ==
 
=== SHARP APL Technical Notes ===


In APL, the Iverson bracket is implied in all logical propositions, for example <code class="apl">4≥3</code> evaluates to <code class="apl">1</code> and <code class="apl">'hello'≡'world'</code> evaluates to <code class="apl">0</code>.
* SATN-36: [[Direct definition (notation)|Direct Definition]]. 1980-04-20.
* SATN-41: [https://www.jsoftware.com/papers/satn41.htm Composition and Enclosure]. 1981-06-20.
* SATN-42: [https://www.jsoftware.com/papers/satn42.htm Determinant-Like Functions Produced by the Dot-Operator]. 1982-04-01.
* SATN-45: [https://www.jsoftware.com/papers/satn45.htm Language Extensions of May 1983] (with [[Bob Bernecky]], [[Eugene McDonnell]], Robert Metzger, and J. Henri Schueler). 1983-05-02.


== External links ==
== External links ==


* [https://en.wikipedia.org/wiki/Kenneth_E._Iverson Wikipedia]
* [[Wikiquote: Kenneth E. Iverson]]
* [http://keiapl.org/ A Celebration of the life of Kenneth Eugene Iverson] (has many links to writings about Iverson)


{{APL community}}[[Category:People|Iverson]]
== References ==
<references/>
{{APL community}}{{DEFAULTSORT:Iverson, Ken}}[[Category:People]][[Category:Jsoftware employees]][[Category:I.P. Sharp Associates employees]][[Category:Designers]]

Latest revision as of 01:59, 8 March 2024

Ken Iverson in 1989

Kenneth Eugene Iverson (17 December 1920 – 19 October 2004) was a Canadian mathematician and computer scientist, noted for the development of APL. He was honored with the Turing Award in 1979 "for his pioneering effort in programming languages and mathematical notation resulting in what the computing field now knows as APL; for his contributions to the implementation of interactive systems, to educational uses of APL, and to programming language theory and practice".

History

Main article: Kenneth E. Iverson

While teaching mathematics, Iverson developed an alternative mathematical notation and later described, in his book A Programming Language, how this could be used for instructing computers. It was based on this book that Larry Breed and Philip Abrams implemented the first interpreter, and it eventually was named A.P.L. acronymising the book title.

On 17 December 2020, BAA organised an Iverson Centernary event, celebrating the 100th anniversary of Iverson's birth.

Contributions to traditional mathematics

Floor and Ceiling

Carl Friedrich Gauss introduced the square bracket notation in his third proof of quadratic reciprocity (1808). This remained the standard in mathematics until Iverson introduced the names "floor" and "ceiling" and the corresponding notations and in his 1962 book A Programming Language. The names and notations have gained widespread use in mathematics.

Iverson bracket

In mathematics, the Iverson bracket generalises the Kronecker delta. It converts any logical proposition into a number that is 1 if the proposition is satisfied, and 0 otherwise, and is generally written by putting the proposition inside square brackets:

where is a statement that can be true or false.

In the context of summation, the notation can be used to write any sum as an infinite sum without limits: If is any property of the integer ,

Note that by this convention, a summand must evaluate to 0 regardless of whether is defined. Likewise for products:

While the Iverson bracket was adopted into mainstream mathematics, it's use has not been very widespread. Donald Knuth has argued strongly for its wider use.

In APL, the Iverson bracket is implied in all logical propositions, for example 4≥3 evaluates to 1 and 'hello'≡'world' evaluates to 0.

Naming things

Iverson's work on programming languages sometimes crossed over with his studies of the English language. Roger Hui recounts that "Ken was deeply interested in words, their use and their etymology. He indeed did read the dictionary, and kept a copy of the American Heritage Dictionary (along with other dictionaries) by his easy chair for ready reference."[1] Iverson also remarked on an interest in etymology among early APLers at IBM.[2] He chose names for APL concepts carefully and sometimes relied on obscure meanings, for example "ravel" in the sense of unmaking a knitted fabric[3] and nub meaning the essential part. A suggestion of "coadunate representation" regarding reference counting in SHARP APL[4] was changed to "joint representation" by the time the feature was implemented.[5] In A Dictionary of APL, Iverson began to describe programming syntax in terms of English grammar, a choice that carried through to J—implementer Hui shared and encouraged Iverson's interest in English.

The name APL was chosen by Adin Falkoff and not Iverson, albeit based on his A Programming Language. However, some of Iverson's names have become accepted in mainstream mathematics or programming, such as "floor" and "ceiling" as mentioned above, and reduction, which may have been named in part for how it reduces the argument's rank by one. It's possible that Iverson coined the term "bubble sort", as A Programming Language is the first publication known to use it.[6][7]

Publications

SHARP APL Technical Notes

External links

References

  1. Roger Hui. Remembering Ken Iverson. 2004-11.
  2. Roger Hui. "APL Quotations and Anecdotes", quoting Iverson.
  3. Gitte Christensen. Ken Iverson in Denmark. Vector Journal volume 22 issue 3.
  4. Bob Bernecky. Representations for enclosed arrays at APL81.
  5. Leslie Goldsmith. "New Release of SHARP APL". IPSA Newsletter November/December 1982 (pdf)
  6. Owen Astrachan. Bubble Sort: An Archaeological Algorithmic Analysis (web). 2003-01-11.
  7. Roger Hui. "APL Quotations and Anecdotes", on bubble sort.
APL community [edit]
Activities ConferencesUser groups and meetupsIverson AwardExercises
Chat rooms and forums APL FarmAPL OrchardAPL Wiki
People Phil AbramsBrian BeckerBob BerneckyLarry BreedCharles BrennerJim BrownAdám BrudzewskyGitte ChristensenPeter DonnellyJohn EarnestAdin FalkoffGarth FosterLib GibsonAaron HsuRoger HuiKen IversonMorten KrombergDick LathwellMarshall LochbaumEugene McDonnellRoger MooreTrenchard MoreAlan PerlisRaghu RanganathanHenry RichAl RoseJohn ScholesIan SharpBob SmithGeoff StreeterJoey TuttleArthur Whitney
Other APL TrustAPL Quote QuadBlogsBooksCase studiesFamous APL usersHumourJobsMerchandisePapersPodcastsTryAPLTry It OnlineVideo channels