Dyalog APL: Difference between revisions

Jump to navigation Jump to search
145 bytes added ,  11:27, 21 July 2020
m
no edit summary
(Add history section and change introduction a little)
mNo edit summary
(8 intermediate revisions by 3 users not shown)
Line 7: Line 7:
| released                = 1983
| released                = 1983
| developer                = [[Dyalog Ltd.]]
| developer                = [[Dyalog Ltd.]]
| latest release version  = 17.1 / 2019
| latest release version  = 18.0 / 2020
| implementation languages = [[wikipedia:C (programming language)|C]], [[wikipedia:C++|C++]], APL
| implementation languages = [[wikipedia:C (programming language)|C]], [[wikipedia:C++|C++]], APL
| platforms                = x86, x86_64, IBM POWER, ARM32
| platforms                = x86, x86_64, IBM POWER, ARM32
| operating systems        = Windows, Linux, macOS, AIX
| operating systems        = Windows, Linux, macOS, AIX
| license                  = Free for personal use / Proprietary commercial software
| license                  = Free for personal use / Proprietary commercial software
| website                  = [https://www.dyalog.com/dyalog/index.htm dyalog.com/dyalog/index.htm]
| website                  = [https://www.dyalog.com/dyalog/index.htm dyalog.com]
| download                = [https://www.dyalog.com/download-zone.htm Non-commercial download]
| download                = [https://www.dyalog.com/download-zone.htm Non-commercial download]
| forum                    = [https://forums.dyalog.com/ Dyalog Forums]
| forum                    = [https://forums.dyalog.com/ Dyalog Forums]
Line 21: Line 21:
| run online              = [https://tryapl.org/ TryAPL]
| run online              = [https://tryapl.org/ TryAPL]
}}
}}
:''"Dyalog" redirects here. For the company, see [[Dyalog Ltd.]]''
<!-- :''For the chat bot, see [[APL Orchard#Chat bot]].'' -->
<!-- :''For the chat bot, see [[APL Orchard#Chat bot]].'' -->
'''Dyalog APL''', or simply '''Dyalog''', is a [[Nested array model|nested]] APL based on [[NARS]] and [[APL2]], first released by British company [[Dyalog Ltd.|Dyadic Systems Ltd.]] (now Dyalog Ltd.) in 1983 for the [[wikipedia:Zilog Z8000|Zilog Z8000]] processor (the name ''Dyalog'' is a portmanteau of ''Dyadic'' and ''Zilog''). Continuously developed since, Dyalog has added support for many programming paradigms including [[object-oriented programming]] based on [[.NET]], [[wikipedia:Lisp (programming language)|Lisp]]-style lexically scoped anonymous functions ([[dfn]]s), and [[Leading axis theory|leading axis]] and [[tacit programming]] support based on [[J]]. It supports several platforms and interoperability between them, and interfaces with other languages and runtimes including native [[wikipedia:Shared library|shared libraries]], [[.NET]], the [[wikipedia:Java virtual machine|JVM]], [[wikipedia:R (programming language)|R]], and [[wikipedia:Python (programming language)|Python]].
'''Dyalog APL''', or simply '''Dyalog''', is a [[Nested array model|nested]] APL based on [[NARS]] and [[APL2]], first released by British company [[Dyalog Ltd.|Dyadic Systems Ltd.]] (now Dyalog Ltd.) in 1983 for the [[wikipedia:Zilog Z8000|Zilog Z8000]] processor. (The name ''Dyalog'' is a portmanteau of ''Dyadic'' and ''Zilog''). Continuously developed since, Dyalog has added support for many programming paradigms including [[object-oriented programming]] based on [[.NET]], [[wikipedia:Lisp (programming language)|Lisp]]-style lexically scoped anonymous functions ([[dfn]]s), and [[Leading axis theory|leading axis]] and [[tacit programming]] support based on [[J]]. It supports several platforms and interoperability between them, and interfaces with other languages and runtimes including native [[wikipedia:Shared library|shared libraries]], [[.NET]], the [[wikipedia:Java virtual machine|JVM]], [[wikipedia:R (programming language)|R]], and [[wikipedia:Python (programming language)|Python]].


Although it initially received very little commercial interest, Dyalog has steadily grown in prominence and in the 2010s has been the basis of several new APL dialects including [[ngn/apl]], [[APL\iv]], and [[dzaima/APL]]. Even in APLs not derived from Dyalog such as [[GNU APL]] and [[NARS2000]], [[dfn]]-style function syntax has become common, and Dyalog has also popularised [[SHARP APL]] and [[J]] innovations such as the [[Rank operator]] and [[train]]s among nested APLs.
Although it initially received very little commercial interest, Dyalog has steadily grown in prominence and in the 2010s has been the basis of several new APL dialects including [[ngn/apl]], [[APL\iv]], and [[dzaima/APL]]. Even in APLs not derived from Dyalog such as [[GNU APL]] and [[NARS2000]], [[dfn]]-style function syntax has become common, and Dyalog has also popularised [[SHARP APL]] and [[J]] innovations such as the [[Rank operator]] and [[train]]s among nested APLs.
Line 32: Line 33:
Released at [[APL83]], Dyalog sold very few copies due to the lack of interest in either Unix or the nested array model. Subsequent sales were also limited, with only a single licence sold through Zilog partly due to the Z8000's limited popularity. Supported by Dyadic's APL consulting and later by sales of Unix hardware, Scholes and Streeter continued work on Dyalog by porting it to a wide variety of Unix systems in response to requests from users; in 1995, Scholes was awarded the [[Iverson Award]] jointly with [[Peter Donnelly]] for his work on the Dyalog interpreter. Although it continued to run significant losses every year, Dyalog slowly acquired users during the 1980s, including current client [[wikipedia:SimCorp|SimCorp]]. In 1991, Dyadic hired [[John Daintree]] to begin work on the <source lang=apl inline>⎕WC</source> graphical user interface for [[wikipedia:Microsoft Windows|Microsoft Windows]]; Dyalog for Windows debuted at [[APL92]] and quickly become Dyalog's main platform.<ref name="taylor"/>
Released at [[APL83]], Dyalog sold very few copies due to the lack of interest in either Unix or the nested array model. Subsequent sales were also limited, with only a single licence sold through Zilog partly due to the Z8000's limited popularity. Supported by Dyadic's APL consulting and later by sales of Unix hardware, Scholes and Streeter continued work on Dyalog by porting it to a wide variety of Unix systems in response to requests from users; in 1995, Scholes was awarded the [[Iverson Award]] jointly with [[Peter Donnelly]] for his work on the Dyalog interpreter. Although it continued to run significant losses every year, Dyalog slowly acquired users during the 1980s, including current client [[wikipedia:SimCorp|SimCorp]]. In 1991, Dyadic hired [[John Daintree]] to begin work on the <source lang=apl inline>⎕WC</source> graphical user interface for [[wikipedia:Microsoft Windows|Microsoft Windows]]; Dyalog for Windows debuted at [[APL92]] and quickly become Dyalog's main platform.<ref name="taylor"/>


In 1996, John Scholes introduced a new form of functional definition to Dyalog based on his studies of the functional programming language [[wikipedia:Scheme (programming language)|Scheme]], which he called [[dfn]]s, for "direct functions". Rarely used for many years, dfns have become a common APL feature, with many newer APLs removing traditional [[defined function]]s from the language in favour of dfns. Another major addition to the language began in 2000, when John Daintree was invited to participate in the design of Microsoft's [[.NET]]. Based on this work, and the [[namespace]]s which he had added to the language in 1994, Daintree developed an [[Object-oriented programming|object]] model for Dyalog, which was released in 2006. These efforts also led to the new language initially called Dyalog.NET and later [[APL#]], which was first released in 2010 but abandoned in 2012 when Microsoft deprecated [[wikipedia:Microsoft Silverlight|Silverlight]].
In 1996, John Scholes introduced a new form of functional definition to Dyalog based on his studies of the functional programming language [[wikipedia:Scheme (programming language)|Scheme]], which he called [[dfn]]s, for "direct functions". Rarely used for many years, dfns have become a common APL feature, with many newer APLs removing traditional [[defined function]]s from the language in favour of dfns. Another major addition to the language began in 2000, when John Daintree was invited to participate in the design of Microsoft's [[.NET]]. Based on this work, and the [[namespace]]s which he had added to the language in 1994, Daintree developed an [[Object-oriented programming|object]] model for Dyalog, which was released in 2006. These efforts also led to the new language called [[APL#]], which was first released in 2010 but abandoned in 2012 when Microsoft deprecated [[wikipedia:Microsoft Silverlight|Silverlight]].


In the 2010s, Dyalog development began to focus on performance, which had been improved out of necessity in early releases but had not been a major focus. In 2010 Dyalog Ltd. hired [[Jay Foad]], a compiler developer who initially created a bytecode compiler for APL and later improved performance in other ways, and served as CTO from 2016 until his departure in 2019. In 2011 the company hired [[Roger Hui]], developer of [[J]], and in 2016 it also hired J programmer and language implementor [[Marshall Lochbaum]]. Both developers improved performance of Dyalog's primitives on flat arrays, and brought concepts such as the [[Rank operator]], [[train]]s, and composition operators [[Atop]] and [[Over]] from J to APL.
In the 2010s, Dyalog development began to focus on performance, which had been improved out of necessity in early releases but had not been a major focus. In 2010 Dyalog Ltd. hired [[Jay Foad]], a compiler developer who initially created a bytecode compiler for APL and later improved performance in other ways, and served as CTO from 2016 until his departure in 2019. In 2011 the company hired [[Roger Hui]], developer of [[J]], and in 2016 it also hired J programmer and language implementor [[Marshall Lochbaum]]. Both developers improved performance of Dyalog's primitives on flat arrays, and brought concepts such as the [[Rank operator]], [[train]]s, and composition operators [[Atop]] and [[Over]] from J to APL.
Line 139: Line 140:
| [[Dyalog_APL_versions#17.1|17.1]]  || 2019 || October  || Duplicates in [[Interval Index]] (<source lang=apl inline>⍸</source>) look-up array
| [[Dyalog_APL_versions#17.1|17.1]]  || 2019 || October  || Duplicates in [[Interval Index]] (<source lang=apl inline>⍸</source>) look-up array
|-
|-
| [[Dyalog_APL_versions#18.0|18.0]]  ||colspan=2| Unreleased || [[Atop]] (<source lang=apl inline>⍤</source>), [[Over]] (<source lang=apl inline>⍥</source>), [[Constant]] (<source lang=apl inline>⍨</source>), [[Unique Mask]] (<source lang=apl inline>≠</source>), duplicates from [[Where]] (<source lang=apl inline>⍸</source>), empty partitions from [[Partitioned Enclose]] (<source lang=apl inline>⊂</source>), multi-line session input, date-time conversion, case folding/mapping (<source lang=apl inline>⎕C</source>)
| [[Dyalog_APL_versions#18.0|18.0]]  || 2020 || June      || [[Atop]] (<source lang=apl inline>⍤</source>), [[Over]] (<source lang=apl inline>⍥</source>), [[Constant]] (<source lang=apl inline>⍨</source>), [[Unique Mask]] (<source lang=apl inline>≠</source>), duplicates from [[Where]] (<source lang=apl inline>⍸</source>), empty partitions from [[Partitioned Enclose]] (<source lang=apl inline>⊂</source>), date-time conversion (<source lang=apl inline>⎕DT</source>), case folding/mapping (<source lang=apl inline>⎕C</source>), launching with text source file, [[.NET]] Core support
|}
|}


Line 259: Line 260:
| <source lang=apl inline>⌹</source> || [[Matrix Inverse]]    || [[Matrix Divide]]
| <source lang=apl inline>⌹</source> || [[Matrix Inverse]]    || [[Matrix Divide]]
|-
|-
| <source lang=apl inline>⌷</source> || [[Materialise]]      || [[Squad Indexing]]
| <source lang=apl inline>⌷</source> || [[Materialise]]      || [[Index (function)|Index]]
|}
|}


Line 281: Line 282:
| <source lang=apl inline>A⍨</source>  ||colspan=2| [[Constant]]
| <source lang=apl inline>A⍨</source>  ||colspan=2| [[Constant]]
|-
|-
| <source lang=apl inline>f⍣v</source>  ||colspan=2| [[Power]]
| <source lang=apl inline>f⍣v</source>  ||colspan=2| [[Power (operator)|Power]]
|-
|-
| <source lang=apl inline>f.g</source>  ||                    || [[Inner Product]]
| <source lang=apl inline>f.g</source>  ||                    || [[Inner Product]]
Line 363: Line 364:
* [https://tio.run/#apl-dyalog Try It Online]
* [https://tio.run/#apl-dyalog Try It Online]
* [https://dyalog.com Download]
* [https://dyalog.com Download]
== References ==
<references/>


{{APL dialects}}[[Category:Dyalog APL| ]][[Category:APL dialects]][[Category:Nested array languages]][[Category:Leading axis languages]][[Category:Languages with tacit programming]][[Category:.NET]]
{{APL dialects}}[[Category:Dyalog APL| ]][[Category:APL dialects]][[Category:Nested array languages]][[Category:Leading axis languages]][[Category:Languages with tacit programming]][[Category:.NET]]

Navigation menu