J: Difference between revisions

Jump to navigation Jump to search
2,980 bytes added ,  03:12, 5 December 2019
no edit summary
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}}

Navigation menu