IVSYS/7090: Difference between revisions
(Created page with "{{Infobox array language | array model = flat without boxes | index origin = 1 | function styles = defined function | numeric types = integer, float | unicode support = no | released = 1965 | developer = Larry Breed (IBM), Phil Abrams | implementation language = wikipedia:FORTRAN | platforms = wikipedia:IBM 7090 | ope...") |
m (Text replacement - "Stanford University" to "Stanford University") |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 15: | Line 15: | ||
}} | }} | ||
'''IVSYS/7090''' (for "Iverson System" on the [[wikipedia:IBM 7090|IBM 7090]]) was a proto-APL interpreter in [[wikipedia:FORTRAN|FORTRAN]]. It was implemented by [[Larry Breed]], who worked in [[Ken Iverson]]'s group at [[IBM]]'s [[ | '''IVSYS/7090''' (for "Iverson System" on the [[wikipedia:IBM 7090|IBM 7090]]) was a proto-APL interpreter in [[wikipedia:FORTRAN|FORTRAN]]. It was implemented by [[Larry Breed]], who worked in [[Ken Iverson]]'s group at [[IBM]]'s [[Watson Research Center]], and [[Phil Abrams]], a graduate student at [[Stanford University]]. Running in 1965, the interpreter was the second computer implementation of [[Iverson notation]], after [[PAT]], and is often considered the first APL implementation, as it preceded [[APL\360]].<ref>[[Adin Falkoff]] and [[Ken Iverson]]. [https://www.jsoftware.com/papers/APLDesign.htm The Design of APL]. IBM Journal of Research and Development, Volume 17, Number 4. 1973-07.</ref> However, it had substantial differences from APL as realized in APL\360, for example using the arrows <syntaxhighlight lang=apl inline>↑</syntaxhighlight> and <syntaxhighlight lang=apl inline>↓</syntaxhighlight> for [[Rotate|rotation]] rather than [[Take]] and [[Drop]].<ref>[[Philip Abrams]]. [http://infolab.stanford.edu/TR/CS-TR-66-47.html An interpreter for Iverson notation]. 1966-08-17.</ref> Initially the program had to entered with punch cards, encoding symbols as multiple characters. However, it was soon adapted to run with a typewriter and [[type ball]], and made available within IBM using the Time Sharing Monitor (TSM), an early [[time sharing]] system.<ref>[[Adin Falkoff]] and [[Ken Iverson]]. [https://www.jsoftware.com/papers/APLEvol.htm The Evolution of APL]. ACM SIGPLAN Notices Volume 13, Number 8. 1978-08.</ref> Ken Iverson and [[Adin Falkoff]] were able to use the system in teaching, and [[Eric Iverson]] to prepare an answer book for the problems in Ken's ''Elementary Functions''. IVSYS was only available in this way for a short time, as the TSM project was terminated to make programmers available for a similar project, [[wikipedia:TSS/360|TSS/360]]. The machine IVSYS itself ran on was at some point put on a shipping platform and taken to an unknown destination.<ref>[[Eugene McDonnell]]. [https://www.jsoftware.com/papers/eem/socio1.htm The Socio-Technical Beginnings of APL].</ref> | ||
== Primitives == | |||
Simple unary and binary operators ("sops"), which would be called [[scalar function|scalar]] [[monadic]] and [[dyadic]] [[function]]s in today's [[terminology]]: | |||
{| class=wikitable | |||
! Glyph !! Monadic !! Dyadic | |||
|- | |||
| <syntaxhighlight lang=apl inline>+</syntaxhighlight> || [[Identity]] || [[Addition]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>-</syntaxhighlight> || [[Negate]] || [[Subtraction]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>×</syntaxhighlight> || || [[Multiplication]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>÷</syntaxhighlight> || || [[Division]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>⌊</syntaxhighlight> || [[Floor]] || [[Minimum]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>⌈</syntaxhighlight> || [[Ceiling]] || [[Maximum]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>|</syntaxhighlight> || [[Absolute value]] || [[Modulus]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>*</syntaxhighlight> || [[Exponential]] || [[Exponentiation]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>~</syntaxhighlight> || Complement ([[Not]]) || | |||
|- | |||
| <syntaxhighlight lang=apl inline>∧</syntaxhighlight> || || [[And|Logical AND]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>∨</syntaxhighlight> || || [[Or|Logical OR]] | |||
|- | |||
| <syntaxhighlight lang=apl inline><</syntaxhighlight> || || [[Less than]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>≤</syntaxhighlight> || || [[Less than or Equal to]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>=</syntaxhighlight> || || [[Equal to]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>≠</syntaxhighlight> || || [[Not Equal to]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>≥</syntaxhighlight> || || [[Greater than or Equal to]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>></syntaxhighlight> || || [[Greater than]] | |||
|} | |||
Other operators ("oops"), called [[mixed function]]s in today's terminology: | |||
{| class=wikitable | |||
! Glyph !! Monadic !! Dyadic | |||
|- | |||
| <syntaxhighlight lang=apl inline>⍳</syntaxhighlight> || [[Interval vector]] || Index vector ([[Index of]]) | |||
|- | |||
| <syntaxhighlight lang=apl inline>⍴</syntaxhighlight> || Rank vector ([[Shape]]) || Replication ([[Reshape]]) | |||
|- | |||
| <syntaxhighlight lang=apl inline>,</syntaxhighlight> || [[Ravel]] || [[Catenate]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>↑</syntaxhighlight> || Rotate left 1 || [[Rotate|Left rotation]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>↓</syntaxhighlight> || Rotate right 1 || [[Rotate|Right rotation]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>⍺</syntaxhighlight> || || [[Prefix vector]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>⍵</syntaxhighlight> || || [[Suffix vector]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>∊</syntaxhighlight> || || Characteristic vector ([[Member of]]) | |||
|- | |||
| <syntaxhighlight lang=apl inline>⊥</syntaxhighlight> || Base 2 value || [[Decode|Base value]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>⊤</syntaxhighlight> || || [[Encode|Representation]] | |||
|} | |||
The following primitive operations exist, with syntax as in modern APL, but are not classified as operators. All forms of <syntaxhighlight lang=apl inline>/</syntaxhighlight> and <syntaxhighlight lang=apl inline>\</syntaxhighlight> allow an [[Function axis|axis]] to be specified with brackets. | |||
{| class=wikitable | |||
! Glyph !! Definition | |||
|- | |||
| <syntaxhighlight lang=apl inline>[]</syntaxhighlight> || [[Bracket indexing|Indexing]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>/</syntaxhighlight> || [[Reduction]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>/</syntaxhighlight> || [[Compression]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>\</syntaxhighlight> || [[Expansion]] | |||
|- | |||
| <syntaxhighlight lang=apl inline>.</syntaxhighlight> || Generalized matrix product ([[Inner product]]) | |||
|- | |||
| <syntaxhighlight lang=apl inline>∘.</syntaxhighlight> || [[Outer product]] | |||
|} | |||
== References == | == References == | ||
<references/> | <references/> | ||
{{APL dialects}}[[Category:IBM APL dialects]][[Category:Flat array languages]] | {{APL dialects}}[[Category:IBM APL dialects]][[Category:Flat array languages]] |
Latest revision as of 17:37, 19 March 2024
IVSYS/7090 (for "Iverson System" on the IBM 7090) was a proto-APL interpreter in FORTRAN. It was implemented by Larry Breed, who worked in Ken Iverson's group at IBM's Watson Research Center, and Phil Abrams, a graduate student at Stanford University. Running in 1965, the interpreter was the second computer implementation of Iverson notation, after PAT, and is often considered the first APL implementation, as it preceded APL\360.[1] However, it had substantial differences from APL as realized in APL\360, for example using the arrows ↑
and ↓
for rotation rather than Take and Drop.[2] Initially the program had to entered with punch cards, encoding symbols as multiple characters. However, it was soon adapted to run with a typewriter and type ball, and made available within IBM using the Time Sharing Monitor (TSM), an early time sharing system.[3] Ken Iverson and Adin Falkoff were able to use the system in teaching, and Eric Iverson to prepare an answer book for the problems in Ken's Elementary Functions. IVSYS was only available in this way for a short time, as the TSM project was terminated to make programmers available for a similar project, TSS/360. The machine IVSYS itself ran on was at some point put on a shipping platform and taken to an unknown destination.[4]
Primitives
Simple unary and binary operators ("sops"), which would be called scalar monadic and dyadic functions in today's terminology:
Glyph | Monadic | Dyadic |
---|---|---|
+ |
Identity | Addition |
- |
Negate | Subtraction |
× |
Multiplication | |
÷ |
Division | |
⌊ |
Floor | Minimum |
⌈ |
Ceiling | Maximum |
| |
Absolute value | Modulus |
* |
Exponential | Exponentiation |
~ |
Complement (Not) | |
∧ |
Logical AND | |
∨ |
Logical OR | |
< |
Less than | |
≤ |
Less than or Equal to | |
= |
Equal to | |
≠ |
Not Equal to | |
≥ |
Greater than or Equal to | |
> |
Greater than |
Other operators ("oops"), called mixed functions in today's terminology:
Glyph | Monadic | Dyadic |
---|---|---|
⍳ |
Interval vector | Index vector (Index of) |
⍴ |
Rank vector (Shape) | Replication (Reshape) |
, |
Ravel | Catenate |
↑ |
Rotate left 1 | Left rotation |
↓ |
Rotate right 1 | Right rotation |
⍺ |
Prefix vector | |
⍵ |
Suffix vector | |
∊ |
Characteristic vector (Member of) | |
⊥ |
Base 2 value | Base value |
⊤ |
Representation |
The following primitive operations exist, with syntax as in modern APL, but are not classified as operators. All forms of /
and \
allow an axis to be specified with brackets.
Glyph | Definition |
---|---|
[] |
Indexing |
/ |
Reduction |
/ |
Compression |
\ |
Expansion |
. |
Generalized matrix product (Inner product) |
∘. |
Outer product |
References
- ↑ Adin Falkoff and Ken Iverson. The Design of APL. IBM Journal of Research and Development, Volume 17, Number 4. 1973-07.
- ↑ Philip Abrams. An interpreter for Iverson notation. 1966-08-17.
- ↑ Adin Falkoff and Ken Iverson. The Evolution of APL. ACM SIGPLAN Notices Volume 13, Number 8. 1978-08.
- ↑ Eugene McDonnell. The Socio-Technical Beginnings of APL.
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 |