Misplaced Pages

APL (programming language)

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.

APL (named after the book A Programming Language ) is a programming language developed in the 1960s by Kenneth E. Iverson . Its central datatype is the multidimensional array . It uses a large range of special graphic symbols to represent most functions and operators, leading to very concise code. It has been an important influence on the development of concept modeling, spreadsheets , functional programming , and computer math packages. It has also inspired several other programming languages.

#459540

75-477: A mathematical notation for manipulating arrays was developed by Kenneth E. Iverson , starting in 1957 at Harvard University . In 1960, he began work for IBM where he developed this notation with Adin Falkoff and published it in his book A Programming Language in 1962. The preface states its premise: Applied mathematics is largely concerned with the design and analysis of explicit procedures for calculating

150-549: A and b denote unspecified numbers. It is believed that a notation to represent numbers was first developed at least 50,000 years ago. Early mathematical ideas such as finger counting have also been represented by collections of rocks, sticks, bone, clay, stone, wood carvings, and knotted ropes. The tally stick is a way of counting dating back to the Upper Paleolithic . Perhaps the oldest known mathematical texts are those of ancient Sumer . The Census Quipu of

225-909: A logical operation that is equivalent to the negation of the conjunction operation, expressed in ordinary language as "not both". It is also called non-conjunction , or alternative denial (since it says in effect that at least one of its operands is false), or NAND ("not and"). In digital electronics , it corresponds to the NAND gate . It is named after Henry Maurice Sheffer and written as ∣ {\displaystyle \mid } or as ↑ {\displaystyle \uparrow } or as ∧ ¯ {\displaystyle {\overline {\wedge }}} or as D p q {\displaystyle Dpq} in Polish notation by Łukasiewicz (but not as ||, often used to represent disjunction ). Its dual

300-444: A combination of a few symbols. All primitives are defined to have the same precedence , and always associate to the right. Thus, APL is read or best understood from right-to-left . Early APL implementations ( c.  1970 or so) had no programming loop control flow structures, such as do or while loops, and if-then-else constructs. Instead, they used array operations, and use of structured programming constructs

375-470: A draft of the chapter A Programming Language , written for a book he was writing with Fred Brooks , Automatic Data Processing , which would be published in 1963. In 1979, Iverson received the Turing Award for his work on APL. As early as 1962, the first attempt to use the notation to describe a complete computer system happened after Falkoff discussed with William C. Carter his work to standardize

450-473: A function for repeated use rather than rewriting it each time. Further, since assignment is an operator, it can appear within an expression, so the following would place suitable values into T, AV and SD: Mathematical notation Mathematical notation consists of using symbols for representing operations , unspecified numbers , relations , and any other mathematical objects and assembling them into expressions and formulas . Mathematical notation

525-461: A new version of the APL language that contained as its primary enhancement the concept of nested arrays , where an array can contain other arrays, and new language features which facilitated integrating nested arrays into program workflow. Ken Iverson, no longer in control of the development of the APL language, left IBM and joined I. P. Sharp Associates , where one of his major contributions was directing

600-551: A part of the notation was called Personalized Array Translator (PAT). In 1963, Falkoff, Iverson, and Edward H. Sussenguth Jr. , all working at IBM, used the notation for a formal description of the IBM System/360 series machine architecture and functionality, which resulted in a paper published in IBM Systems Journal in 1964. After this was published, the team turned their attention to an implementation of

675-445: A particular area of mathematics. Some notations are named after their inventors, such as Leibniz's notation , Legendre symbol , Einstein's summation convention , etc. General typesetting systems are generally not well suited for mathematical notation. One of the reasons is that, in mathematical notation, the symbols are often arranged in two-dimensional figures, such as in: TeX is a mathematically oriented typesetting system that

750-688: A selling point for those products. IBM cites its use for problem solving, system design, prototyping, engineering and scientific computations, expert systems, for teaching mathematics and other subjects, visualization and database access. Various implementations of APL by APLX, Dyalog, et al., include extensions for object-oriented programming , support for .NET , XML-array conversion primitives, graphing, operating system interfaces, and lambda calculus expressions. Freeware versions include GNU APL for Linux and NARS2000 for Windows (which also runs on Linux under Wine). Both of these are fairly complete versions of APL2 with various language extensions. APL has formed

