4,577
edits
m (Links to complex numbers) |
No edit summary |
||
(19 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 = | | latest release version = j903 / 2021-12-17 | ||
| influenced by = [[ | | 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 | | 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:// | | 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 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]] |