APL\360: Difference between revisions

Jump to navigation Jump to search
1,112 bytes added ,  08:29, 25 October 2022
no edit summary
m (Text replacement - "implementation languages" to "implementation language ")
No edit summary
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Infobox array language
{{DISPLAYTITLE:''APL''\360}}{{Infobox array language
| title                    = ''APL''\360
| array model              = [[flat array model|flat]] without [[box|boxes]]
| array model              = [[flat array model|flat]] without [[box|boxes]]
| index origin            = <source lang=apl inline>)ORIGIN</source> 0 or 1 (later <source lang=apl inline>⎕IO</source>)
| index origin            = <syntaxhighlight lang=apl inline>)ORIGIN</syntaxhighlight> 0 or 1 (later <syntaxhighlight lang=apl inline>⎕IO</syntaxhighlight>)
| function styles          = [[defined function]]
| function styles          = [[defined function]]
| numeric types            = floats (64-bit [[wikipedia:IBM_hexadecimal_floating_point|HFP]])
| numeric types            = floats (64-bit [[wikipedia:IBM_hexadecimal_floating_point|HFP]])
Line 13: Line 14:
| operating systems        = DOS/360–z/OS
| operating systems        = DOS/360–z/OS
| license                  = Free for non-commercial use / Open source commercial software
| license                  = Free for non-commercial use / Open source commercial software
| website                  = [https://computerhistory.org/blog/the-apl-programming-language-source-code/ Computer History Museum]
| source                  = [https://computerhistory.org/blog/the-apl-programming-language-source-code/ Computer History Museum] ([https://computerhistory.org/blogs/apl360-software-license-agreement/ license and download])
| source                  = [https://computerhistory.org/blogs/apl360-software-license-agreement/ Computer History Museum]
| documentation            = [https://www.jsoftware.com/papers/APL360TerminalSystem.htm ''The APL\360 Terminal System'']
| documentation            = [https://www.jsoftware.com/papers/APL360TerminalSystem.htm ''The APL\360 Terminal System'']
| run online              = [http://members.aon.at/nkehrer/ibm_5110/emu5110.html IBM 5110 emulator]
| run online              = [https://norbertkehrer.github.io/ibm_5110/emu5110.html IBM 5110 emulator]
| influenced by            = [[Iverson notation]]
| influenced by            = [[Iverson notation]]
| influenced              = [[ISO 8485:1989]], [[ISO/IEC 13751:2001]], [[APL.SV]], [[APL*PLUS]], [[J]]
| influenced              = [[ISO 8485:1989]], [[ISO/IEC 13751:2001]], [[APL.SV]], [[APL*PLUS]], [[J]]
}}
}}


'''APL\360''' was the first implementation of APL using recognizable APL symbols. It ran on the [[IBM]] System/360, and was completed in November 1966 though at that time remained in use only within IBM. In 1973 its implementers, [[Larry Breed]], Dick Lathwell and [[Roger Moore]], were awarded the Grace Murray Hopper Award from the Association for Computing Machinery (ACM). It was given "for their work in the design and implementation of APL\360, setting new standards in simplicity, efficiency, reliability and response time for interactive systems."
'''APL\360''' (stylised as '''''APL''\360''') was the first implementation of APL using recognizable APL symbols. It ran on the [[IBM]] System/360, and was completed in November 1966 though at that time remained in use only within IBM. In 1973 its implementers, [[Larry Breed]], Dick Lathwell and [[Roger Moore]], were awarded the Grace Murray Hopper Award from the Association for Computing Machinery (ACM). It was given "for their work in the design and implementation of APL\360, setting new standards in simplicity, efficiency, reliability and response time for interactive systems."


Beginning in 1975, the IBM 5100 line of microcomputers offered APL\360 as one of two built-in ROM-based interpreted languages for the computer, complete with a keyboard and display that supported all the special symbols used in the language.
Beginning in 1975, the IBM 5100 line of microcomputers offered APL\360 as one of two built-in ROM-based interpreted languages for the computer, complete with a keyboard and display that supported all the special symbols used in the language.
Line 52: Line 52:
! Glyph                              !! Monadic              !! Dyadic
! Glyph                              !! Monadic              !! Dyadic
|-
|-
| <source lang=apl inline>+</source> || [[Conjugate]]        || [[Plus]]
| <syntaxhighlight lang=apl inline>+</syntaxhighlight> || [[Conjugate]]        || [[Plus]]
|-
|-
| <source lang=apl inline>-</source> || [[Negate|Negative]]  || [[Subtract|Minus]]
| <syntaxhighlight lang=apl inline>-</syntaxhighlight> || [[Negate|Negative]]  || [[Subtract|Minus]]
|-
|-
| <source lang=apl inline>×</source> || [[Signum]]            || [[Times]]
| <syntaxhighlight lang=apl inline>×</syntaxhighlight> || [[Signum]]            || [[Times]]
|-
|-
| <source lang=apl inline>÷</source> || [[Reciprocal]]        || [[Divide]]
| <syntaxhighlight lang=apl inline>÷</syntaxhighlight> || [[Reciprocal]]        || [[Divide]]
|-
|-
| <source lang=apl inline>⌈</source> || [[Ceiling]]          || [[Maximum]]
| <syntaxhighlight lang=apl inline>⌈</syntaxhighlight> || [[Ceiling]]          || [[Maximum]]
|-
|-
| <source lang=apl inline>⌊</source> || [[Floor]]            || [[Minimum]]
| <syntaxhighlight lang=apl inline>⌊</syntaxhighlight> || [[Floor]]            || [[Minimum]]
|-
|-
| <source lang=apl inline>*</source> || [[Exponential]]      || [[Power]]
| <syntaxhighlight lang=apl inline>*</syntaxhighlight> || [[Exponential]]      || [[Power]]
|-
|-
| <source lang=apl inline>⍟</source> || [[Natural logarithm]] || [[Logarithm]]
| <syntaxhighlight lang=apl inline>⍟</syntaxhighlight> || [[Natural logarithm]] || [[Logarithm]]
|-
|-
| <source lang=apl inline>|</source> || [[Magnitude]]        || [[Residue]]
| <syntaxhighlight lang=apl inline>|</syntaxhighlight> || [[Magnitude]]        || [[Residue]]
|-
|-
| <source lang=apl inline>?</source> || [[Roll]]              || [[Deal]]
| <syntaxhighlight lang=apl inline>?</syntaxhighlight> || [[Roll]]              || [[Deal]]
|-
|-
| <source lang=apl inline>○</source> || [[Pi times]]          || [[Circle function|Circular]]
| <syntaxhighlight lang=apl inline>○</syntaxhighlight> || [[Pi times]]          || [[Circle function|Circular]]
|-
|-
| <source lang=apl inline>!</source> || [[Factorial]]        || [[Binomial coefficient]]
| <syntaxhighlight lang=apl inline>!</syntaxhighlight> || [[Factorial]]        || [[Binomial coefficient]]
|-
|-
| <source lang=apl inline>~</source> || [[Not]]              ||
| <syntaxhighlight lang=apl inline>~</syntaxhighlight> || [[Not]]              ||
|-
|-
| <source lang=apl inline>∧</source> ||                      || [[And]]
| <syntaxhighlight lang=apl inline>∧</syntaxhighlight> ||                      || [[And]]
|-
|-
| <source lang=apl inline>∨</source> ||                      || [[Or]]
| <syntaxhighlight lang=apl inline>∨</syntaxhighlight> ||                      || [[Or]]
|-
|-
| <source lang=apl inline>⍲</source> ||                      || [[Nand]]
| <syntaxhighlight lang=apl inline>⍲</syntaxhighlight> ||                      || [[Nand]]
|-
|-
| <source lang=apl inline>⍱</source> ||                      || [[Nor]]
| <syntaxhighlight lang=apl inline>⍱</syntaxhighlight> ||                      || [[Nor]]
|-
|-
| <source lang=apl inline><</source> ||                      || [[Less]]
| <syntaxhighlight lang=apl inline><</syntaxhighlight> ||                      || [[Less]]
|-
|-
| <source lang=apl inline>≤</source> ||                      || [[Not greater]]
| <syntaxhighlight lang=apl inline>≤</syntaxhighlight> ||                      || [[Not greater]]
|-
|-
| <source lang=apl inline>=</source> ||                      || [[Equal]]
| <syntaxhighlight lang=apl inline>=</syntaxhighlight> ||                      || [[Equal]]
|-
|-
| <source lang=apl inline>≥</source> ||                      || [[Not less]]
| <syntaxhighlight lang=apl inline>≥</syntaxhighlight> ||                      || [[Not less]]
|-
|-
| <source lang=apl inline>></source> ||                      || [[Greater]]
| <syntaxhighlight lang=apl inline>></syntaxhighlight> ||                      || [[Greater]]
|-
|-
| <source lang=apl inline>≠</source> ||                      || [[Not equal]]
| <syntaxhighlight lang=apl inline>≠</syntaxhighlight> ||                      || [[Not equal]]
|-
|-
| <source lang=apl inline>⍴</source> || [[Shape|Size]]        || [[Reshape]]
| <syntaxhighlight lang=apl inline>⍴</syntaxhighlight> || [[Shape|Size]]        || [[Reshape]]
|-
|-
| <source lang=apl inline>,</source> || [[Ravel]]            || [[Catenate]]
| <syntaxhighlight lang=apl inline>,</syntaxhighlight> || [[Ravel]]            || [[Catenate]]
|-
|-
| <source lang=apl inline>[]</source>||                      || [[Bracket indexing|Indexing]]
| <syntaxhighlight lang=apl inline>[]</syntaxhighlight>||                      || [[Bracket indexing|Indexing]]
|-
|-
| <source lang=apl inline>⍳</source> || [[Index generator]]  || [[Index of]]
| <syntaxhighlight lang=apl inline>⍳</syntaxhighlight> || [[Index generator]]  || [[Index of]]
|-
|-
| <source lang=apl inline>↑</source> ||                      || [[Take]]
| <syntaxhighlight lang=apl inline>↑</syntaxhighlight> ||                      || [[Take]]
|-
|-
| <source lang=apl inline>↓</source> ||                      || [[Drop]]
| <syntaxhighlight lang=apl inline>↓</syntaxhighlight> ||                      || [[Drop]]
|-
|-
| <source lang=apl inline>⍋</source> || [[Grade up]]  (allows axis) ||
| <syntaxhighlight lang=apl inline>⍋</syntaxhighlight> || [[Grade up]]  (allows axis) ||
|-
|-
| <source lang=apl inline>⍒</source> || [[Grade down]] (allows axis) ||
| <syntaxhighlight lang=apl inline>⍒</syntaxhighlight> || [[Grade down]] (allows axis) ||
|-
|-
| <source lang=apl inline>/</source> ||                      ||rowspan=2| [[Compress]]<br>(allows axis)
| <syntaxhighlight lang=apl inline>/</syntaxhighlight> ||                      ||rowspan=2| [[Compress]]<br>(allows axis)
|-
|-
| <source lang=apl inline>⌿</source> ||
| <syntaxhighlight lang=apl inline>⌿</syntaxhighlight> ||
|-
|-
| <source lang=apl inline>\</source> ||                      ||rowspan=2| [[Expand]]<br>(allows axis)
| <syntaxhighlight lang=apl inline>\</syntaxhighlight> ||                      ||rowspan=2| [[Expand]]<br>(allows axis)
|-
|-
| <source lang=apl inline>⍀</source> ||
| <syntaxhighlight lang=apl inline>⍀</syntaxhighlight> ||
|-
|-
| <source lang=apl inline>⌽</source> ||rowspan=2| [[Reverse]]<br>(allows axis) ||rowspan=2| [[Rotate]]<br>(allows axis)
| <syntaxhighlight lang=apl inline>⌽</syntaxhighlight> ||rowspan=2| [[Reverse]]<br>(allows axis) ||rowspan=2| [[Rotate]]<br>(allows axis)
|-
|-
| <source lang=apl inline>⊖</source>
| <syntaxhighlight lang=apl inline>⊖</syntaxhighlight>
|-
|-
| <source lang=apl inline>⍉</source> ||colspan=2| [[Transpose]]
| <syntaxhighlight lang=apl inline>⍉</syntaxhighlight> ||colspan=2| [[Transpose]]
|-
|-
| <source lang=apl inline>∊</source> ||                      || [[Membership]]
| <syntaxhighlight lang=apl inline>∊</syntaxhighlight> ||                      || [[Membership]]
|-
|-
| <source lang=apl inline>⊥</source> ||                      || [[Decode]]
| <syntaxhighlight lang=apl inline>⊥</syntaxhighlight> ||                      || [[Decode]]
|-
|-
| <source lang=apl inline>⊤</source> ||                      || [[Encode]]
| <syntaxhighlight lang=apl inline>⊤</syntaxhighlight> ||                      || [[Encode]]
|}
|}


Line 142: Line 142:
! Glyph                              !! Valence !! Monadic call            !! Dyadic call
! Glyph                              !! Valence !! Monadic call            !! Dyadic call
|-
|-
| <source lang=apl inline>/</source>  || Monadic ||rowspan=2| [[Reduction]]<br>(allows axis) ||
| <syntaxhighlight lang=apl inline>/</syntaxhighlight>  || Monadic ||rowspan=2| [[Reduction]]<br>(allows axis) ||
|-
|-
| <source lang=apl inline>⌿</source>  || Monadic ||
| <syntaxhighlight lang=apl inline>⌿</syntaxhighlight>  || Monadic ||
|-
|-
| <source lang=apl inline>.</source>  || Dyadic  ||                        || [[Inner product]]
| <syntaxhighlight lang=apl inline>.</syntaxhighlight>  || Dyadic  ||                        || [[Inner product]]
|-
|-
| <source lang=apl inline>∘.</source> || Monadic ||                        || [[Outer product]]
| <syntaxhighlight lang=apl inline>∘.</syntaxhighlight> || Monadic ||                        || [[Outer product]]
|-
|-
| <source lang=apl inline>[]</source> || Monadic ||colspan=2| [[Function axis|Axis]]
| <syntaxhighlight lang=apl inline>[]</syntaxhighlight> || Monadic ||colspan=2| [[Function axis|Axis]]
|}
|}


Line 158: Line 158:
== External links ==
== External links ==
* Bitsavers: [http://www.bitsavers.org/pdf/ibm/apl/ APL]
* Bitsavers: [http://www.bitsavers.org/pdf/ibm/apl/ APL]
* Norbert Kehrer: [http://members.aon.at/nkehrer/ibm_5110/emu5110.html IBM 5110 Emulator]
* Norbert Kehrer: [http://web.archive.org/web/20201111235017/http://members.aon.at/nkehrer/ibm_5110/emu5110.html IBM 5110 Emulator]
* Bitsavers: [http://www.bitsavers.org/pdf/ibm/5110/ IBM 5110]
* Bitsavers: [http://www.bitsavers.org/pdf/ibm/5110/ IBM 5110]
* Jamie Raymond: [https://www.youtube.com/playlist?list=PLLonoeGbb9ol-SBD5SosK13k85s3Z8780 APL\360] ― a 2021 7-part video tutorial
{{APL dialects}}[[Category:IBM APL dialects]][[Category:Flat array languages]]
{{APL dialects}}[[Category:IBM APL dialects]][[Category:Flat array languages]]

Navigation menu