J (programming language)

J
ParadigmArray, functional, object-oriented (class-based, prototype-based), function-level, tacit
Designed byKenneth E. Iverson, Roger Hui
DeveloperJSoftware
First appeared1990; 34 years ago (1990)
Stable release
J9.5 / 20 December 2023; 10 months ago (2023-12-20)[1]
Typing disciplinedynamic
OSCross-platform: Windows, Linux, macOS, Android, iOS, Raspberry Pi[2]
LicenseGPLv3
Websitewww.jsoftware.com
Major implementations
J
Influenced by
APL
Influenced
NumPy,[3] SuperCollider[4]
Preview warning: Page using Template:Infobox programming language with unknown parameter "1 = file ext ..."

The J programming language, developed in the early 1990s by Kenneth E. Iverson and Roger Hui,[5][6] is an array programming language based primarily on APL (also by Iverson).

To avoid repeating the APL special-character problem, J uses only the basic ASCII character set, resorting to the use of the dot and colon as inflections[7] to form short words similar to digraphs. Most such primary (or primitive) J words serve as mathematical symbols, with the dot or colon extending the meaning of the basic characters available. Also, many characters which in other languages often must be paired (such as [] {} "" `` or <>) are treated by J as stand-alone words or, when inflected, as single-character roots of multi-character words.

J is a very terse array programming language, and is most suited to mathematical and statistical programming, especially when performing operations on matrices. It has also been used in extreme programming[8] and network performance analysis.[9]

Like John Backus's languages FP and FL, J supports function-level programming via its tacit programming features.

Unlike most languages that support object-oriented programming, J's flexible hierarchical namespace scheme (where every name exists in a specific locale) can be effectively used as a framework for both class-based and prototype-based object-oriented programming.

Since March 2011, J is free and open-source software under the GNU General Public License version 3 (GPLv3).[10][11][12] One may also purchase source under a negotiated license.[13]

  1. ^ "Release Notes J9.5".
  2. ^ "Jsoftware".
  3. ^ Wes McKinney at 2012 meeting Python for Data Analysis
  4. ^ SuperCollider documentation, Adverbs for Binary Operators
  5. ^ A Personal View of APL, 1991 essay by K.E. Iverson (archived link)
  6. ^ Overview of J history by Roger Hui (19 March 2002)
  7. ^ J NuVoc Words
  8. ^ Bussell, Brian; Taylor, Stephen (2006), "Software Development as a Collaborative Writing Project", Extreme programming and agile processes in software engineering, Oulu, Finland: Springer, pp. 21–31, ISBN 978-3-540-35094-1 {{citation}}: Missing or empty |title= (help)
  9. ^ Holt, Alan (2007), Network Performance Analysis: Using the J Programming Language, Springer, ISBN 978-1-84628-822-7
  10. ^ Jsoftware's source download page
  11. ^ Eric Iverson (1 March 2011). "J Source GPL". J programming mailing list. Archived from the original on 23 September 2016. Retrieved 24 June 2015.
  12. ^ openj on GitHub
  13. ^ Jsoftware's sourcing policy