825-846: A sentence. Letters are typically used for naming—in mathematical jargon , one says representing — mathematical objects . The Latin and Greek alphabets are used extensively, but a few letters of other alphabets are also used sporadically, such as the Hebrew ⁠ ℵ {\displaystyle \aleph } ⁠ , Cyrillic Ш , and Hiragana よ . Uppercase and lowercase letters are considered as different symbols. For Latin alphabet, different typefaces also provide different symbols. For example, r , R , R , R , r , {\displaystyle r,R,\mathbb {R} ,{\mathcal {R}},{\mathfrak {r}},} and R {\displaystyle {\mathfrak {R}}} could theoretically appear in

SECTION 10

#1732780033460

900-498: A set of non- ASCII symbols, which are an extension of traditional arithmetic and algebraic notation. Having single character names for single instruction, multiple data ( SIMD ) vector functions is one way that APL enables compact formulation of algorithms for data transformation such as computing Conway's Game of Life in one line of code. In nearly all versions of APL, it is theoretically possible to express any computable function in one expression, that is, in one line of code. Due to

975-467: A special sign for it. It was Jean Nicod who first used the stroke as a sign for non-conjunction (NAND) in a paper of 1917 and which has since become current practice. Russell and Whitehead used the Sheffer stroke in the 1927 second edition of Principia Mathematica and suggested it as a replacement for the "OR" and "NOT" operations of the first edition. Charles Sanders Peirce (1880) had discovered

1050-464: A standard formulation thereof by Huntington employing the familiar operators of propositional logic ( AND , OR , NOT ). Because of self- duality of Boolean algebras, Sheffer's axioms are equally valid for either of the NAND or NOR operations in place of the stroke. Sheffer interpreted the stroke as a sign for nondisjunction ( NOR ) in his paper, mentioning non-conjunction only in a footnote and without

1125-409: Is a functionally complete set of connectives. This can be seen from the fact that NAND does not possess any of the following five properties, each of which is required to be absent from, and the absence of all of which is sufficient for, at least one member of a set of functionally complete operators: truth-preservation, falsity-preservation, linearity , monotonicity , self-duality . (An operator

1200-442: Is a logical operation on two logical values . It produces a value of true, if — and only if — at least one of the propositions is false. The truth table of A ↑ B {\displaystyle A\uparrow B} is as follows. The Sheffer stroke of P {\displaystyle P} and Q {\displaystyle Q} is the negation of their conjunction By De Morgan's laws , this

1275-450: Is a dyadic operator, the term to its left is required as well. It is surrounded by parentheses since otherwise X would be taken (so that the summation would be of X÷⍴X —each element of X divided by the number of elements in X), and +/X gives the sum of the elements of X. Building on this, the following expression computes standard deviation : Naturally, one would define this expression as

1350-462: Is a finite combination of symbols that is well-formed according to rules that depend on the context. In general, an expression denotes or names a mathematical object , and plays therefore in the language of mathematics the role of a noun phrase in the natural language. An expression contains often some operators , and may therefore be evaluated by the action of the operators in it. For example, 3 + 2 {\displaystyle 3+2}

1425-553: Is also equivalent to the disjunction of the negations of P {\displaystyle P} and Q {\displaystyle Q} Peirce was the first to show the functional completeness of non-conjunction (representing this as ⋏ ¯ {\displaystyle {\overline {\curlywedge }}} ) but didn't publish his result. Peirce's editor added ⋏ ¯ {\displaystyle {\overline {\curlywedge }}} ) for non-disjunction . In 1911, Stamm

1500-482: Is an expression in which the operator + {\displaystyle +} can be evaluated for giving the result 5. {\displaystyle 5.} So, 3 + 2 {\displaystyle 3+2} and 5 {\displaystyle 5} are two different expressions that represent the same number. This is the meaning of the equality 3 + 2 = 5. {\displaystyle 3+2=5.} A more complicated example

