FACTOID # 46: Japan has 53 working nuclear reactors and is planning to build another 12.
 
 Home   Encyclopedia   Statistics   Countries A-Z   Flags   Maps   Education   Forum   FAQ   About 
 
WHAT'S NEW
RECENT ARTICLES
More Recent Articles »
 

FACTS & STATISTICS    Simple view

  1. Select countries to view: (hold down Control key and click to select several)

     

     

    Compare:

     

     

  1. Select fact or statistic: (* = graphable)

     

     

     

  2. (OPTIONAL) Compare to statistic: (both need to be graphable)

     

     

     

  3. View result as:

     

       
(OR) SEARCH ALL encyclopedia, stats & forums:   

Encyclopedia > APL (programming language)
APL
Paradigm: array, functional, structured, modular
Appeared in: 1964
Designed by: Kenneth E. Iverson
Developer: Kenneth E. Iverson
Typing discipline: dynamic
Major implementations: IBM APL2, Dyalog APL, APL2000, Sharp APL
Dialects: A+
Influenced by: mathematical notation
Influenced: J, K, Nial

APL (for A Programming Language) is an array programming language based on a notation invented in 1957 by Kenneth E. Iverson while at Harvard University. It originated in an attempt to provide consistent notation for the teaching and analysis of topics related to the application of computers. The notation was later used to describe the IBM System/360 machine architecture, a description much more concise and exact than the existing documentation and revealing several previously unnoticed problems. Later, a Selectric typeball was specially designed to write a linear representation of this notation. In 1964, a subset of the notation was implemented as a programming language. A programming paradigm is a paradigmatic style of programming (compare with a methodology, which is a paradigmatic style of doing software engineering). ... Array programming languages (also known as vector or multidimensional languages) generalize operations on scalars to apply transparently to vectors, matrices, and higher dimensional arrays. ... Functional programming is a programming paradigm that conceives computation as the evaluation of mathematical functions and avoids state and mutable data. ... Structured programming can be seen as a subset or subdiscipline of procedural programming, one of the major programming paradigms. ... Modular Programming is a programming paradigm that was first presented by Information & Systems Institute, Inc. ... 1964 (MCMLXIV) was a leap year starting on Wednesday (the link is to a full 1964 calendar). ... Kenneth Eugene Iverson (17 December 1920, Camrose, Alberta, Canada – 19 October 2004, Toronto, Ontario, Canada) was a computer scientist most notable for developing the APL programming language in 1957. ... A software developer is a person who is concerned with one or more facets of the software development process, a somewhat broader scope of computer programming or a specialty of project managing. ... Kenneth Eugene Iverson (17 December 1920, Camrose, Alberta, Canada – 19 October 2004, Toronto, Ontario, Canada) was a computer scientist most notable for developing the APL programming language in 1957. ... In computer science, a type system defines how a programming language classifies values and expressions into types, how it can manipulate those types and how they interact. ... In computer science, a type system defines how a programming language classifies values and expressions into types, how it can manipulate those types and how they interact. ... Look up Implementation in Wiktionary, the free dictionary. ... A dialect of a programming language is a (relatively small) variation or extension of the language that does not change its intrinsic nature. ... A+ is a powerful and efficient array programming language written at Morgan Stanley. ... Mathematical notation is used in mathematics, and throughout the physical sciences, engineering, and economics. ... 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). ... K is a high level array programming language developed by Arthur Whitney, an influential APL programmer. ... Nial (from Nested Interactive Array Language) is a high-level array-based programming language developed from about 1981 by Mike Jenkins of Queens University, Kingston, Ontario, Canada. ... Array programming languages (also known as vector or multidimensional languages) generalize operations on scalars to apply transparently to vectors, matrices, and higher dimensional arrays. ... 1957 (MCMLVII) was a common year starting on Tuesday of the Gregorian calendar. ... Kenneth Eugene Iverson (17 December 1920, Camrose, Alberta, Canada – 19 October 2004, Toronto, Ontario, Canada) was a computer scientist most notable for developing the APL programming language in 1957. ... Harvard University (incorporated as The President and Fellows of Harvard College) is a private university in Cambridge, Massachusetts, USA. Founded in 1636,[2] Harvard is the oldest institution of higher learning still operating in the United States. ... International Business Machines Corporation (known as IBM or Big Blue; NYSE: IBM) is a multinational computer technology corporation headquartered in Armonk, New York, USA. The company is one of the few information technology companies with a continuous history dating back to the 19th century. ... System/360 Model 65 operators console, with register value lamps and toggle switches (middle of picture) and emergency pull switch (upper right). ... The IBM Selectric typewriter (occasionally known as the IBM Golfball typewriter) is the electric typewriter design that brought the typewriter into the electronic age starting in 1961. ... 1964 (MCMLXIV) was a leap year starting on Wednesday (the link is to a full 1964 calendar). ...


Iverson published his notation in 1962 in a book titled A Programming Language and APL got its name from the title of this book, however even early APL differs significantly from the notation described in his book. Iverson received the Turing Award in 1979 for his work. 1962 (MCMLXII) was a common year starting on Monday (the link is to a full 1962 calendar). ... The A.M. Turing Award is given annually by the Association for Computing Machinery to a person selected for contributions of a technical nature made to the computing community. ... For the song by the Smashing Pumpkins, see 1979 (song). ...


