J: Difference between revisions
mNo edit summary |
No edit summary |
||
Line 23: | Line 23: | ||
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". | 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". | ||
== History == | |||
J was initially designed primarily by [[Ken Iverson]] and [[Roger Hui]], with input from [[Arthur Whitney]] and [[Eric Iverson]]. Ken had been considering a new language based on [[A Dictionary of APL]] but without the backwards compatibility constraints of APL and the custom character set (which was a major technical issue at the time). In "A Personal View of APL"<ref name="personal">[[Ken Iverson|Iverson, K.E.]] [https://www.jsoftware.com/papers/APLPersonalView.htm "A Personal View of APL"]. IBM Systems Journal, Volume 30, Number 4. 1991-12.</ref> he gives the following as the most important goals for a new language: | |||
{{quote| | |||
* Is available as “shareware”, and is inexpensive enough to be acquired by students as well as by schools | |||
* Can be printed on standard printers | |||
* Runs on a wide variety of computers | |||
* Provides the simplicity and the generality of the latest thinking in APL}} | |||
Iverson's phrase "the latest thinking in APL" refers to two major breakthroughs made that decade: the invention of the [[Rank operator]] by [[Arthur Whitney]] in 1982 and subsequent development of [[leading axis theory]], and the invention of [[function train]]s by Iverson and [[Eugene McDonnell]] in 1988. | |||
In the summer of 1989 Whitney visited Iverson, who discussed with Whitney his plans for a new array language. Whitney wrote a one-page prototype for the language in a single afternoon using [[wikipedia:C (programming language)|C]]. Iverson shared the program with [[Roger Hui]], who began working on J on August 27 and quickly produced a more complete prototype.<ref name="personal"/><ref>[[Roger Hui|Hui, Roger]]. [https://code.jsoftware.com/wiki/Essays/Incunabulum "Incunabulum"]. From ''An Implementation of J'', Appendix A: Incunabulum, 1992-01-27.</ref><ref name>McIntyre, Donald. [https://web.archive.org/web/20060410225556/http://elliscave.com/APL_J/rogerhui.htm "A Tribute to Roger Hui, presented at APL96"]. 1996.</ref> The name "J", chosen by Hui when saving the first source code file, is meaningless: in ''An Implementation of J'', Hui remarks "Why 'J'? It is easy to type."<ref>[[Roger Hui|Hui, Roger]]. [https://sblom.github.io/openj-core/ioj.htm ''An Implementation of J''] ([http://www.jsoftware.com/books/pdf/aioj.pdf pdf]), Preface. 1992-01-27.</ref> J was first presented by Hui and Iverson, including a live demo, at a meeting of the Toronto APLSIG in February 1990.<ref name="remembering">[[Roger Hui|Hui, Roger]]. [http://keiapl.org/rhui/remember.htm "Remembering Ken Iverson"]. 2004-11.</ref> | |||
In 1990 Hui and Iverson joined Iverson Software Inc. (now [[Jsoftware]]), which had been founded that year by [[Eric Iverson]] to sell a [[SHARP APL]] product. Eric converted his SHARP [[session]] to use with J as Hui continued on the core language's implementation. The J language, including Eric's session environment, was first released at [[APL90]] in Copenhagen August 1990.<ref name="remembering"/> | |||
== References == | |||
<references /> | |||
{{APL dialects}} | {{APL dialects}} |
Revision as of 03:12, 5 December 2019
The J programming language combines an ASCII encoding of APL as embodied by SHARP APL with functional techniques developed by John Backus for the FP and FL languages. J is characterized by its use of leading axis theory as a foundational design principle and its tacit programming capabilities. Function trains 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 (.
) or colons (:
). It is also notable for its use of terms from English grammar to describe the language. For example, functions are called "verbs" while arrays are called "nouns".
History
J was initially designed primarily by Ken Iverson and Roger Hui, with input from Arthur Whitney and Eric Iverson. Ken had been considering a new language based on A Dictionary of APL but without the backwards compatibility constraints of APL and the custom character set (which was a major technical issue at the time). In "A Personal View of APL"[1] he gives the following as the most important goals for a new language:
- Is available as “shareware”, and is inexpensive enough to be acquired by students as well as by schools
- Can be printed on standard printers
- Runs on a wide variety of computers
- Provides the simplicity and the generality of the latest thinking in APL
Iverson's phrase "the latest thinking in APL" refers to two major breakthroughs made that decade: the invention of the Rank operator by Arthur Whitney in 1982 and subsequent development of leading axis theory, and the invention of function trains by Iverson and Eugene McDonnell in 1988.
In the summer of 1989 Whitney visited Iverson, who discussed with Whitney his plans for a new array language. Whitney wrote a one-page prototype for the language in a single afternoon using C. Iverson shared the program with Roger Hui, who began working on J on August 27 and quickly produced a more complete prototype.[1][2][3] The name "J", chosen by Hui when saving the first source code file, is meaningless: in An Implementation of J, Hui remarks "Why 'J'? It is easy to type."[4] J was first presented by Hui and Iverson, including a live demo, at a meeting of the Toronto APLSIG in February 1990.[5]
In 1990 Hui and Iverson joined Iverson Software Inc. (now Jsoftware), which had been founded that year by Eric Iverson to sell a SHARP APL product. Eric converted his SHARP session to use with J as Hui continued on the core language's implementation. The J language, including Eric's session environment, was first released at APL90 in Copenhagen August 1990.[5]
References
- ↑ 1.0 1.1 Iverson, K.E. "A Personal View of APL". IBM Systems Journal, Volume 30, Number 4. 1991-12.
- ↑ Hui, Roger. "Incunabulum". From An Implementation of J, Appendix A: Incunabulum, 1992-01-27.
- ↑ McIntyre, Donald. "A Tribute to Roger Hui, presented at APL96". 1996.
- ↑ Hui, Roger. An Implementation of J (pdf), Preface. 1992-01-27.
- ↑ 5.0 5.1 Hui, Roger. "Remembering Ken Iverson". 2004-11.
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 |