1575-625: Is based mostly on the Arabic alphabet and is used widely in the Arab world , especially in pre- tertiary education . (Western notation uses Arabic numerals , but the Arabic notation also replaces Latin letters and related symbols with Arabic script.) In addition to Arabic notation, mathematics also makes use of Greek letters to denote a wide variety of mathematical objects and variables. On some occasions, certain Hebrew letters are also used (such as in

SECTION 20

#1732780033460

1650-442: Is called a workspace . In a workspace the user can define programs and data, i.e., the data values exist also outside the programs, and the user can also manipulate the data without having to define a program. In the examples below, the APL interpreter first types six spaces before awaiting the user's input. Its own output starts in column one. The user can save the workspace with all values, programs, and execution status. APL uses

1725-682: Is compact and terse, APL lends itself well to larger-scale software development and complexity, because the number of lines of code can be reduced greatly. Many APL advocates and practitioners also view standard programming languages such as COBOL and Java as being comparatively tedious. APL is often found where time-to-market is important, such as with trading systems. APL makes a clear distinction between functions and operators . Functions take arrays (variables or constants or expressions) as arguments, and return arrays as results. Operators (similar to higher-order functions ) take functions or arrays as arguments, and derive related functions. For example,

1800-455: Is given by the expression ∫ a b x d x {\textstyle \int _{a}^{b}xdx} that can be evaluated to b 2 2 − a 2 2 . {\textstyle {\frac {b^{2}}{2}}-{\frac {a^{2}}{2}}.} Although the resulting expression contains the operators of division , subtraction and exponentiation , it cannot be evaluated further because

1875-573: Is not clear who first introduced this notation, although the corresponding ↓ {\displaystyle \downarrow } for non-disjunction was used by Quine in 1940. The stroke is named after Henry Maurice Sheffer , who in 1913 published a paper in the Transactions of the American Mathematical Society providing an axiomatization of Boolean algebras using the stroke, and proved its equivalence to

1950-432: Is specified (as with the statement *3 in APL, or ^3 in other languages), most programming languages one would see this as a syntax error. APL, however, assumes the missing base to be the natural logarithm constant e , and interprets *3 as 2.71828*3 . Suppose that X is an array of numbers. Then (+/X)÷⍴X gives its average. Reading right-to-left , ⍴X gives the number of elements in X, and since ÷

2025-500: Is the NOR operator (also known as the Peirce arrow , Quine dagger or Webb operator ). Like its dual, NAND can be used by itself, without any other logical operator, to constitute a logical formal system (making NAND functionally complete ). This property makes the NAND gate crucial to modern digital electronics , including its use in computer processor design. The non-conjunction

2100-499: Is the default action on any expression for which no action is specified explicitly (e.g. assignment, function parameter). Another example of this theme is that exponentiation in APL is written as 2*3 , which indicates raising 2 to the power 3 (this would be written as 2^3 or 2**3 in some languages, or relegated to a function call such as pow(2, 3); in others). Many languages use * to signify multiplication, as in 2*3 , but APL chooses to use 2×3 . However, if no base

2175-406: Is truth-functionally equivalent to ¬ ( A ∧ B ) {\displaystyle \neg (A\land B)} , and A ∨ B {\displaystyle A\lor B} is equivalent to ¬ ( ¬ A ∧ ¬ B ) {\displaystyle \neg (\neg A\land \neg B)} , the Sheffer stroke suffices to define

2250-496: Is truth-preserving if its value is truth whenever all of its arguments are truth, or falsity-preserving if its value is falsity whenever all of its arguments are falsity.) It can also be proved by first showing, with a truth table , that ¬ A {\displaystyle \neg A} is truth-functionally equivalent to A ↑ A {\displaystyle A\uparrow A} . Then, since A ↑ B {\displaystyle A\uparrow B}

2325-412: Is widely used in mathematics , science , and engineering for representing complex concepts and properties in a concise, unambiguous, and accurate way. For example, the physicist Albert Einstein 's formula E = m c 2 {\displaystyle E=mc^{2}} is the quantitative representation in mathematical notation of mass–energy equivalence . Mathematical notation

APL (programming language) - Misplaced Pages Continue

2400-1177: The Fourier transform of the derivative of a function called f 1 . {\displaystyle f_{1}.} Symbols are not only used for naming mathematical objects. They can be used for operations ( + , − , / , ⊕ , … ) , {\displaystyle (+,-,/,\oplus ,\ldots ),} for relations ( = , < , ≤ , ∼ , ≡ , … ) , {\displaystyle (=,<,\leq ,\sim ,\equiv ,\ldots ),} for logical connectives ( ⟹ , ∧ , ∨ , … ) , {\displaystyle (\implies ,\land ,\lor ,\ldots ),} for quantifiers ( ∀ , ∃ ) , {\displaystyle (\forall ,\exists ),} and for other purposes. Some symbols are similar to Latin or Greek letters, some are obtained by deforming letters, some are traditional typographic symbols , but many have been specially designed for mathematics. An expression

