|
The J programming language, developed in the early 1990s by Ken Iverson and Roger Hui, is a synthesis of APL (also by Iverson) and the FP and FL functional programming languages created by John Backus (of FORTRAN, ALGOL, and BNF fame). Kenneth E. Iverson (17 December 1920, Camrose, Alberta/Canada –October 19, 2004,Toronto, Ontario/Canada) was a computer scientist most notable for developing the APL programming language. ...
Roger Hui was co-developer of the J Programming Language. ...
APL (for A Programming Language, or sometimes Array Processing Language) is an array programming language based on a notation invented in 1957 by Kenneth E. Iverson while at Harvard University. ...
FP (short for Function Programming) is a programming language created by John Backus to support the Function-level programming paradigm. ...
FL (short for Function Level) is a programming language created at the IBM Almaden Research Center by John Backus, John Williams, and Edward Wimmers in 1989. ...
Functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions. ...
John Backus (born December 3, 1924) is an American computer scientist, notable as the inventor of the first high-level programming language (FORTRAN), the Backus-Naur form (BNF, the almost universally used notation to define formal language syntax), and the concept of Function-level programming. ...
Fortran (also FORTRAN) is a computer programming language originally developed in the 1950s; it is still used for scientific computing and numerical computation half a century later. ...
ALGOL (short for ALGOrithmic Language) is a programming language originally developed in the mid 1950s which became the de facto standard way to report algorithms in print for almost the next 30 years. ...
The Backus-Naur form (BNF) (also known as Backus normal form) is a metasyntax used to express context-free grammars: that is, a formal way to describe formal languages. ...
To avoid the problems faced by the special character set of APL, J requires only the basic ASCII character set, resorting to the use of dot and colon characters to extend the meaning of the basic characters available. For other uses, see ASCII (disambiguation). ...
Being an array programming language, J is very terse and powerful, and is often found to be useful for mathematical and statistical programming, especially when performing operations on matrices. Array programming languages (also known as vector or multidimensional languages) generalize operations on scalars to apply transparently to vectors, matrices, and higher dimensional arrays. ...
Mathematics is commonly defined as the study of patterns of structure, change, and space; more informally, one might say it is the study of figures and numbers. Mathematical knowledge is constantly growing, through research and application, but mathematics itself is not usually considered a natural science. ...
For Wikipedia statistics, see m:Statistics Statistics is the science and practice of developing human knowledge through the use of empirical data expressed in quantitative form. ...
In mathematics, a matrix (plural matrices) is a rectangular table of numbers or, more generally, of elements of a ring-like algebraic structure. ...
Like the original FP/FL languages, J supports function-level programming (also known as higher-order functional programming), via its tacit programming features (note that function-level programming is not the same as functional programming). Function-level programming refers to one of the two contrasting programming paradigms identified by John Backus in his work on Programs as mathematical objects, the other being Value-level programming. ...
Unlike most languages that support object-oriented programming, J's flexible hierarchichal namespace scheme (where every name exists in a particular locale) can be effectively used as a framework for both class-based and instance-based object oriented programming. In computer science, object-oriented programming, OOP for short, is a computer programming paradigm. ...
In general, a namespace is an abstract container, which is or could be filled by names, or technical terms, or words, and these represent (stand for) real-world things. ...
Class-based programming, or more commonly class-orientation, refers to the style of object-oriented programming in which inheritance is achieved by defining classes of objects, as opposed to the objects themselves (compare Prototype-based programming). ...
Prototype-based programming is a style and subset of object-oriented programming in which classes are not present, and behaviour reuse (known as inheritance in class-based languages) is accomplished through a process of cloning existing objects which serve as prototypes. ...
Object-oriented programming (OOP) is a computer programming paradigm in which a software system is modeled as a set of objects that interact with each other. ...
J is a non-von Neumann programming language that nevertheless allows the programmer to use von Neumann programming style when desired. The term von Neumann language refers to those programming languages that are high-level abstract isomorphisms of von Neumann architectures. ...
Note that the J programming language is not related to J++ (and its new version J#), a version of Java developed by Microsoft. // Overview Visual J++ (pronounced Jay Plus Plus) is Microsofts now discontinued implementation of the Java programming language. ...
The J# (pronounced J-sharp) programming language is a transitional language for programmers of Suns Java and Microsofts J++ languages, so they may use their existing knowledge, and applications on Microsofts . ...
Java is an object-oriented programming language developed by James Gosling and colleagues at Sun Microsystems in the early 1990s. ...
Examples
J is an extremely powerful language, and its programs can be very terse but even more cryptic. The hello world program in J is To meet Wikipedias quality standards, this article or section may require cleanup. ...
'Hello, world!' This implementation of hello world reflects the traditional use of J -- programs are entered into a J interpreter session, and the results of expressions are displayed. It's also possible to arrange for J scripts to be executed as standalone programs, but the mechanisms for associating a script with the interpreter are system dependent. Here's how this might look on a unix system: #!/bin/jc echo 'Hello, world!' exit '' But many accomplished J programmers never resort to such mechanisms. Here's a J program to calculate the average of a list of numbers: avg =. +/ % # avg 1 2 3 4 2.5 '#' - counts the number of elements in the string. '+/' - adds up all the elements in the string. '%' - divides the sum of the elements by the number of elements. Now let's generate some random numbers and find the average: a =. ?20$100 a 31 16 60 64 64 71 13 3 76 26 25 77 68 48 42 91 99 97 99 9 avg a 53.95 Here is an implementation of quicksort, from the J Dictionary: sel=: adverb def 'x. # [' quicksort=: verb define if. 1 >: #y. do. y. else. (quicksort y. <sel e),(y. =sel e),quicksort y. >sel e=.y.{~?#y. end. ) The following expression (thanks to Roger Hui) computes n digits of pi and demonstrates the extended precision capabilities of J: n=.50 NB. set n as the number of digits required <.@o. 10x^n NB. extended precision 10 to the nth * pi 314159265358979323846264338327950288419716939937510 Also have a look at Cliff Reiter's implementation of Conway's game of life at http://ww2.lafayette.edu/~reiterc/j/vector/vlife_index.html Gospers Glider Gun creating gliders. The Game of Life is a cellular automaton devised by the British mathematician John Horton Conway in 1970. ...
Data Types and Structures J supports three simple types: - Numeric
- Literal (Character)
- Boxed
Of these, numeric has the most variants. One of J's numeric types is the bit. There are two bit values: 0, and 1. Additionally, bits can be formed into lists. For example, 1 0 1 0 1 1 0 0 is a list of eight bits. And, syntactically, the J parser treats that as a single word (space characters are recognized as a word forming character when they're between what would otherwise be numeric words). Lists of arbitrary length are supported. Furthermore, J supports all the usual binary operations on these lists, such as and, or, exclusive or, rotate, shift, not, etc. For example, 1 0 0 1 0 0 1 0 +. 0 1 0 1 1 0 1 0 NB. or 1 1 0 1 1 0 1 0 3 |. 1 0 1 1 0 0 1 1 1 1 1 NB. rotate 1 0 0 1 1 1 1 1 1 0 1 Note that J also supports higher order arrays of bits -- they can be formed into two-dimensional, three-dimensional, etc. arrays. The above operations perform equally well on these arrays. Other numeric types include integer (3, 42), floating point (3.14, 8.8e22), complex (0j1, 2.5j3e88), extended precision integer (12345678901234567890x), and (extended precision) rational fraction (1r2, 3r4). As with bits, these can be formed into lists or arbitrarily dimensioned arrays. As with bits, operations are performed on all numbers in an array. Lists of bits can be converted to integer using the #. verb. Integers can be converted to lists of bits using the #: verb. (And, when parsing J, . and : are word forming characters. They're never tokens by themselves unless preceded by a space.) J also supports the literal (character) type. Literals are enclosed in quotes, for example, 'a' or 'b'. Lists of literals are also supported using the usual convention of putting multiple characters in quotes, such as 'abcdefg'. Typically, individual literals are 8-bits wide (ascii), but J also supports other literals (unicode). Numeric and boolean operations are not supported on literals, but collection oriented operations (such as rotate) are supported. Finally, there's the boxed data type. Typically, data is put in a box using the < operation (without any left argument -- if there's a left argument, this would be the 'less than' operation). This is analogous to C's & operation (without any left argument). However, where the result of C's & has reference semantics, the result of J's < has value semantics. In other words, < is a function and it produces a result. The result has 0 dimensions, regardless of the structure of the contained data. From the viewpoint of a J programmer, < 'puts the data into a box' and lets the programmer work with an array of boxes (it can be assembled with other boxes, and/or additional copies can be made of the box). Boxed data is displayed by J, somewhat after the fashion some SQL interpreters decorate table results from select statements. The C Programming Language, Brian Kernighan and Dennis Ritchie, the original edition that served for many years as an informal specification of the language The C programming language is a general-purpose, procedural, imperative computer programming language developed in the early 1970s by Dennis Ritchie for use on the UNIX...
SQL (commonly expanded to Structured Query Language â see History for the terms derivation) is the most popular computer language used to create, modify and retrieve and manipulate data from relational database management systems. ...
<1 0 0 1 0 +---------+ |1 0 0 1 0| +---------+ The only collection type offered by J is the arbitrarily dimensioned array. Most algorithms can be expressed very concisely using operations on these arrays. J's arrays are homogenously typed, for example the list 1 2 3 is a list of integers despite the fact that 1 is a bit. For the most part, these sorts of type issues are transparent to the programmer. Only certain specialized operations reveal differences in type. For example, the list 1.0 0.0 1.0 0.0 would be treated exactly the same, by most operations, as the list 1 0 1 0. J also supports sparse numeric arrays where non-zero values are stored with their indices. This is an efficient mechanism where relatively few values are non-zero. J also supports objects and classes, but these are an artifact of the way things are named, and are not data types in and of themselves. Instead, boxed literals are used to refer to objects (and classes). J data has value semantics, but objects and classes need reference semantics. Another pseudo-type -- associated with name, rather than value -- is the memory mapped file.
Dictionary J's documentation is organized as a dictionary, with words in J identified as nouns, verbs, adverbs, conjunctions, and so on. Here's an overview (with external links into the corresponding definitions,). Parts of speech are indicated using markup: nouns verbs, and miscellaneous adverbs, and conjunctions. Note that verbs have two forms -- monads (arguments only on the right) and dyads (arguments on the left and on the right). For example, in '-1' the hyphen is a monad, and in '3-2' the hyphen is a dyad. The monad definition is mostly independent of the dyad definition, regardless of whether the verb is a primitive verb or a derived verb.
Vocabulary Constants Controls Foreigns Parts of Speech | = Self-Classify • Equal | =. Is (Local) | =: Is (Global) | | < Box • Less Than | <. Floor • Lesser Of (Min) | <: Decrement • Less Or Equal | | > Open • Larger Than | >. Ceiling • Larger of (Max) | >: Increment • Larger Or Equal | | _ Negative Sign / Infinity | _. Indeterminate | _: Infinity | | | | + Conjugate • Plus | +. Real / Imaginary • GCD (Or) | +: Double • Not-Or | | * Signum • Times | *. Length/Angle • LCM (And) | *: Square • Not-And | | - Negate • Minus | -. Not • Less | -: Halve • Match | | % Reciprocal • Divide | %. Matrix Inverse • Matrix Divide | %: Square Root • Root | | | | ^ Exponential • Power | ^. Natural Log • Logarithm | ^: Power | | $ Shape Of • Shape | $. Sparse | $: Self-Reference | | ~ Reflex • Passive / EVOKE | ~. Nub • | ~: Nub Sieve • Not-Equal | | | Magnitude • Residue | |. Reverse • Rotate (Shift) | |: Transpose | | | | . Determinant • Dot Product | .. Even | .: Odd | | : Explicit / Monad-Dyad | :. Obverse | :: Adverse | | , Ravel • Append | ,. Ravel Items • Stitch | ,: Itemize • Laminate | | ; Raze • Link | ;. Cut | ;: Word Formation • | | | | # Tally • Copy | #. Base 2 • Base | #: Antibase 2 • Antibase | | ! Factorial • Out Of | !. Fit (Customize) | !: Foreign | | / Insert • Table | /. Oblique • Key | /: Grade Up • Sort | | Prefix • Infix | . Suffix • Outfix | : Grade Down • Sort | | | | [ Same • Left | | [: Cap | | ] Same • Right | | | | { Catalogue • From | {. Head • Take | {: Tail • {:: Map • Fetch | | } Item Amend • Amend | }. Behead • Drop | }: Curtail • | | | | " Rank | ". Do • Numbers | ": Default Format • Format | | ` Tie (Gerund) | | `: Evoke Gerund | | @ Atop | @. Agenda | @: At | | & Bond / Compose | &. Under (Dual) | &: Appose | | &.: Under | | ? Roll • Deal | ?. Roll • Deal (fixed seed) | | | | a. Alphabet | a: Ace (Boxed Empty) | A. Anagram Index • Anagram | | b. Boolean / Basic | c. Characteristic Values | C. Cycle-Direct • Permute | | d. Derivative | D. Derivative | D: Secant Slope | | e. Raze In • Member (In) | E. • Member of Interval | f. Fix | | | | H. Hypergeometric | i. Integers • Index Of | i: Integers • Index Of Last | | j. Imaginary • Complex | L. Level Of | L: Level At | | m. n. Explicit Noun Args | NB. Comment | o. Pi Times • Circle Function | | p. Polynomial | p.. Poly. Deriv. • Poly. Integral | p: Primes • | | | | q: Prime Factors • Prime Exponents | r. Angle • Polar | s: Symbol | | S: Spread | t. Taylor Coefficient | t: Weighted Taylor | | T. Taylor Approximation | u. v. Explicit Verb Args | u: Unicode | | x. y. Explicit Arguments | x: Extended Precision | _9: to 9: Constant Functions | The word rank in the J programming language, has several different meanings. ...
See also - Function-level programming
- Related programming languages: APL, FP, FL, K
Function-level programming refers to one of the two contrasting programming paradigms identified by John Backus in his work on Programs as mathematical objects, the other being Value-level programming. ...
APL (for A Programming Language, or sometimes Array Processing Language) is an array programming language based on a notation invented in 1957 by Kenneth E. Iverson while at Harvard University. ...
FP (short for Function Programming) is a programming language created by John Backus to support the Function-level programming paradigm. ...
FL (short for Function Level) is a programming language created at the IBM Almaden Research Center by John Backus, John Williams, and Edward Wimmers in 1989. ...
K is a high level array programming language developed by Arthur Whitney, a very influential member of the APL community. ...
External links - JSoftware- Creators of J (currently free for all uses)
- Cliff Reiter- Chaos, fractals and mathematical symmetries... in J
- Ewart Shaw- Bayesian inference, medical statistics, and numerical methods, using J
- Keith Smillie- Statistical applications of array programming languages, especially J
- John Howland- Research on parallelization of array programming languages, especially J
- J Forum Archives- Discussion of the language
| Major programming languages (more/edit) | | Industrial: ABAP | Ada | AWK | Assembly | C | C++ | C# | COBOL | Common Lisp | ColdFusion | D | Delphi | Eiffel | Fortran | JADE | Java | JavaScript | Lua | Objective-C | Pascal | Perl | PHP | Python | REALbasic | REBOL | RPG | Ruby | SQL | Tcl | Visual Basic | VB.NET | Visual FoxPro There are a lot of kinds of listing. ...
ABAP (Advanced Business Application Programming) is a high level programming language created by the German software company SAP. It is currently positioned as the language for programming SAPs Web Application Server, part of its NetWeaver platform for building business applications. ...
Ada is a structured, statically typed imperative computer programming language designed by a team led by Jean Ichbiah of CII Honeywell Bull during 1977â1983. ...
AWK is a general purpose computer language that is designed for processing text based data, either in files or data streams. ...
It has been suggested that Assembler be merged into this article or section. ...
The C Programming Language, Brian Kernighan and Dennis Ritchie, the original edition that served for many years as an informal specification of the language The C programming language is a general-purpose, procedural, imperative computer programming language developed in the early 1970s by Dennis Ritchie for use on the UNIX...
C++ (generally pronounced see plus plus) is a general-purpose programming language. ...
The title given to this article is incorrect due to technical limitations. ...
COBOL is a third-generation programming language. ...
Common Lisp, commonly abbreviated CL, is a dialect of the Lisp programming language, standardised by ANSI X3. ...
ColdFusion is the original and most common implementation of a tag and ECMAScript-based programming language -- ColdFusion Markup Language (CFML) and CFSCRIPT, respectively -- which is typically used in web application development for the generation of dynamic web pages. ...
D is an object-oriented, imperative systems programming language designed by Walter Bright of Digital Mars as a successor to C++. He has done this by adding some features and reducing the complexity of C++ syntax. ...
Delphi is the primary programming language of Borland Delphi. ...
Eiffel is an object-oriented programming language which emphasizes the production of robust software. ...
Fortran (also FORTRAN) is a computer programming language originally developed in the 1950s; it is still used for scientific computing and numerical computation half a century later. ...
The JADE logo JADE is an object-oriented programming language that exhibits a seamlessly integrated object-oriented database management system. ...
Java is an object-oriented programming language developed by James Gosling and colleagues at Sun Microsystems in the early 1990s. ...
JavaScript is the name of Netscape Communications Corporations implementation of ECMAScript, a scripting programming language based on the concept of prototypes. ...
The Lua (pronounced LOO-ah, or in IPA) programming language is a lightweight, reflective, imperative and procedural language, designed as a scripting language with extensible semantics as a primary goal. ...
Objective-C, often referred to as ObjC or more seldomly as Objective C or Obj-C, is an object oriented programming language implemented as an extension to C. It is used primarily on Mac OS X and GNUstep, two environments based on the OpenStep standard, and is the primary language...
Pascal is an imperative computer programming language, developed in 1970 by Niklaus Wirth as a language particularly suitable for structured programming. ...
Perl, also Practical Extraction and Report Language (a backronym, see below) is a dynamic procedural programming language designed by Larry Wall and first released in 1987. ...
PHP is a scripted programming language that can be used to create websites. ...
Python is an interpreted programming language created by Guido van Rossum in 1990. ...
This article or section does not cite its references or sources. ...
REBOL, the Relative Expression Based Object Language (pronounced [rebl]), is a data exchange and programming language designed specifically for network communications and distributed computing. ...
RPG is a native programming language for IBMs iSeries servers - the latest generation of midrange servers which included System/38, System/36, AS/400, iSeries and System i5 systems. ...
Ruby is a reflective, object-oriented programming language. ...
SQL (commonly expanded to Structured Query Language â see History for the terms derivation) is the most popular computer language used to create, modify and retrieve and manipulate data from relational database management systems. ...
// Tcl (originally from Tool Command Language, but nonetheless conventionally rendered as Tcl rather than TCL; and pronounced like tickle) is a scripting language created by John Ousterhout. ...
The four colored boxes is the logo of VBA, and the two drums above them symbolize database connectivity Visual Basic (VB) is an event driven programming language and associated development environment prototyped by Alan Cooper as Project Ruby, then bought and vastly improved upon by Microsoft. ...
Visual Basic . ...
Visual FoxPro is a data-centric object-oriented and procedural programming language produced by Microsoft. ...
| Academic: APL / J | OCaml | Haskell | Scheme | Smalltalk | Logo | MATLAB | Mathematica | ML | Prolog APL (for A Programming Language, or sometimes Array Processing Language) is an array programming language based on a notation invented in 1957 by Kenneth E. Iverson while at Harvard University. ...
Objective Caml (OCaml) is a general-purpose programming language descended from the ML family, created by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy and others in 1996. ...
Haskell is a standardized pure functional programming language with non-strict semantics named after the logician Haskell Curry. ...
Scheme is a functional programming language and a dialect of Lisp. ...
Smalltalk is an object-oriented, dynamically typed, reflective, programming language designed at Xerox PARC by Alan Kay, Dan Ingalls, Ted Kaehler, Adele Goldberg, and others during the 1970s, influenced by Sketchpad and Simula. ...
The Logo programming language is an imperative programming language. ...
MATLAB is a numerical computing environment and programming language. ...
This article is about computer software. ...
ML is a general-purpose functional programming language developed by Robin Milner and others in the late 1970s at the University of Edinburgh, whose syntax is inspired by ISWIM. Historically, ML stands for metalanguage as it was conceived to develop proof tactics in the LCF theorem prover (the language of...
Prolog is a logic programming language. ...
| | Other: ALGOL | BASIC | Clipper | Forth | Limbo | Modula-2/Modula-3 | MUMPS | PL/I | Simula ALGOL (short for ALGOrithmic Language) is a family of imperative computer programming languages originally developed in the mid 1950s which became the de facto standard way to report algorithms in print for almost the next 30 years. ...
Basic may be: Look up basic in Wiktionary, the free dictionary. ...
Clipper is a computer programming language that is used to create software programs that originally operated primarily under DOS. Although it is a powerful general-purpose programming language, it was primarily used to create database/business programs. ...
Forth is a programming language and programming environment. ...
Limbo is a programming language for writing distributed systems and is the language used to write applications for the Inferno operating system. ...
Modula-2 is a computer programming language invented by Niklaus Wirth at ETH around 1978, as a successor to Modula, another language by him. ...
Modula-3 is a programming language conceived as a successor to an upgraded version of Modula-2. ...
PL/I (Programming Language One, pronounced pee el one) is an imperative computer programming language designed for scientific, engineering, and business applications. ...
Simula is a programming language developed in the 1960s at the Norwegian Computing Centre in Oslo, by Ole-Johan Dahl and Kristen Nygaard. ...
| | |