As with all programming languages that have had several decades of continual use, APL has evolved significantly, almost always in an upwards-compatible manner, from its early releases. APL is almost always interpretive and interactive, features much appreciated by its users. Further, the initial lack of support for structured programming has been rectified in most of the modern APL implementations. In computer programming, an interpreted language is a programming language whose programs may be executed from source form, by an interpreter. ... There are several conceptual views of interactivity, the most general being the contingency view. ... Structured programming can be seen as a subset or subdiscipline of procedural programming, one of the major programming paradigms. ...


One much criticized (and celebrated) aspect of APL is the use of a special character set visually depicting the operations to be performed (see Character set below). These characters have all been incorporated into Unicode, and are entered by keyboard mappings or Input Method Editors. The APL programming language has been used since the mid 1960s on mainframe computers and has itself evolved in step with computers and the computing market. ... APL (for A Programming Language) is an array programming language based on a notation invented in 1957 by Kenneth E. Iverson while at Harvard University. ... An IME for inputting Japanese characters in Mac OS 9 An IME for inputting Japanese characters using Windows XPs radical IME pad An input method editor (IME) is a program or operating system component that allows computer users to enter characters and symbols not found on their keyboard. ...


Iverson later reworked APL into a language called J which not only greatly increases expressive power but also uses pure ASCII (with digraphs) instead of a special character set. 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). ... Digraphs are two-character sequences used to enter single characters that cannot be entered from the computer keyboard for various reasons: obsolete keyboard, input of special characters is required, the text editor reserves some characters for special use, etc. ...

Contents

Overview

Over a very wide set of problem domains (math, science, engineering, computer design, robotics, data visualization, actuarial science, traditional DP, etc.) APL is an extremely powerful, expressive and concise programming language, typically set in an interactive environment. It was originally created, among other things, as a way to describe computers, by expressing mathematical notation in a rigorous way that could be interpreted by a computer. It is easy to learn but some APL programs can take some time to understand, especially for a newcomer. Mathematical notation is used in mathematics, and throughout the physical sciences, engineering, and economics. ...


Unlike traditionally structured programming languages, code in APL is typically structured as chains of monadic or dyadic functions and operators acting on arrays. As APL has many nonstandard primitives (functions and operators, indicated by a single symbol or a combination of a few symbols), it does not have function or operator precedence. Early APL implementations did not have control structures (do or while loops, if-then-else), but by using array operations, usage of structured programming constructs was just not necessary. For example, the iota function (which yields a one-dimensional array, or vector, from 1 to N) can replace for-loop iteration. More recent implementations of APL generally include comprehensive control structures, thus data structure and program control flow can be clearly and cleanly separated. In mathematics, a unary operation is an operation with only one operand. ... In mathematics, a binary operation is a calculation involving two input quantities, in other words, an operation whose arity is two. ... In computer science, a subroutine (function, procedure, or subprogram) is a sequence of code which performs a specific task, as part of a larger program, and is grouped as one, or more, statement blocks; such code is sometimes collected into software libraries. ... In mathematics, an operator is a function that performs some sort of operation on a number, variable, or function. ... This article or section does not cite its references or sources. ... This article is about the concept of operator precedence. ... In computer science control flow (or alternatively, flow of control) refers to the order in which the individual statements or instructions of an imperative program are performed or executed. ... Structured programming can be seen as a subset or subdiscipline of procedural programming, one of the major programming paradigms. ... Look up vector in Wiktionary, the free dictionary. ... The word iteration is sometimes used in everyday English with a meaning virtually identical to repetition. ...


The APL environment 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 manipulate the data without the necessity to define a program. For example,

N leftarrow 4 5 6 7

assigns the vector values 4 5 6 7 to N; In linear algebra, a coordinate vector is an explicit representation of a vector in an abstract vector space as an ordered list of numbers or, equivalently, as an element of the coordinate space Fn. ...

N+4,!

adds 4 to all values (giving 8 9 10 11) and prints them (the absence of the assignment arrow leftarrow means "show");

+/N,!

prints the sum of N, i.e. 22.


The user can save the workspace with all values, programs and execution status.


APL is well-known for its use of a set of non-ASCII symbols that are an extension of traditional arithmetic and algebraic notation. These cryptic symbols, mostly the reason it is possible to formulate extremely terse and compact problem formulations in APL, make it possible to write Conway's Game of Life in one line of code (example). 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. There are 95 printable ASCII characters, numbered 32 to 126. ... Gospers Glider Gun creating gliders. The Game of Life is a cellular automaton devised by the British mathematician John Horton Conway in 1970. ...


Because of its condensed nature and non-standard characters, APL has sometimes been termed a "write-only language", and reading an APL program can at first feel like decoding Egyptian hieroglyphics. Because of the unusual character set, many programmers use special keyboards with APL keytops for authoring 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 theses 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, 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. A write-only language is a programming language with the attribute that programs written in it are more easily scrapped and re-written than modified. ... Hieroglyphs are a system of writing used by the Ancient Egyptians, using a combination of logographic, syllabic, and alphabetic elements. ... A character encoding is a code that pairs a set of characters (such as an alphabet or syllabary) with a set of something else, such as numbers or electrical pulses. ... A computer keyboard is a peripheral partially modeled after the typewriter keyboard. ... An IME for inputting Japanese characters in Mac OS 9 An IME for inputting Japanese characters using Windows XPs radical IME pad An input method editor (IME) is a program or operating system component that allows computer users to enter characters and symbols not found on their keyboard. ...


Advocates of APL claim that the examples of "write-only" code are almost invariably examples of poor programming practice or novice mistakes, which can occur in any language. Advocates of APL 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. Also, being compact and terse, APL lends itself well to larger scale software development as complexity arising from a large number of lines of code can be dramatically reduced. APL is often found where time-to-market is important, such as with trading systems.