2475-515: The University of Waterloo . In 1976, Bill Gates claimed in his Open Letter to Hobbyists that Microsoft Corporation was implementing APL for the Intel 8080 and Motorola 6800 but had "very little incentive to make [it] available to hobbyists" because of software piracy . It was never released. Starting in the early 1980s, IBM APL development, under the leadership of Jim Brown , implemented

2550-802: The functional completeness of NAND or NOR more than 30 years earlier, using the term ampheck (for 'cutting both ways'), but he never published his finding. Two years before Sheffer, Edward Stamm  [ pl ] also described the NAND and NOR operators and showed that the other Boolean operations could be expressed by it. NAND is commutative but not associative, which means that P ↑ Q ↔ Q ↑ P {\displaystyle P\uparrow Q\leftrightarrow Q\uparrow P} but ( P ↑ Q ) ↑ R ↮ P ↑ ( Q ↑ R ) {\displaystyle (P\uparrow Q)\uparrow R\not \leftrightarrow P\uparrow (Q\uparrow R)} . The Sheffer stroke, taken by itself,

2625-441: The sum function is derived by applying the reduction operator to the addition function. Applying the same reduction operator to the maximum function (which returns the larger of two numbers) derives a function which returns the largest of a group (vector) of numbers. In the J language, Iverson substituted the terms verb for function and adverb or conjunction for operator . APL also identifies those features built into

2700-693: The APL font has been distinctive, with uppercase italic alphabetic characters and upright numerals and symbols. Most vendors continue to display the APL character set in a custom font. Advocates of APL claim that the examples of so-called write-only code (badly written and almost incomprehensible code) are almost invariably examples of poor programming practice or novice mistakes, which can occur in any language. Advocates also claim that they are far more productive with APL than with more conventional computer languages, and that working software can be implemented in far less time and with far fewer programmers than using other technology. They also may claim that because it

2775-665: The APL implementers' community at Syracuse's Minnowbrook Conference Center in Blue Mountain Lake, New York . In later years, Eugene McDonnell organized similar meetings at the Asilomar Conference Grounds near Monterey , California , and at Pajaro Dunes near Watsonville , California. The SIGAPL special interest group of the Association for Computing Machinery continues to support the APL community. On microcomputers, which became available from

2850-658: The Andes and the Ishango Bone from Africa both used the tally mark method of accounting for numerical concepts. The concept of zero and the introduction of a notation for it are important developments in early mathematics, which predates for centuries the concept of zero as a number. It was used as a placeholder by the Babylonians and Greek Egyptians , and then as an integer by the Mayans , Indians and Arabs (see

2925-473: The IBM APL\360 interpreter. In North America, the better-known ones were IP Sharp Associates , Scientific Time Sharing Corporation (STSC), Time Sharing Resources (TSR), and The Computer Company (TCC). CompuServe also entered the market in 1978 with an APL Interpreter based on a modified version of Digital Equipment Corp and Carnegie Mellon's, which ran on DEC's KI and KL 36-bit machines. CompuServe's APL

3000-563: The IBM mainframe interpreter was even adapted for use on the IBM 5100 desktop computer, which had a small CRT and an APL keyboard, when most other small computers of the time only offered BASIC . In the 1980s, the VSAPL program product enjoyed wide use with Conversational Monitor System (CMS), Time Sharing Option (TSO), VSPC , MUSIC/SP , and CICS users. In 1973–1974, Patrick E. Hagerty directed

3075-452: The Sheffer stroke. In 1928, Hilbert and Ackermann described non-conjunction with the operator / {\displaystyle /} . In 1929, Łukasiewicz used D {\displaystyle D} in D p q {\displaystyle Dpq} for non-conjunction in his Polish notation . An alternative notation for non-conjunction is ↑ {\displaystyle \uparrow } . It

APL (programming language) - Misplaced Pages Continue

3150-477: The ability to use APL effectively, before the wide use of cathode-ray tube (CRT) terminals, was the development of a special IBM Selectric typewriter interchangeable typing element with all the special APL characters on it. This was used on paper printing terminal workstations using the Selectric typewriter and typing element mechanism, such as the IBM 1050 and IBM 2741 terminal. Keycaps could be placed over

3225-499: The basis of, or influenced, the following languages: APL has been criticized and praised for its choice of a unique, non-standard character set. In the 1960s and 1970s, few terminal devices or even displays could reproduce the APL character set. The most popular ones employed the IBM Selectric print mechanism used with a special APL type element. One of the early APL line terminals (line-mode operation only, not full screen)

3300-481: The context of infinite cardinals ). Some mathematical notations are mostly diagrammatic, and so are almost entirely script independent. Examples are Penrose graphical notation and Coxeter–Dynkin diagrams . Braille-based mathematical notations used by blind people include Nemeth Braille and GS8 Braille . Sheffer stroke In Boolean functions and propositional calculus , the Sheffer stroke denotes

