APL\360: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{Infobox array language | {{Infobox array language | ||
| 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 | | index origin = <source lang=apl inline>)ORIGIN</source> 0 or 1 (later <source lang=apl inline>⎕IO</source>) | ||
| 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 10: | Line 10: | ||
| withdrawn = 2012 | | withdrawn = 2012 | ||
| implementation languages = [[wikipedia:IBM_Basic_Assembly_Language_and_successors|BAL]] | | implementation languages = [[wikipedia:IBM_Basic_Assembly_Language_and_successors|BAL]] | ||
| platforms = S/360–z/Architecture | | platforms = S/360–z/Architecture, IBM 5100+ | ||
| 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 | ||
Line 16: | Line 16: | ||
| source = [https://computerhistory.org/blogs/apl360-software-license-agreement/ Computer History Museum] | | 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 Norbert Kehrer] | |||
| influenced by = [[Iverson notation]] | | influenced by = [[Iverson notation]] | ||
| influenced = [[ISO 8485:1989]], [[ISO/IEC 13751:2001]], [[APLSV]], [[APL*PLUS]], [[J]] | | influenced = [[ISO 8485:1989]], [[ISO/IEC 13751:2001]], [[APLSV]], [[APL*PLUS]], [[J]] | ||
Line 22: | Line 23: | ||
'''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''' 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. | |||
Significant developments to APL\360 included CMS/APL, which made use of the virtual storage capabilities of CMS and [[APLSV]], which introduced shared variables, system variables and system functions. It was subsequently ported to the IBM System/370 and VSPC platforms until its final release in 1983, after which it was replaced by [[APL2]]. | Significant developments to APL\360 included CMS/APL, which made use of the virtual storage capabilities of CMS and [[APLSV]], which introduced shared variables, system variables and system functions. It was subsequently ported to the IBM System/370 and VSPC platforms until its final release in 1983, after which it was replaced by [[APL2]]. | ||
[[File:IBM 5110.jpg|thumb|right|IBM 5110]] | |||
== Implementation == | == Implementation == | ||
Line 151: | Line 152: | ||
| <source lang=apl inline>[]</source> || Monadic ||colspan=2| [[Function axis|Axis]] | | <source lang=apl inline>[]</source> || Monadic ||colspan=2| [[Function axis|Axis]] | ||
|} | |} | ||
=== External links === | |||
* Bitsavers: [http://www.bitsavers.org/pdf/ibm/apl/ APL | |||
* Norbert Kehrer: [http://members.aon.at/nkehrer/ibm_5110/emu5110.html IBM 5110 Emulator] | |||
* Bitsavers: [http://www.bitsavers.org/pdf/ibm/5110/ IBM 5110] | |||
{{APL dialects}} | {{APL dialects}} |
Revision as of 21:27, 29 January 2020
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.
Significant developments to APL\360 included CMS/APL, which made use of the virtual storage capabilities of CMS and APLSV, which introduced shared variables, system variables and system functions. It was subsequently ported to the IBM System/370 and VSPC platforms until its final release in 1983, after which it was replaced by APL2.
Implementation
Internal types
APL\360 uses four element types for arrays, three numeric and one character:
- 1-bit packed Boolean
- 4-byte integer
- 8-byte floating point
- 1-byte character
Primitives
Functions
Glyph | Monadic | Dyadic |
---|---|---|
+ |
Conjugate | Plus |
- |
Negative | Minus |
× |
Signum | Times |
÷ |
Reciprocal | Divide |
| |
Magnitude | Residue |
⌊ |
Floor | Minimum |
⌈ |
Ceiling | Maximum |
? |
Roll | Deal |
* |
Exponential | Power |
⍟ |
Natural logarithm | General logarithm |
○ |
Pi times | Circular, hyperbolic, and pythagorean functions |
! |
Factorial | Binomial |
~ |
Not | Without |
∧ |
And | |
∨ |
Or | |
⍲ |
Nand | |
⍱ |
Nor | |
< |
Less | |
≤ |
Not greater | |
= |
Equal | |
≥ |
Not less | |
> |
Greater | |
≠ |
Not equal | |
⍴ |
Shape of | Reshape |
, |
Ravel | Catenate, Laminate (allows axis) |
⌽ |
Reverse (allows axis) |
Rotate (allows axis) |
⊖
| ||
⍉ |
Transpose | |
↑ |
Take | |
↓ |
Drop | |
/ |
Compress (allows axis) | |
⌿ |
||
\ |
Expand (allows axis) | |
⍀ |
||
[] |
Indexing | |
⍳ |
Index generator | Index of |
∊ |
Membership | |
⍋ |
Grade up | |
⍒ |
Grade down | |
⌹ |
Matrix inverse | Matrix division |
⊥ |
Decode | |
⊤ |
Encode | |
⍎ |
Execute | |
⍕ |
Monadic format | Dyadic format |
Operators
Glyph | Valence | Monadic call | Dyadic call |
---|---|---|---|
/ |
Monadic | Reduction (allows axis) |
|
⌿ |
Monadic | ||
\ |
Monadic | Scan (allows axis) |
|
⍀ |
Monadic | ||
. |
Dyadic | Inner product | |
∘. |
Monadic | Outer product | |
[] |
Monadic | Axis |
External links
- Bitsavers: [http://www.bitsavers.org/pdf/ibm/apl/ APL
- Norbert Kehrer: IBM 5110 Emulator
- Bitsavers: IBM 5110
APL dialects [edit] | |
---|---|
Maintained | APL+Win ∙ APL2 ∙ APL64 ∙ APL\iv ∙ Aplette ∙ April ∙ Co-dfns ∙ Dyalog APL ∙ Dyalog APL Vision ∙ dzaima/APL ∙ GNU APL ∙ Kap ∙ NARS2000 ∙ Pometo ∙ TinyAPL |
Historical | A Programming Language ∙ A+ (A) ∙ APL# ∙ APL2C ∙ APL\360 ∙ APL/700 ∙ APL\1130 ∙ APL\3000 ∙ APL.68000 ∙ APL*PLUS ∙ APL.jl ∙ APL.SV ∙ APLX ∙ Extended Dyalog APL ∙ Iverson notation ∙ IVSYS/7090 ∙ NARS ∙ ngn/apl ∙ openAPL ∙ Operators and Functions ∙ PAT ∙ Rowan ∙ SAX ∙ SHARP APL ∙ Rationalized APL ∙ VisualAPL (APLNext) ∙ VS APL ∙ York APL |
Derivatives | AHPL ∙ BQN ∙ CoSy ∙ ELI ∙ Glee ∙ I ∙ Ivy ∙ J ∙ Jelly ∙ K (Goal, Klong, Q) ∙ KamilaLisp ∙ Lang5 ∙ Lil ∙ Nial ∙ RAD ∙ Uiua |
Overviews | Comparison of APL dialects ∙ Timeline of array languages ∙ Timeline of influential array languages ∙ Family tree of array languages |