Mostly due to its infix notation and its emphasis on interaction with the computer, APL can be an ideal environment for the rapid deployment of interactive Domain Specific Languages. Despite the presence of non-standard characters in the APL character set, it is possible for a user of a domain-specific language implemented in APL to write simple programs (or scripts) consisting solely of words, numbers, and familiar punctuation. Until as late as the mid-1980s, APL timesharing vendors offered applications delivered in the form of domain specific languages. On the I. P. Sharp timesharing system, a workspace called 39 MAGIC offered access to financial and airline data plus sophisticated (for the time) graphing and reporting, in the form of a domain specific language. Another example would be the GRAPHPAK workspace supplied with IBM's APL2, a demonstration version of both APL2 and GRAPHPAK can be downloaded for Windows. Infix notation is the common arithmetic and logical formula notation, in which operators are written infix-style between the operands they act on (e. ... A domain-specific language (DSL) is a programming language designed to be useful for a specific set of tasks, in contrast to general-purpose programming languages. ... Alternate uses: see Timesharing Time-sharing is an approach to interactive computing in which a single computer is used to provide apparently simultaneous interactive general-purpose computing to multiple users by sharing processor time. ... I. P. Sharp Associates, IPSA for short, was a major Canadian computer time sharing, consulting and services firm of the 1970s and 80s. ...


Arguably, APL was designed with computer interaction, education, and mathematics, not necessarily in that order, in mind. Further, APL was designed to empower a user, a casual, non-professional programmer, perhaps an economist, actuary, or engineer, to get results from a computer. In a sense, it was the opposite of the stated purpose of Tom Lehrer's song "New Math", where the idea is both to get the right answer and to understanding what you are doing. Tom Lehrer in 1960. ...


Iverson later designed a successor to APL called J which uses ASCII with digraphs instead of special symbols. Few other programming languages offer the comprehensive array functionality of APL. A+ is an open source programming language with many features similar if not identical to APL. The K and Q languages from Kx Systems also offer a similar language philosophy. However, the roots of the A+, J, K, and Q languages all stem from APL. 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). ... Digraphs are two-character sequences used to enter single characters that cannot be entered from the computer keyboard for various reasons: obsolete keyboard, input of special characters is required, the text editor reserves some characters for special use, etc. ... A+ is a powerful and efficient array programming language written at Morgan Stanley. ... A programming language is an artificial language that can be used to control the behavior of a machine, particularly a computer. ... K is a proprietary, array processing language developed by Arthur Whitney and commercialized by Kx Systems. ...


Examples

The following expression sorts a word list stored in matrix X according to word length: Sorting refers to a process of arranging items in some sequence and/or in different sets, and accordingly, it has two common, yet distinct meanings: ordering: aranging items of the same kind, class, nature, etc. ...


Image:APL Example 1.gif Image File history File links APL_Example_1. ...


The following function "life", written in Dyalog APL, takes a boolean matrix and calculates the new generation according to Conway's Game of Life: Gospers Glider Gun creating gliders. The Game of Life is a cellular automaton devised by the British mathematician John Horton Conway in 1970. ...


Image:LifeInApl.gif Image File history File links No higher resolution available. ...


In the following example, also Dyalog, the first line assigns some HTML code to a variable "txt" and then uses an APL expression to remove all the HTML tags, returning the text only as shown in the last line.


Image:StripHtmlFromText.gif Image File history File links No higher resolution available. ...


The following expression finds all prime numbers from 1 to R (presuming an index origin of 1). In both time and space, the calculation is O(R2). In mathematics, a prime number (or a prime) is a natural number that has exactly two (distinct) natural number divisors, which are 1 and the prime number itself. ...

(∼R∈R∘.×R)/R←1↓⍳R

From right to left, this means:

  1. ⍳R creates a vector containing integers from 1 to R (if R = 6 at the beginning of the program, ⍳R is 1 2 3 4 5 6)
  2. Drop first element of this vector (↓ function), i.e. 1. So 1↓⍳R is 2 3 4 5 6
  3. Set R to the vector (←, assignment primitive)
  4. Generate outer product of R multiplied by R, i.e. a matrix which is the multiplication table of R by R (∘.× function)
  5. Build a vector the same length as R with 1 in each place where the corresponding number in R is in the outer product matrix (∈, set inclusion function), i.e. 0 0 1 0 1
  6. Logically negate the values in the vector (change zeros to ones and ones to zeros) (∼, negation function), i.e. 1 1 0 1 0
  7. Select the items in R for which the corresponding element is 1 (/ function), i.e. 2 3 5

The integers are commonly denoted by the above symbol. ... In mathematics, a multiplication table is a mathematical table used to define a multiplication operation for an algebraic system. ...

Calculation

APL was unique in the speed with which it could perform complex matrix operations. For example, a very large matrix multiplication would take only a few seconds on a machine which was much less powerful than those today. There were some technical and other economic reasons for this advantage:

  • Commercial interpreters delivered highly-tuned linear algebra library routines.
  • Very low interpretive overhead was incurred per-array—not per-element.
  • APL response time compared favorably to the runtimes of early optimizing compilers.
  • IBM provided microcode assist for APL on a number of IBM/370 mainframes.