3375-543: The early 1980s, in part because it would support multiple users on lower-specification systems that had no dynamic address translation hardware. Additional improvements in performance for selected IBM System/370 mainframe systems included the APL Assist Microcode in which some support for APL execution was included in the processor's firmware , as distinct from being implemented entirely by higher-level software. Somewhat later, as suitably performing hardware

3450-477: The evolution of Sharp APL to be more in accord with his vision. APL2 was first released for CMS and TSO in 1984. The APL2 Workstation edition (Windows, OS/2 , AIX , Linux , and Solaris ) followed later. As other vendors were busy developing APL interpreters for new hardware, notably Unix -based microcomputers , APL2 was almost always the standard chosen for new APL interpreter developments. Even today, most APL vendors or their users cite APL2 compatibility as

3525-598: The exact or approximate values of various functions. Such explicit procedures are called algorithms or programs . Because an effective notation for the description of programs exhibits considerable syntactic structure, it is called a programming language . This notation was used inside IBM for short research reports on computer systems, such as the Burroughs B5000 and its stack mechanism when stack machines versus register machines were being evaluated by IBM for upcoming computers. Iverson also used his notation in

3600-480: The generality of computer science. APL has explicit representations of functions, operators, and syntax, thus providing a basis for the clear and explicit statement of extended facilities in the language, and tools to experiment on them. This displays " Hello, world ": A design theme in APL is to define default actions in some cases that would produce syntax errors in most other programming languages. The 'Hello, world' string constant above displays, because display

3675-541: The history of zero ). Until the 16th century, mathematics was essentially rhetorical , in the sense that everything but explicit numbers was expressed in words. However, some authors such as Diophantus used some symbols as abbreviations. The first systematic use of formulas, and, in particular the use of symbols ( variables ) for unspecified numbers is generally attributed to François Viète (16th century). However, he used different symbols than those that are now standard. Later, René Descartes (17th century) introduced

3750-592: The implementation of the University of Maryland APL interpreter for the 1100 line of the Sperry UNIVAC 1100/2200 series mainframe computers. In 1974, student Alan Stebbens was assigned the task of implementing an internal function. Xerox APL was available from June 1975 for Xerox 560 and Sigma 6, 7, and 9 mainframes running CP-V and for Honeywell CP-6 . In the 1960s and 1970s, several timesharing firms arose that sold APL services using modified versions of

3825-555: The instruction set for the machines that later became the IBM System/360 family. In 1963, Herbert Hellerman, working at the IBM Systems Research Institute, implemented a part of the notation on an IBM 1620 computer, and it was used by students in a special high school course on calculating transcendental functions by series summation. Students tested their code in Hellerman's lab. This implementation of

SECTION 50

#1732780033460

3900-408: The language to make it worthwhile to memorize the symbols, their semantics, keyboard mappings, and many idioms for common tasks. Unlike traditionally structured programming languages, APL code is typically structured as chains of monadic or dyadic functions , and operators acting on arrays . APL has many nonstandard primitives (functions and operators) that are indicated by a single symbol or

3975-457: The language, and represented by a symbol, or a fixed combination of symbols, as primitives . Most primitives are either functions or operators. Coding APL is largely a process of writing non-primitive functions and (in some versions of APL) operators. However a few primitives are considered to be neither functions nor operators, most noticeably assignment. Some words used in APL literature have meanings that differ from those in both mathematics and

