J: Difference between revisions

Jump to navigation Jump to search
210 bytes added ,  18:10, 5 December 2019
Get rid of FP and FL mentions since they weren't a significant influence
No edit summary
(Get rid of FP and FL mentions since they weren't a significant influence)
Line 9: Line 9:
| developer              = [[Jsoftware]] ([[Kenneth E. Iverson]], [[Roger Hui]])
| developer              = [[Jsoftware]] ([[Kenneth E. Iverson]], [[Roger Hui]])
| latest release version = J807 / 2018-10-08
| latest release version = J807 / 2018-10-08
| influenced by          = [[SHARP APL]], [[Rationalized APL]], [[wikipedia:FP (programming language)|FP]], [[wikipedia:FL (programming language)|FL]]
| influenced by          = [[SHARP APL]], [[Rationalized APL]]
| influenced            = [[Dyalog APL]], [[NARS2000]], [[I]]
| influenced            = [[Dyalog APL]], [[NARS2000]], [[I]]
| implementation language= [[wikipedia:C (programming language)|C]]
| implementation language= [[wikipedia:C (programming language)|C]]
Line 21: Line 21:
}}
}}


The '''J''' programming language combines an ASCII encoding of APL as embodied by [[SHARP APL]] with functional techniques developed by [[John Backus]] for the [[wikipedia:FP (programming language)|FP]] and [[wikipedia:FL (programming language)|FL]] languages. J is characterized by its use of [[leading axis theory]] as a foundational design principle and its [[tacit programming]] capabilities. [[Function train]]s are a key J feature and were later adopted by [[Dyalog APL]]. J's primitives consist of 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".


== History ==
== History ==

Navigation menu