A widely cited paper "The APL Machine" perpetuated the myth that APL made pervasive use of lazy evaluation where calculations would not actually be performed until the results were needed and then only those calculations strictly required. Although this technique was used by just a few implementations, it embodies the language's best survival mechanism: not specifying the order of scalar operations. Even as eventually standardized by X3J10, APL is so highly data-parallel, it gives language implementors immense freedom to schedule operations as efficiently as possible. As computer innovations such as cache memory, and SIMD execution became commercially available, APL programs ported with little extra effort spent re-optimizing low-level details. A microprogram is a program consisting of microcode that controls the different parts of a computers central processing unit (CPU). ... In computer programming, lazy evaluation is a technique that attempts to delay computation of expressions until the results of the computation are known to be needed. ... Data Parallelism is a form of parallelization of computer code. ... This article is about the computer term. ... -1...


Interpreters

Today, most APL language activity takes place under the Microsoft Windows operating system, with some activity under Linux, Unix, and Mac OS. Comparatively little APL activity takes place today on mainframe computers. Linux (IPA pronunciation: ) is a Unix-like computer operating system family. ... Filiation of Unix and Unix-like systems Unix (officially trademarked as UNIX®) is a computer operating system originally developed in the 1960s and 1970s by a group of AT&T employees at Bell Labs including Ken Thompson, Dennis Ritchie and Douglas McIlroy. ... This article or section does not cite its references or sources. ...


APLNow (formerly APL2000) offers an advanced APL interpreter which operates under Linux, Unix, and Windows. It supports Windows automation, supports calls to operating system and user defined DLLs, has an advanced APL File System, and represents the current level of APL language development. APL2000's product is an advanced continuation of STSC's successful APL*Plus/PC and APL*Plus/386 product line. Scientific Time Sharing Corporation was a pioneering timesharing and consulting service company which offered APL from its datacenter in Bethesda, MD to users in the United States and Europe. ...


Dyalog APL is an advanced APL interpreter which operates under Linux, Unix, and Windows. Dyalog has aggressive extensions to the APL language which include new object oriented features, numerous language enhancements, plus a consistent namespace model used for both its Microsoft Automation interface, as well as native namespaces. 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. ... 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. ...


IBM offers a version of IBM APL2 for Linux and Windows systems. This product is a continuation of APL2 offered for IBM mainframes. IBM APL2 was arguably the most influential APL system, which provided a solid implementation standard for the next set of extensions to the language, focusing on nested arrays.


MicroAPL Limited offers APLX, a full-featured 64 bit interpreter for Linux, Windows, and Apple Mac OS systems. Linux (IPA pronunciation: ) is a Unix-like computer operating system family. ... 1. ... This article or section does not cite its references or sources. ...


Soliton Associates offers the SAX interpreter (Sharp APL for Unix) for Unix and Linux systems, which is a further development of I. P. Sharp Associates' Sharp APL product. Unlike most other APL interpreters, Kenneth E. Iverson had some influence in the way nested arrays were implemented in Sharp APL and SAX. Nearly all other APL implementations followed the course set by IBM with APL2, thus some important details in Sharp APL differ from other implementations. Kenneth Eugene Iverson (17 December 1920, Camrose, Alberta, Canada – 19 October 2004, Toronto, Ontario, Canada) was a computer scientist most notable for developing the APL programming language in 1957. ...


Unlike most other computer languages, APL gained its foothold on mainframe timesharing systems in the 1960s through the 1980s and later, when suitably performing hardware was finally available starting in the early to mid-1980s, many users migrated their applications to the personal computer environment. This is also one of APL's survival mechanisms, the ability to move from platform to platform. APL was truly portable.


The first microcomputer implementation of APL was on the MCM/70, an 8008-based processor, in 1973, two years ahead of the beginning of the rest of the microcomputer revolution. A Small APL for the Intel 8080 called EMPL was released in 1977, and Softronics APL, with most of the functions of full APL, for 8080-based CP/M systems was released in 1979. Vanguard APL was available for Z80 CP/M-based processors in the late 1970s. TCC released APL.68000 in the early 1980s for Motorola 68000-based processors, this system being the basis for MicroAPL Limited's APLX product. I. P. Sharp Associates released a version of their APL interpreter for the IBM PC and PC/370 - for the IBM PC, an emulator was written which facilitated reusing much of the IBM 370 mainframe code. Arguably, the best known APL interpreter for the IBM Personal Computer was STSC's APL*Plus/PC. Intel 8008 The Intel 8008 was an early microprocessor designed and manufactured by Intel, and introduced in April, 1972. ... The Zilog Z80 is an 8-bit microprocessor designed and manufactured by Zilog from 1976 onwards. ... CP/M was an operating system originally created for Intel 8080/85 based microcomputers by Gary Kildall of Digital Research, Inc. ... The Motorola 68000 is a CISC microprocessor, the first member of a successful family of microprocessors from Motorola, which were all mostly software compatible. ... An emulator reproducing a console games playable atmosphere on a Windows computer. ... Scientific Time Sharing Corporation was a pioneering timesharing and consulting service company which offered APL from its datacenter in Bethesda, MD to users in the United States and Europe. ...


In the early 1980s, the Analogic Corporation developed The APL Machine, which was an array processing computer designed to be programmed only in APL. There were actually three processing units, the user's workstation, an IBM PC, where programs were entered and edited, a Motorola 6800 processor which ran the APL interpreter, and the Analogic array processor which executed the primitives. At the time of its introduction The APL Machine was likely the fastest APL system available. Although a technological success, The APL Machine was a marketing failure. The initial version supported a single process at a time. At the time the project was discontinued, the design had been completed to allow multiple users. As an aside, an unusual aspect of The APL Machine was that the library of workspaces was organized such that a single function or variable which was shared by many workspaces existed only once in the library. Several of the members of The APL Machine project had previously spent a number of years with Burroughs implementing APL700. A vector processor, or array processor, is a CPU design that is able to run mathematical operations on multiple data elements simultaneously. ... IBM PC (IBM 5150) with keyboard and green screen monochrome monitor (IBM 5151), running MS-DOS 5. ... The 6800 is a microprocessor produced by Motorola and released shortly after the Intel 8080 in 1975. ...