4050-557: The mid-1970s onwards, BASIC became the dominant programming language. Nevertheless, some microcomputers provided APL instead – the first being the Intel 8008 -based MCM/70 which was released in 1974 and which was primarily used in education. Another machine of this time was the VideoBrain Family Computer , released in 1977, which was supplied with its dialect of APL called APL/S. The Commodore SuperPET , introduced in 1981, included an APL interpreter developed by

4125-472: The modern notation for variables and equations ; in particular, the use of x , y , z {\displaystyle x,y,z} for unknown quantities and a , b , c {\displaystyle a,b,c} for known ones ( constants ). He introduced also the notation i and the term "imaginary" for the imaginary unit . The 18th and 19th centuries saw the standardization of mathematical notation as used today. Leonhard Euler

4200-468: The normal keys to show which APL characters would be entered and typed when that key was struck. For the first time, a programmer could type in and see proper APL characters as used in Iverson's notation and not be forced to use awkward English keyword representations of them. Falkoff and Iverson had the special APL Selectric typing elements, 987 and 988, designed in late 1964, although no APL computer system

4275-424: The notation on a computer system. One of the motivations for this focus of implementation was the interest of John L. Lawrence who had new duties with Science Research Associates , an educational company bought by IBM in 1964. Lawrence asked Iverson and his group to help use the language as a tool to develop and use computers in education. After Lawrence M. Breed and Philip S. Abrams of Stanford University joined

4350-405: The operating system for information and setting interpreter system variables was done through special privileged "I-beam" functions, using both monadic and dyadic operations. In 1973, IBM released APL.SV , which was a continuation of the same product, but which offered shared variables as a means to access facilities outside of the APL system, such as operating system files. In the mid-1970s,

