APL2: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
Miraheze>Adám Brudzewsky
m (Text replacement - "</code>" to "</source>")
(→‎Log-on APL: Condense)
 
(26 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Infobox array language
{{Infobox array language
| logo                    = [[File:Apl2cube.png]]
| array model            = [[nested array model|nested]]
| array model            = [[nested array model|nested]]
| index origin            = 0 or 1
| index origin            = 0 or 1
| function styles        = [[tradfn]]
| function styles        = [[Defined function|defined]]
| numeric types          = complex floats
| numeric types          = [[complex]] floats
| unicode support        = no
| unicode support        = no
| released               = 1984
| released               = 1984
| developer             = [[IBM]]
| developer               = [[IBM]], Log-On Software
| latest release version = 2.2.26 / 2019
| latest release version = 3.03 / 2022
| platforms              = IBM mainframes, x86, x86_64, IBM POWER
| platforms              = IBM mainframes, x86, x86_64, IBM POWER
| operating systems      = z/OS, z/VM, AIX, Linux, Solaris, Windows
| operating systems      = z/OS, z/VM, AIX, Linux, Solaris, Windows
| license               = Free time-limited demo / Proprietary commercial software
| license                 = Free time-limited demo / Proprietary commercial software
| website               = [https://www.ibm.com/us-en/marketplace/apl2 IBM Marketplace]
| website                 = [https://www.ibm.com/us-en/marketplace/apl2 IBM Marketplace]
| download               = [https://www.ibm.com/account/reg/us-en/signup?formid=urx-32206 APL2 for Multiplatforms]
| download               = [https://www.ibm.com/account/reg/us-en/signup?formid=urx-32206 APL2 for Multiplatforms]
| file ext               = .apl
| file ext               = .apl
| documentation         = [https://www-01.ibm.com/common/ssi/apilite?infotype=PM%20OR%20SA&lastdays=4055&appname=apl2&doctype=PL2GNRLI%20or%20PL2MFRAM%20or%20PL2WRKST IBM APL2 Literature]
| documentation           = [https://www.ibm.com/common/ssi/SearchResult.wss?MPPEFSCH=APL2 IBM Offering Information]
| influenced by         = [[VSAPL]]
| influenced by           = [[APL.SV]]
| influenced             = [[NARS2000]], [[Dyalog APL]], [[GNU APL]], [[APLX]], [[ISO/IEC 13751:2001]]
| influenced             = [[NARS2000]], [[Dyalog APL]], [[GNU APL]], [[APLX]], [[ISO/IEC 13751:2001]]
}}
}}
'''APL2''' was a significant re-implementation of APL by [[IBM]] which was developed from 1971 and first released in 1984. It provides many additions to the language, of which the most notable is nested (non-rectangular) array support. As of 2018 it is available for mainframe computers running z/OS or z/VM and workstations running AIX, Linux, Sun Solaris, and Microsoft Windows.
'''APL2''' is the family of APL implementations using the [[nested array model]], first released by [[IBM]] in 1984. The name stands in contrast to "APL1", which is taken to include all prior IBM APLs such as [[APL\360]], [[APL.SV]], and [[VS APL]]. Development was led by [[Jim Brown]], who began work in 1971 based on his just-published Ph.D. thesis.<ref name=brown>[[Jim Brown]]. [https://old.aplwiki.com/JimBrown APL Wiki user page]</ref> In addition to nested arrays and primitives to support them such as [[Depth]] and [[Enlist]], APL2 includes new primitives such as [[Find]] and [[Index]], and [[stranded assignment|stranded]] and [[selective assignment]]. APL2 was available for mainframe computers running z/OS or z/VM and workstations running AIX, Linux, Sun Solaris, and Microsoft Windows.


APL2's extensions to [[ISO 8485:1989]] were standardised as [[ISO-IEC-13751]]. APL2 supports entry of complex numbers in the following forms:
APL2's extensions to [[ISO 8485:1989]] formed the basis of [[ISO/IEC 13751:2001]]. APL2 supports entry of [[complex number]]s in the following forms:
# Real and imaginary part separated by the letter <source lang=apl inline>J</source> and no spaces, e.g. <source lang=apl inline>0J1</source>
# Real and imaginary part separated by the letter <syntaxhighlight lang=apl inline>J</syntaxhighlight> and no spaces, e.g. <syntaxhighlight lang=apl inline>0J1</syntaxhighlight>
# Magnitude and angle in degrees separated by the letter <source lang=apl inline>D</source> and no spaces, e.g. <source lang=apl inline>1D90</source>
# Magnitude and angle in degrees separated by the letter <syntaxhighlight lang=apl inline>D</syntaxhighlight> and no spaces, e.g. <syntaxhighlight lang=apl inline>1D90</syntaxhighlight>
# Magnitude and angle in radians separated by the letter <source lang=apl inline>R</source> and no spaces, e.g. <source lang=apl inline>1R1.5708</source>
# Magnitude and angle in radians separated by the letter <syntaxhighlight lang=apl inline>R</syntaxhighlight> and no spaces, e.g. <syntaxhighlight lang=apl inline>1R1.5708</syntaxhighlight>
No further core language features have been added, but it feature a number of powerful [[Quad names]].
No further core language features have been added, with improvements instead consisting of powerful [[Quad name]]s.


The entire APL2 Products and Services Team was awarded the [[Iverson Award]] in 2007.
== History ==


{{APL programming language}}
APL2's development was directed by [[Jim Brown]], who wrote the first lines of the yet-to-be-named product in 1971.<ref name=brown/> At this time Brown had worked in various roles at IBM, and just completed his Ph.D. at [[Syracuse]], with a thesis "A Generalization of APL"<ref>[[Jim Brown]]. [http://www.softwarepreservation.org/projects/apl/Books/AGENERALIZATIONOFAPL "A Generalization of APL"]. 1971.</ref> on the topic of [[nested array model|nested]] APL. While his work was informed by discussions with [[Trenchard More]] and others at [[Watson Research Center]], he had not been allowed access to internal IBM papers on nested arrays, on the grounds that the thesis might leak their content. After completing the thesis, Brown learned the details of More's "Array Theory", particularly [[prototype]]s, and adopted them as the eventual model for APL2.<ref name=origins>[[Jim Brown]]. [https://dl.acm.org/doi/abs/10.1145/190271.190277 The Origins of APL2] at [[APL94]].</ref> Brown also adopted More's generalization of [[strand notation]] allowing the elements to be any arrays, not just numbers.
 
IBM released a prototype for APL2, called the Installed User Program (IUP), in 1982. [[STSC]] had made its own experimental nested system, [[NARS]], public just the previous year. [[Dyalog APL]] had just entered development (although it would not be considered an important implementation until the 1990s); based both on NARS and IBM publications,<ref>Stephen Taylor. [http://archive.vector.org.uk/art10013790 "How we got here"]. [[Vector journal]] Volume 23 special supplement "Dyalog at 25". 2008-09.</ref> it was released before the final APL2. The IUP used flat versions of [[Outer Product]], [[Inner Product]], and [[Reduction]] because of the advocacy of [[Adin Falkoff]] and [[Ken Iverson]] (Iverson left IBM for [[IPSA]] in 1980). Due to general user experience and a personal visit by NARS development manager [[Bob Smith]], Brown changed them back to the nested definitions used now before finalizing APL2.<ref name=origins/>
 
{{quote|The APL2 IUP was released as an experimental product so that the APL community could take part in the language design. I was amazed that we got such a product through the IBM bureaucracy and doing so was largely due to the efforts of Karen Riley and Ed Altman, the first two lines of management. I don't consider the experiment a success because people immediately went into production with the IUP making further changes painful. We nevertheless made any change that we felt made the notation more correct, more complete, or more usable.|—[[Jim Brown]]<ref name=origins/>}}
 
APL2 was released in 1984, and was the subject of several presentations at the [[APL84]] conference. Because of IBM's stature, it was often considered the authoritative nested APL; later, it would serve as the primary (but not only) influence on the Extended APL standard [[ISO/IEC 13751:2001]]. In 1987, APL2 became the first major dialect to implement [[namespace]]s. Jim Brown was awarded the [[Iverson Award]] in 1993, and the entire APL2 Products and Services Team was the recipient in 2007.
 
=== Log-on APL ===
 
In January 2021, IBM announced that it would discontinue offering and supporting APL2 as a product;<ref>[[IBM]]. [https://www-01.ibm.com/common/ssi/ShowDoc.wss?docURL=/common/ssi/rep_ca/6/877/ENUSZP21-0096/index.html&request_locale=en Software withdrawal and support discontinuance: IBM APL2, IBM APL2 Application Environment, and IBM Workstation APL2 for Multiplatforms]. IBM Europe Withdrawal Announcement ZP21-0096. January 26, 2021.</ref> in its place the compatible Log-On APL2 would be be distributed by American-Israeli business partner Log-On Software, with initial release scheduled for April 2021.<ref>Mark Schora. [https://log-on.com/2021/01/26/log-on-software-announces-log-on-apl2/ Log-On Software Announces Log-On APL2]. Log-On Press Releases. Jan 26, 2021.</ref> Log-On stated in November that they had been able to build APL2 from IBM's sources and begun testing, with plans to get community and user feedback for desired features and publish re-branded documentation.<ref>Werner Zülli. ''Log-On APL2: Plans and Questions''. GSE Herbsttagung 2021. [[APL Germany]].</ref> In 2022 Log-On announced the general availability of APL2 version 3.03 for workstations, which introduced support for HTTPS websites and Windows 11.<ref>Mark Neeman (Log-On Software Director Products Sales). ''Log-On APL2 GA v. 3.03''. Email to the APL2 community. Apr 19, 2022.</ref>
 
== References ==
<references/>
{{APL dialects}}[[Category:IBM APL dialects]][[Category:Nested array languages]]

Latest revision as of 00:11, 10 April 2024

APL2 is the family of APL implementations using the nested array model, first released by IBM in 1984. The name stands in contrast to "APL1", which is taken to include all prior IBM APLs such as APL\360, APL.SV, and VS APL. Development was led by Jim Brown, who began work in 1971 based on his just-published Ph.D. thesis.[1] In addition to nested arrays and primitives to support them such as Depth and Enlist, APL2 includes new primitives such as Find and Index, and stranded and selective assignment. APL2 was available for mainframe computers running z/OS or z/VM and workstations running AIX, Linux, Sun Solaris, and Microsoft Windows.

APL2's extensions to ISO 8485:1989 formed the basis of ISO/IEC 13751:2001. APL2 supports entry of complex numbers in the following forms:

  1. Real and imaginary part separated by the letter J and no spaces, e.g. 0J1
  2. Magnitude and angle in degrees separated by the letter D and no spaces, e.g. 1D90
  3. Magnitude and angle in radians separated by the letter R and no spaces, e.g. 1R1.5708

No further core language features have been added, with improvements instead consisting of powerful Quad names.

History

APL2's development was directed by Jim Brown, who wrote the first lines of the yet-to-be-named product in 1971.[1] At this time Brown had worked in various roles at IBM, and just completed his Ph.D. at Syracuse, with a thesis "A Generalization of APL"[2] on the topic of nested APL. While his work was informed by discussions with Trenchard More and others at Watson Research Center, he had not been allowed access to internal IBM papers on nested arrays, on the grounds that the thesis might leak their content. After completing the thesis, Brown learned the details of More's "Array Theory", particularly prototypes, and adopted them as the eventual model for APL2.[3] Brown also adopted More's generalization of strand notation allowing the elements to be any arrays, not just numbers.

IBM released a prototype for APL2, called the Installed User Program (IUP), in 1982. STSC had made its own experimental nested system, NARS, public just the previous year. Dyalog APL had just entered development (although it would not be considered an important implementation until the 1990s); based both on NARS and IBM publications,[4] it was released before the final APL2. The IUP used flat versions of Outer Product, Inner Product, and Reduction because of the advocacy of Adin Falkoff and Ken Iverson (Iverson left IBM for IPSA in 1980). Due to general user experience and a personal visit by NARS development manager Bob Smith, Brown changed them back to the nested definitions used now before finalizing APL2.[3]

The APL2 IUP was released as an experimental product so that the APL community could take part in the language design. I was amazed that we got such a product through the IBM bureaucracy and doing so was largely due to the efforts of Karen Riley and Ed Altman, the first two lines of management. I don't consider the experiment a success because people immediately went into production with the IUP making further changes painful. We nevertheless made any change that we felt made the notation more correct, more complete, or more usable.

Jim Brown[3]

APL2 was released in 1984, and was the subject of several presentations at the APL84 conference. Because of IBM's stature, it was often considered the authoritative nested APL; later, it would serve as the primary (but not only) influence on the Extended APL standard ISO/IEC 13751:2001. In 1987, APL2 became the first major dialect to implement namespaces. Jim Brown was awarded the Iverson Award in 1993, and the entire APL2 Products and Services Team was the recipient in 2007.

Log-on APL

In January 2021, IBM announced that it would discontinue offering and supporting APL2 as a product;[5] in its place the compatible Log-On APL2 would be be distributed by American-Israeli business partner Log-On Software, with initial release scheduled for April 2021.[6] Log-On stated in November that they had been able to build APL2 from IBM's sources and begun testing, with plans to get community and user feedback for desired features and publish re-branded documentation.[7] In 2022 Log-On announced the general availability of APL2 version 3.03 for workstations, which introduced support for HTTPS websites and Windows 11.[8]

References

  1. 1.0 1.1 Jim Brown. APL Wiki user page
  2. Jim Brown. "A Generalization of APL". 1971.
  3. 3.0 3.1 3.2 Jim Brown. The Origins of APL2 at APL94.
  4. Stephen Taylor. "How we got here". Vector journal Volume 23 special supplement "Dyalog at 25". 2008-09.
  5. IBM. Software withdrawal and support discontinuance: IBM APL2, IBM APL2 Application Environment, and IBM Workstation APL2 for Multiplatforms. IBM Europe Withdrawal Announcement ZP21-0096. January 26, 2021.
  6. Mark Schora. Log-On Software Announces Log-On APL2. Log-On Press Releases. Jan 26, 2021.
  7. Werner Zülli. Log-On APL2: Plans and Questions. GSE Herbsttagung 2021. APL Germany.
  8. Mark Neeman (Log-On Software Director Products Sales). Log-On APL2 GA v. 3.03. Email to the APL2 community. Apr 19, 2022.
APL dialects [edit]
Maintained APL+WinAPL2APL64APL\ivApletteAprilCo-dfnsDyalog APLDyalog APL Visiondzaima/APLGNU APLKapNARS2000PometoTinyAPL
Historical A Programming LanguageA+ (A) ∙ APL#APL2CAPL\360APL/700APL\1130APL\3000APL.68000APL*PLUSAPL.jlAPL.SVAPLXExtended Dyalog APLIverson notationIVSYS/7090NARSngn/aplopenAPLOperators and FunctionsPATRowanSAXSHARP APLRationalized APLVisualAPL (APLNext) ∙ VS APLYork APL
Derivatives AHPLBQNCoSyELIGleeIIvyJJellyK (Goal, Klong, Q) ∙ KamilaLispLang5LilNialRADUiua
Overviews Comparison of APL dialectsTimeline of array languagesTimeline of influential array languagesFamily tree of array languages