IBM was responsible for the introduction of APL to the marketplace. Today, the APL2 product is available for IBM mainframes with CMS and TSO; and the APL2 Workstation edition (Windows, AIX, Linux, and Solaris). Earlier, the VSAPL program product enjoyed widespread usage with CMS, TSO, VSPC, and CICS users. The Conversational Monitor System (CMS) is a relatively simple interactive computing single-user operating system which was for many years IBMs principal time-sharing product. ... Time Sharing Option (TSO) is an interactive command line interpreter for IBM mainframe operating systems such as MVS/ESA, OS/390 and z/OS. It fills the same purpose as a command shell like Bash on Unix, or cmd on Windows. ... The Conversational Monitor System (CMS) is a relatively simple interactive computing single-user operating system which was for many years IBMs principal time-sharing product. ... Time Sharing Option (TSO) is an interactive command line interpreter for IBM mainframe operating systems such as MVS/ESA, OS/390 and z/OS. It fills the same purpose as a command shell like Bash on Unix, or cmd on Windows. ... CICS® (Customer Information Control System) is a transaction server that runs primarily on IBM mainframe systems under z/OS or z/VSE. CICS is available for other operating systems, notably i5/OS, OS/2, and as the closely related IBM TXSeries software on AIX, Windows, and Linux, among others. ...


Prior to APL2 and VSAPL, 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 timesharing systems in their own right. First introduced in 1966, the APL360 system was a multi-user interpreter . 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. The IBM System/360 (S/360) is a computer system family announced by International Business Machines on April 7, 1964. ... This article is about the IBM 370 printer; for information on the System/370, look there. ... Shared Variables are a feature of the APL language which allowed mainframe APL programs to communicate with other facilities on a computer, which could include external files, DBMS, or other users. ...


APL was first available for the IBM 1130 as APL1130.[1] Operator loading a 2315 disk cartridge into the IBM 1130 computer. ...


Sharp APL was available from I. P. Sharp Associates, first on a timesharing basis, and later as a program product. Sharp APL was an advanced APL implementation with many language extensions, such as packages (the ability to put one or more objects into a single variable), file system, nested arrays, and shared variables. I. P. Sharp Associates, IPSA for short, was a major Canadian computer time sharing, consulting and services firm of the 1970s and 80s. ... Shared Variables are a feature of the APL language which allowed mainframe APL programs to communicate with other facilities on a computer, which could include external files, DBMS, or other users. ...


APL interpreters were available from other computer manufactures as well, notably Burroughs, CDC, Data General, DEC, Harris, Hewlett-Packard, Siemens, Xerox, and others. William Seward Burroughs (1857-1898), US inventor William S. Burroughs (1914-1997), author and grandson of William Seward Burroughs Edgar Rice Burroughs (1875-1950), American author of Tarzan fame The Burroughs Corporation began in 1886 as the American Arithmometer Company in St. ... Control Data Corporation, or CDC, was one of the pioneering supercomputer firms. ... Data General was one of the first minicomputer firms from the late 1960s. ... The DEC logo Digital Equipment Corporation was a pioneering American company in the computer industry. ... Harris Corporation NYSE: HRS is an international communications equipment company that produces wireless equipment, electronic systems, and both terrestrial and spaceborne antennas for use in the Government, Defense, and Commercial sectors. ... The Hewlett-Packard Company (NYSE: HPQ), commonly known as HP, is a very large, global company headquartered in Palo Alto, California, United States. ... Siemens AG (ISIN: DE0007236101, FWB: SIE, NYSE: SI) is one of the worlds largest technology companies. ... Xerox Corporation (NYSE: XRX) is an American document management company, which manufactures and sells a range of color and black-and-white printers, multifunction systems, photo copiers, digital production printing presses, and related consulting services and supplies. ...


At one stage, Microsoft Corporation planned to release a version of APL, but these plans never materialized. Microsoft Corporation (NASDAQ: MSFT), (founded 1975), headquartered in Redmond, Washington, USA, is the worlds largest software company (with over 50,000 employees in various countries, as of May 2004). ...


An early 1978 publication of Rodnay Zaks from Sybex was A microprogrammed APL implementation ISBN 0895880059 which is the complete, total source listing for the microcode for a PDP / LSI-11 processor implementing the APL programming language. This may have been the substance of his PhD Thesis. 1978 (MCMLXXVIII) was a common year starting on Sunday. ... Rodnay Zaks (born in Paris, France) is a prolific author of books on computer programming[1], including the seminal Programming the Z80 and Programming the 6502. ...


Compilation

APL programs are normally interpreted and less often compiled. In reality, most APL "compilers" translated source APL to a lower level language such as C, leaving the machine-specific details to the lower level compiler. Compilation of APL programs was a frequently discussed topic in conferences. Although some of the newer enhancements to the APL language such as nested arrays have rendered the language increasingly difficult to compile, the idea of APL compilation is still under development today. In computer programming, an interpreted language is a programming language whose programs may be executed from source form, by an interpreter. ... A compiled language is a programming language whose implementations are typically compilers (translators which generate machine code from source code), and not interpreters (step-by-step executors of source code, where no translation takes place). ... Translation may refer to: broadcast translator, rebroadcasting a signal at a different frequency machine translation, the conversion of a computer program from one programming language to another; e. ... C is a general-purpose, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system. ...