4425-577: The same mathematical text with six different meanings. Normally, roman upright typeface is not used for symbols, except for symbols representing a standard function, such as the symbol " sin {\displaystyle \sin } " of the sine function . In order to have more symbols, and for allowing related mathematical objects to be represented by related symbols, diacritics , subscripts and superscripts are often used. For example, f 1 ′ ^ {\displaystyle {\hat {f'_{1}}}} may denote

4500-595: The team at IBM Research, they continued their prior work on an implementation programmed in FORTRAN IV for a part of the notation which had been done for the IBM 7090 computer running on the IBSYS operating system. This work was finished in late 1965 and later named IVSYS (for Iverson system). The basis of this implementation was described in detail by Abrams in a Stanford University Technical Report, "An Interpreter for Iverson Notation" in 1966. The academic aspect of this

4575-474: The unusual character set , many programmers use special keyboards with APL keytops to write APL code. Although there are various ways to write APL code using only ASCII characters, in practice it is almost never done. (This may be thought to support Iverson's thesis about notation as a tool of thought .) Most if not all modern implementations use standard keyboard layouts, with special mappings or input method editors to access non-ASCII characters. Historically,

SECTION 60

#1732780033460

4650-736: The use of input method editors , keyboard mappings, virtual/on-screen APL symbol sets, or easy-reference printed keyboard cards which can frustrate beginners accustomed to other programming languages. With beginners who have no prior experience with other programming languages, a study involving high school students found that typing and using APL characters did not hinder the students in any measurable way. In defense of APL, it requires fewer characters to type, and keyboard mappings become memorized over time. Special APL keyboards are also made and in use today, as are freely downloadable fonts for operating systems such as Microsoft Windows. The reported productivity gains assume that one spends enough time working in

4725-541: Was an advanced APL implementation with many language extensions, such as packages (the ability to put one or more objects into a single variable), a file system, nested arrays, and shared variables . APL interpreters were available from other mainframe and mini-computer manufacturers also, notably Burroughs , Control Data Corporation (CDC), Data General , Digital Equipment Corporation (DEC), Harris , Hewlett-Packard (HP), Siemens , Xerox and others. Garth Foster of Syracuse University sponsored regular meetings of

4800-413: Was available both to its commercial market and the consumer information service. With the advent first of less expensive mainframes such as the IBM 4300 , and later the personal computer, by the mid-1980s, the timesharing industry was all but gone. Sharp APL was available from IP Sharp Associates, first as a timesharing service in the 1960s, and later as a program product starting around 1979. Sharp APL

4875-430: Was available to use them. Iverson cited Falkoff as the inspiration for the idea of using an IBM Selectric typing element for the APL character set. Many APL symbols, even with the APL characters on the Selectric typing element, still had to be typed in by over-striking two extant element characters. An example is the grade up character, which had to be made from a delta (shift-H) and a Sheffer stroke (shift-M). This

4950-401: Was chiefly responsible for introducing APL to the marketplace. The first publicly available version of APL was released in 1968 for the IBM 1130 . IBM provided APL\1130 for free but without liability or support. It would run in as little as 8k 16-bit words of memory, and used a dedicated 1 megabyte hard disk. APL gained its foothold on mainframe timesharing systems from the late 1960s through

5025-708: Was created in 1978 by Donald Knuth . It is widely used in mathematics, through its extension called LaTeX , and is a de facto standard. (The above expression is written in LaTeX.) More recently, another approach for mathematical typesetting is provided by MathML . However, it is not well supported in web browsers, which is its primary target. The international standard ISO 80000-2 (previously, ISO 31-11 ) specifies symbols for use in mathematical equations. The standard requires use of italic fonts for variables (e.g., E = mc ) and roman (upright) fonts for mathematical constants (e.g., e or π). Modern Arabic mathematical notation

5100-521: Was finally growing available in the mid- to late-1980s, many users migrated their applications to the personal computer environment. Early IBM APL interpreters for IBM 360 and IBM 370 hardware implemented their own multi-user management instead of relying on the host services, thus they were their own timesharing systems. First introduced for use at IBM in 1966, the APL\360 system was a multi-user interpreter. The ability to programmatically communicate with

5175-465: Was first introduced by François Viète at the end of the 16th century and largely expanded during the 17th and 18th centuries by René Descartes , Isaac Newton , Gottfried Wilhelm Leibniz , and overall Leonhard Euler . The use of many symbols is the basis of mathematical notation. They play a similar role as words in natural languages . They may play different roles in mathematical notation similarly as verbs, adjective and nouns play different roles in

5250-505: Was formally supervised by Niklaus Wirth . Like Hellerman's PAT system earlier, this implementation omitted the APL character set, but used special English reserved words for functions and operators. The system was later adapted for a time-sharing system and, by November 1966, it had been reprogrammed for the IBM System/360 Model 50 computer running in a time-sharing mode and was used internally at IBM. A key development in

5325-550: Was necessary because the APL character set was much larger than the 88 characters allowed on the typing element, even when letters were restricted to upper-case (capitals). The first APL interactive login and creation of an APL workspace was in 1966 by Larry Breed using an IBM 1050 terminal at the IBM Mohansic Labs near Thomas J. Watson Research Center , the home of APL, in Yorktown Heights , New York. IBM

5400-458: Was often unneeded, since an operation could be performed on a full array in one statement. For example, the iota function ( ι ) can replace for-loop iteration : ιN when applied to a scalar positive integer yields a one-dimensional array (vector), 1 2 3 ... N. Later APL implementations generally include comprehensive control structures, so that data structure and program control flow can be clearly and cleanly separated. The APL environment

5475-557: Was responsible for many of the notations currently in use: the functional notation f ( x ) , {\displaystyle f(x),} e for the base of the natural logarithm, ∑ {\textstyle \sum } for summation , etc. He also popularized the use of π for the Archimedes constant (proposed by William Jones , based on an earlier notation of William Oughtred ). Since then many new notations have been introduced, often specific to

5550-577: Was the Texas Instruments TI Model 745 ( c.  1977 ) with the full APL character set which featured half and full duplex telecommunications modes, for interacting with an APL time-sharing service or remote mainframe to run a remote computer job, remote job entry (RJE). Over time, with the universal use of high-quality graphic displays, printing devices and Unicode support, the APL character font problem has largely been eliminated. However, entering APL characters requires

5625-794: Was the first to publish a proof of the completeness of non-conjunction, representing this with ∼ {\displaystyle \sim } (the Stamm hook ) and non-disjunction in print at the first time and showed their functional completeness. In 1913, Sheffer described non-disjunction using ∣ {\displaystyle \mid } and showed its functional completeness. Sheffer also used ∧ {\displaystyle \wedge } for non-disjunction. Many people, beginning with Nicod in 1917, and followed by Whitehead, Russell and many others, mistakenly thought Sheffer has described non-conjunction using ∣ {\displaystyle \mid } , naming this

#459540