J: Difference between revisions

Jump to navigation Jump to search
737 bytes added ,  21 June
no edit summary
(Remove "Also on Wikipedia" template since the message is not appropriate here)
No edit summary
(21 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Infobox array language
{{Infobox array language
| logo                  = [[File:Jblue.png]]
| file ext              = .ijs
| file ext              = .ijs
| array model            = [[Flat array model|flat]] with [[Box|boxes]]
| array model            = [[Flat array model|flat]] with [[Box|boxes]]
| index origin          = 0
| index origin          = 0
| function styles        = explicit, [[tacit]]
| function styles        = [[Anonymous function|explicit]], [[tacit]]
| numeric types          = 64-bit integer, complex float, [[extended integer]], [[rational]]
| numeric types          = 64-bit integer, [[complex]] float, [[extended integer]], [[rational]]
| unicode support        = full; distinct byte and code point types
| unicode support        = full; distinct byte and code point types
| released              = 1990
| released              = 1990
| developer              = [[Jsoftware]] ([[Ken Iverson]], [[Roger Hui]])
| developer              = [[Jsoftware]] ([[Ken Iverson]], [[Roger Hui]])
| latest release version = J901 / 2019-12-15
| latest release version = j903 / 2021-12-17
| influenced by          = [[SHARP APL]], [[Rationalized APL]], [[A+]]
| influenced by          = [[SAX]], [[Rationalized APL]]
| influenced            = [[Dyalog APL]], [[NARS2000]], [[I]]
| influenced            = [[Dyalog APL]], [[NARS2000]], [[I]], [[BQN]]
| implementation language= [[wikipedia:C (programming language)|C]]
| implementation language= [[wikipedia:C (programming language)|C]]
| source                = [https://github.com/jsoftware/jsource/tree/master/jsrc GitHub]
| source                = [https://github.com/jsoftware/jsource GitHub]
| platforms              = x86, x86_64
| platforms              = x86, x86_64
| operating systems      = Windows, Linux, macOS
| operating systems      = Windows, Linux, macOS
| license                = [[wikipedia:GNU General Public License|GPLv3]]
| license                = [[wikipedia:GNU General Public License|GPLv3]]
| website                = [https://www.jsoftware.com/ www.jsoftware.com]
| website                = [https://www.jsoftware.com/ www.jsoftware.com]
| forum                  = [https://code.jsoftware.com/wiki/System/Forums multiple]
| download              = [https://code.jsoftware.com/wiki/System/Installation System/Installation]
| download              = [https://code.jsoftware.com/wiki/System/Installation System/Installation]
| documentation          = [https://www.jsoftware.com/help/dictionary/contents.htm Dictionary], [https://code.jsoftware.com/wiki/NuVoc NuVoc]
| documentation          = [https://www.jsoftware.com/help/dictionary/contents.htm Dictionary], [https://code.jsoftware.com/wiki/NuVoc NuVoc]
| run online            = [https://tio.run/#j TIO]
| run online            = [https://joebo.github.io/j-emscripten/ Emscripten], [https://jsoftware.github.io/j-playground/bin/html/ J playground]
}}
}}
'''J''' is an array language loosely following the [[SHARP APL]] tradition which uses [[wikipedia:ASCII|ASCII]] characters for primitive functionality and builds in [[leading axis theory]] and [[tacit programming]] as foundational design principles. J discards backwards compatibility with older APLs in order to simplify and regularize its syntax, redesign primitives to work on leading axes, and disentangle [[reduction]] from [[scan]]s and [[windowed reduction]]s (yielding the [[Prefix operator|prefix]] and [[infix operator]]s). However, J concepts such as [[function train]]s and the [[Indices]] function have been adopted by later APLs such as [[NARS2000]], [[Dyalog APL]], and [[dzaima/APL]]. J breaks the APL convention of writing primitives with a single glyph: instead, they are spelled with a single ASCII character possibly followed by one or two periods (<source lang=j inline>.</source>) or colons (<source lang=j inline>:</source>). It is also notable for its use of terms from English grammar to describe the language. For example, [[function]]s are called "verbs" while arrays are called "nouns".
'''J''' is an array language loosely following the [[SHARP APL]] tradition which uses [[wikipedia:ASCII|ASCII]] characters for primitive functionality and builds in [[leading axis theory]] and [[tacit programming]] as foundational design principles. J discards backwards compatibility with older APLs in order to simplify and regularize its syntax, redesign primitives to work on leading axes, and disentangle [[reduction]] from [[scan]]s and [[windowed reduction]]s (yielding the [[Prefix operator|prefix]] and [[infix operator]]s). However, J concepts such as [[function train]]s and the [[Indices]] function have been adopted by later APLs such as [[NARS2000]], [[Dyalog APL]], and [[dzaima/APL]]. J breaks the APL convention of writing primitives with a single glyph: instead, they are spelled with a single ASCII character possibly followed by one or two periods (<source lang=j inline>.</source>) or colons (<source lang=j inline>:</source>). It is also notable for its use of terms from English grammar to describe the language. For example, [[function]]s are called "verbs" while arrays are called "nouns".
Line 77: Line 79:
| 6.0  || 1992-10-24 || Error handling with <source lang=j inline>::</source>, additional [[system function]]s
| 6.0  || 1992-10-24 || Error handling with <source lang=j inline>::</source>, additional [[system function]]s
|-
|-
| 6.1  || 1992-11-26 || Amend operator <source lang=j inline>}</source>
| 6.1  || 1992-11-26 || [[Amend]] operator <source lang=j inline>}</source>
|-
|-
| 6.2  || 1992-12-20 || Derivative operator <source lang=j inline>D.</source>
| 6.2  || 1992-12-20 || Derivative operator <source lang=j inline>D.</source>
Line 119: Line 121:
| 4.06 || 2001-05-09 || <source lang=j inline>assert.</source> and <source lang=j inline>throw.</source>, Symbols (<source lang=j inline>s:</source>) and Unicode (<source lang=j inline>u:</source>), multiple axes in [[Cut]] operator
| 4.06 || 2001-05-09 || <source lang=j inline>assert.</source> and <source lang=j inline>throw.</source>, Symbols (<source lang=j inline>s:</source>) and Unicode (<source lang=j inline>u:</source>), multiple axes in [[Cut]] operator
|-
|-
| 5.01 || 2002-09-10 || Non-[[Close compositions|close]] [[Under]] <source lang=j inline>&.:</source>, Bitwise Operations (<source lang=j inline>b.</source>), Polynomial Derivative (<source lang=j inline>p..</source>), Head (<source lang=j inline>{.</source>) and Tail (<source lang=j inline>{:</source>) allow [[empty]] arguments
| 5.01 || 2002-09-10 || Non-[[Close composition|close]] [[Under]] <source lang=j inline>&.:</source>, Bitwise Operations (<source lang=j inline>b.</source>), Polynomial Derivative (<source lang=j inline>p..</source>), Head (<source lang=j inline>{.</source>) and Tail (<source lang=j inline>{:</source>) allow [[empty]] arguments
|-
|-
| 5.02 || 2003-05-21 ||
| 5.02 || 2003-05-21 ||
Line 150: Line 152:
|-
|-
| 9.01 || 2019-12-15 || Iteration primitives <source lang=j inline>F..</source>, <source lang=j inline>F.:</source>, <source lang=j inline>F.</source>, <source lang=j inline>F:.</source>, <source lang=j inline>F::</source>, <source lang=j inline>F:</source>; Remove calculus operators <source lang=j inline>d.</source>, <source lang=j inline>D.</source>, <source lang=j inline>D:</source>, <source lang=j inline>t.</source>, <source lang=j inline>t:</source>, <source lang=j inline>T.</source>, <source lang=j inline>..</source>, <source lang=j inline>.:</source>; <source lang=j inline>gerund"r</source>
| 9.01 || 2019-12-15 || Iteration primitives <source lang=j inline>F..</source>, <source lang=j inline>F.:</source>, <source lang=j inline>F.</source>, <source lang=j inline>F:.</source>, <source lang=j inline>F::</source>, <source lang=j inline>F:</source>; Remove calculus operators <source lang=j inline>d.</source>, <source lang=j inline>D.</source>, <source lang=j inline>D:</source>, <source lang=j inline>t.</source>, <source lang=j inline>t:</source>, <source lang=j inline>T.</source>, <source lang=j inline>..</source>, <source lang=j inline>.:</source>; <source lang=j inline>gerund"r</source>
|-
| 9.02 || 2020-12-13 || "Direct definition" syntax for explicit functions, special semidual form <source lang=j inline>u&.:(a:`v)</source> added, minor incompatible changes
|-
| 9.03 || 2021-12-17 || Modifier trains and other combinations, foreigns to enable nameref caching, Kahan summation with <source lang=j inline>+/!.0</source>
|}
|}


Line 155: Line 161:


<references />
<references />
{{APL dialects}}
{{APL dialects}}[[Category:Array languages]][[Category:Flat array languages]][[Category:Leading axis languages]][[Category:Languages with tacit programming]][[Category:ASCII languages]]

Navigation menu