In the past, compilation was regarded as a means to achieve Fortran-like execution speed, especially on mainframe computers. Today, execution speed is less critical, considering the numbers of computer languages implemented using virtual machines. Several APL compilers did achieve varying levels of success, though comparatively little of the development effort spent on APL over the years went to perfecting compilation. In general terms, a virtual machine in computer science is software that creates an environment between the computer platform and the end user in which the end user can operate software. ...


No APL compiler brought to the market was ever capable of compiling APL programs without changes, often substantial, to their content. Often, variable declarations were needed, certain language features would need to be removed or avoided, or at the very least, the APL programs would need to be cleaned up in some way. Some features of the language, such as the execute function (an expression evaluator) and the various reflection and introspection functions from APL, such as the ability to return a function's text or to materialize a new function from text, are simply not practical to implement. In computer science, reflection is the process by which a computer program of the appropriate type can be modified in the process of being executed, in a manner that depends on abstract features of its code and its runtime behavior. ... In computing, type introspection is a capability of some object-oriented programming languages to determine the type of an object at runtime. ...


The APLNext VisualAPL system is a departure from the conventional APL system in that VisualAPL is a true .Net language which behaves like other Microsoft .Net languages such as VB.Net and C#. Further, the VisualAPL language itself departs substantially from legacy APL as a means to make it suitable to .Net surroundings. VisualAPL is hosted in the standard Microsoft Visual Studio IDE and as such, invokes compilation in a manner identical to that of other .Net languages. Substantial speedups over legacy APL have been reported. Visual Basic . ...


An APL to C# translator is available from Causeway Graphical Systems. This product was designed to allow the APL code, translated to equivalent C#, to run completely outside of the APL environment. The Causeway compiler requires a run-time library of array functions. Some speedup, sometimes dramatic, is visible, but happens on account of the optimisations inherent in Microsoft's .Net framework. The title given to this article is incorrect due to technical limitations. ... Microsoft . ...


A commercial compiler was brought to market by STSC in the mid 1980s as an add-on to IBM's VSAPL Program Product. Unlike more modern APL compilers, this product produced machine code which would execute only in the interpreter environment, it was not possible to eliminate the interpreter component. The compiler could compile many scalar and vector operations to machine code, but it would rely on the APL interpreter's services to perform some more advanced functions, rather than attempt to compile them. However, dramatic speedups did occur, especially for heavily iterative APL code. Scientific Time Sharing Corporation was a pioneering timesharing and consulting service company which offered APL from its datacenter in Bethesda, MD to users in the United States and Europe. ...


Around the same time, the book An APL Compiler by Timothy Budd appeared in print. This book detailed the construction of an APL translator, written in C, which performed certain optimizations such as loop fusion specific to the needs of an array language. The source language was APL-like in that a few rules of the APL language were changed or relaxed to permit more efficient compilation. The translator would emit C code which then be compiled and run well outside of the APL workspace. Timothy A Budd and Phyl Timothy Budd is an associate professor of computer science at Oregon State University. ... C is a general-purpose, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system. ... Loop fusion is a compiler optimization, a loop transformation, which replaces multiple loops with a single one. ...


Terminology

APL makes a clear distinction between functions and operators. Functions take values (variables or constants or expressions) as arguments, and return values as results. Operators take functions as arguments, and return related, derived functions as results. For example the "sum" function is derived by applying the "reduction" operator to the "addition" function. Applying the same reduction operator to the "ceiling" function (which returns the larger of two values) creates a derived "maximum" function, which returns the largest of a group (vector) of values. In the J language, Iverson substituted the terms 'verb' and 'adverb' for 'function' and 'operator'.


APL also identifies those features built into 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.


Character set

APL has always been criticized for its choice of a unique, non-standard character set. The fact[citation needed] that those who learn it usually become ardent adherents shows that there is some weight behind Iverson's idea that the notation used does make a difference. In the beginning, there were few terminal devices which could reproduce the APL character set — the most popular ones employing the IBM Selectric print mechanism along with a special APL type element. Over time, with the universal use of high-quality graphic display and printing devices, the APL character font problem has largely been eliminated; however, the problem of entering APL characters requires the use of input method editors or special keyboard mappings, which may frustrate beginners accustomed to other languages. With the popularization of the Unicode standard, which contains the APL character set, the problem of obtaining the required fonts seems poised to go away. Kenneth Eugene Iverson (17 December 1920, Camrose, Alberta, Canada – 19 October 2004, Toronto, Ontario, Canada) was a computer scientist most notable for developing the APL programming language in 1957. ... International Business Machines Corporation (known as IBM or Big Blue; NYSE: IBM) is a multinational computer technology corporation headquartered in Armonk, New York, USA. The company is one of the few information technology companies with a continuous history dating back to the 19th century. ... The IBM Selectric typewriter (occasionally known as the IBM Golfball typewriter) is the electric typewriter design that brought the typewriter into the electronic age starting in 1961. ... An IME for inputting Japanese characters in Mac OS 9 An IME for inputting Japanese characters using Windows XPs radical IME pad An input method editor (IME) is a program or operating system component that allows computer users to enter characters and symbols not found on their keyboard. ... Unicode is an industry standard designed to allow text and symbols from all of the writing systems of the world to be consistently represented and manipulated by computers. ...


From a user's standpoint, the additional characters can give APL a special elegance and concision not possible in other languages, using symbols visually mnemonic of the functions they represent. Or it can lead to a ridiculous degree of complexity and unreadability, typically when the symbols are strung together into a single mass without any comments. Or it can be unreasonably difficult and time consuming to enter then later edit those APL statements.


APL symbols and keyboard layout

Note the mnemonics associating an APL character with a letter: question mark on Q, power on P, rho on R, base value on B, eNcode on N, modulus on M and so on. This makes it easier for an English-language speaker to type APL on a non-APL keyboard providing one has visual feedback on one's screen. Also, decals have been produced for attachment to standard keyboards, either on the front of the keys or on the top of them.

¨
1
¯
2
<
3

4
=
5

6
>
7

8

9

0
-
+
÷
×
 ?
Q

W
ɛ
E

R

T

Y

U
̾
I

O
*
P


A

S

D
_
F

G

H

J
'
K

L
(
[
)
]

Z

X

C

V

B

N
|
M
 ;
,
 :
.

/

A more up to date keyboard diagram, applicable for APL2 and other modern implementations, is available: Union layout for windows.


All APL symbols are present in Unicode (although some APL products may not yet feature this):
Unicode is an industry standard designed to allow text and symbols from all of the writing systems of the world to be consistently represented and manipulated by computers. ...

' ( ) + , - . /  :  ; < = >  ? [ ]
_ ¨ ¯ × ÷

Additional APL characters were available by overstriking one character over another. For example, the log symbol was formed by overstriking shift-P with shift-O. This complicated correcting mistakes and editing program lines. This may have ultimately been the reason for early APL programs to have a certain dense style - they were difficult to edit.


Later IBM terminals, notably the IBM 3270 display stations, had an alternate keyboard arrangement which is the basis for some of the modern APL keyboard layouts in use today. Better terminals, namely display devices instead of printers, encouraged the development of better full screen editors, which had a measurable improvement in productivity and program readability. Clemson Universitys library catalog displayed in a 3270 emulation program The IBM 3270 is a class of terminals made by IBM since 1972 (known as Display Devices) normally used to communicate with IBM mainframes. ...


See also

The following APL operators are given, separated into their monadic and dyadic forms. ... International Business Machines Corporation (known as IBM or Big Blue; NYSE: IBM) is a multinational computer technology corporation headquartered in Armonk, New York, USA. The company is one of the few information technology companies with a continuous history dating back to the 19th century. ... Clemson Universitys Library Catalog The IBM 3270 is a class of terminals made by IBM (known as Display Devices) normally used to communicate with IBM mainframes. ... A computer keyboard is a peripheral partially modeled after the typewriter keyboard. ...

Usage

APL has long had a small but fervent user base. It has been particularly popular in financial and insurance applications, in simulations, and in some mathematical applications. But APL has been used in a wide variety of contexts and for many and varied purposes. Interest in APL has steadily declined since the 1980s. This was partially due to the lack of a migration path from performant mainframe implementations to alternatives. The decline was also due in part to the success of MATLAB, an interactive array-oriented platform for scientific computing, which duplicates many of APL's features. MATLAB is a numerical computing environment and programming language. ...


Standardization

APL has been standardized by the ANSI working group X3J10 and ISO/IEC Joint Technical Committee 1 Subcommittee 22 Working Group 3. The Core APL language is specified in ISO 8485:1989, and the Extended APL language is specified in ISO/IEC 13751:2001. The American National Standards Institute or ANSI (pronounced an-see) is a nonprofit organization that oversees the development of standards for products, services, processes and systems in the United States. ... Wikipedia does not have an article with this exact name. ... The International Organization for Standardization (ISO) is an international standard-setting body composed of representatives from national standards bodies. ... The International Electrotechnical Commission (IEC) is an international standards organization dealing with electrical, electronic and related technologies. ...


Quotes

  • "APL, in which you can write a program to simulate shuffling a deck of cards and then dealing them out to several players in four characters, none of which appear on a standard keyboard." David Given
It should be noted that the quote above is not literally true. All APL algorithms that shuffle a deck of cards involve the expression 52?52 to generate the numbers from 1 through 52 in random order. That's more than four characters right there, and the question mark symbol does appear on standard keyboards.
  • "APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums." Edsger Dijkstra, 1968
It should also be noted that Dijkstra was speaking at a dinner party, and that Dijkstra was a leading proponent of "structured programming", a construct which did not exist in APL at the time. One of the basic principles of structured programming was that GOTOs were considered harmful and should be avoided; APL, on the other hand, had no control structures except the GOTO in the early years.
Rho, rho, rho of X
Always equals 1.
Rho is dimension; rho rho, rank.
APL is fun!
  • "This way of doing business was so productive that it spread like wildfire. By the time the practical people found out what had happened; APL was so important a part of how IBM ran its business that it could not possibly be uprooted. The wild-eyed researchers had produced a moneymaker." Micheal S. Montalbano 1982 (see A Personal History of APL)
  • The following amusing rhyme has been circulated as part of the fortune program in numerous UNIX installations.
'Tis the dream of each programmer
Before his life is done,
To write three lines of APL
And make the damn thing run.

Edsger Dijkstra Edsger Wybe Dijkstra (Rotterdam, May 11, 1930 – Nuenen, August 6, 2002; IPA: ) was a Dutch computer scientist. ... 1968 (MCMLXVIII) was a leap year starting on Monday. ... Row, Row, Row Your Boat is a nursery rhyme, and a popular childrens song/proverb, often sung as a round. ... Richard Matthew Stallman (often substituted as RMS) (born March 16, 1953) is an acclaimed software freedom activist, hacker, and software developer. ... Doggerel describes verse considered of little literary value. ... 1982 (MCMLXXXII) was a common year starting on Friday of the Gregorian calendar. ... fortune is a simple program that displays a random message from a database of quotes. ...

See also

The IBM Type-III Library (also: Type-III software, Type-III product) was software provided by IBM to its customers, available without charge, liability, or support, and typically (perhaps always) in source-code format. ... Operator loading a 2315 disk cartridge into the IBM 1130 computer. ... 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 Eugene Iverson (17 December 1920, Camrose, Alberta, Canada – 19 October 2004, Toronto, Ontario, Canada) was a computer scientist most notable for developing the APL programming language in 1957. ... Roger Hui was co-developer of the J Programming Language. ... K is a high level array programming language developed by Arthur Whitney, an influential APL programmer. ... Arthur Whitney is a computer scientist most notable for developing the K programming language. ... Scientific Time Sharing Corporation was a pioneering timesharing and consulting service company which offered APL from its datacenter in Bethesda, MD to users in the United States and Europe. ... Nial (from Nested Interactive Array Language) is a high-level array-based programming language developed from about 1981 by Mike Jenkins of Queens University, Kingston, Ontario, Canada. ... I. P. Sharp Associates, IPSA for short, was a major Canadian computer time sharing, consulting and services firm of the 1970s and 80s. ... Shared Variables are a feature of the APL language which allowed mainframe APL programs to communicate with other facilities on a computer, which could include external files, DBMS, or other users. ... The Iverson Award, more formally the Kenneth E. Iverson Award for Outstanding Contribution to APL, is presented by the Special Interest Group on APL (SIGAPL) of the Association for Computing Machinery (ACM). ...

References

  1. ^ Larry Breed (August 2006). "How We Got To APL1130". Vector (British APL Association) 22 (3). ISSN 0955-1433. 
  • Iverson, Kenneth E. - A Programming Language, Wiley 1962.
  • A Formal Description of SYSTEM/360, IBM Systems Journal 3:3, New York: 1964
  • Pakin, Sandra - APL360 Reference Manual, Science Research Associates, Inc. 1968. ISBN 0-574-16135-X,
  • History of Programming Languages, chapter 14
  • Gerald Jean Francis Banon - Bases da Computacao Grafica, RIO DE JANEIRO: CAMPUS, 1989. 141 p.

ISSN, or International Standard Serial Number, is the unique eight-digit number applied to a periodical publication including electronic serials. ... Kenneth Eugene Iverson (17 December 1920, Camrose, Alberta, Canada – 19 October 2004, Toronto, Ontario, Canada) was a computer scientist most notable for developing the APL programming language in 1957. ...

External links

Vendors and Organizations:

Related Dialects and Languages:

  • J is Iverson's newer array language which uses the standard ASCII font
  • A+ is a programming language with many features similar to APL and an open source implementation
  • kdb+ for high-performance relational databases
  • Simmunity is a compiled programming language based on APL designed for Internet collaborative applications

Compilers: Open source refers to projects that are open to the public and which draw on other projects that are freely available to the general public. ...

  • APL2C Compiler
  • Snake Island Research APL Compilation
  • APL to C# translator

History:

  • A Formal Description of SYSTEM/360 (1964 article by Adin D. Falkoff, Kenneth E. Iverson, Edward H. Sussenguth)
  • An APL Machine (1970 Stanford doctoral dissertation by Philip Abrams)
  • The Design of APL (1973 article by Adin D. Falkoff and Kenneth E. Iverson)
  • A Personal History Of APL (1982 article by Micheal S. Montalbano)
  • The IBM Family of APL Systems (1991 article by Adin D. Falkoff)
  • A Personal view of APL (1991 article by Kenneth E. Iverson)

Applications: Kenneth Eugene Iverson (17 December 1920, Camrose, Alberta, Canada – 19 October 2004, Toronto, Ontario, Canada) was a computer scientist most notable for developing the APL programming language in 1957. ...

  • OOPAL: Integrating Array Programming in Object-Oriented Programming
  • An introduction to Object Oriented APL
  • Comparison of Black-Scholes options pricing model in many languages, including APL
  • System Building with APL + Win

Personal Views:

  • by Brad McCormick
  • by Rex Swain
  • by Eric Lescasse
  • Sam Sirlin's APL FAQ (Frequently Asked Questions list) plus link to versions of Budd's compiler

  Results from FactBites:
 
APL programming language (551 words)
APL (for A Processing Language, or sometimes Array Processing Language) is a programming language invented in 1962 by Kenneth E. Iverson while at Harvard University.
Unlike traditional structured programming languages, code in APL is typically structured as chains of monadic or dyadic operators acting on arrays.
APL is renowned for using a set of non-ASCII symbols that are an extension of traditional arithmetic and algebraic notation.
  More results at FactBites »


 

COMMENTARY     


Share your thoughts, questions and commentary here
Your name
Your comments
Please enter the 5-letter protection code

Want to know more?
Search encyclopedia, statistics and forums:

 


Lesson Plans | Student Area | Student FAQ | Reviews | Press Releases |  Feeds | Contact
The Wikipedia article included on this page is licensed under the GFDL.
Images may be subject to relevant owners' copyright.
All other elements are (c) copyright NationMaster.com 2003-5. All Rights Reserved.
Usage implies agreement with terms.