Associative Programming Language

{{distinguish|APL (programming language)}}

The Associative Programming Language (APL) is a database language developed by General Motors Research Laboratories in 1966.{{Citation

| last = Price

| first = Carol

| contribution = APL/VAAM

| year = 1978

| title = NASA Conference Publication 2055: Engineering and Scientific Data Management

| publisher = NASA

| contribution-url = https://ntrs.nasa.gov/api/citations/19780025833/downloads/19780025833.pdf

| pages=85–97

}}

APL was developed to provide high-level language data access and manipulation functions to support GM's CADANCE interactive computer graphics system. It was designed to integrate with PL/I.{{cite book |last1=Bachman |first1=Charles |chapter=An interview with Charles W. Bachman |chapter-url=https://dl.acm.org/doi/abs/10.1145/1141880.1141882 |title=ACM Oral History interviews |date=January 2006 |doi=10.1145/1141880.1141882 |isbn=978-1-4503-1771-9 |access-date=June 29, 2024}}"George [Dodd] built a very attractive IDS like system, called 'Associative Programming Language' (APL)"{{cite book|last1=Dodd |first1=George G. |chapter=APL: A language for associative data handling in PL/I |title=AFIPS '66 (Fall): Proceedings of the November 7-10, 1966, fall joint computer conference|date=November 1966 |pages=677–684 |doi=10.1145/1464291.146436 |doi-broken-date=1 November 2024 |isbn=978-1-4503-7893-2 |chapter-url=https://dl.acm.org/doi/10.1145/1464291.1464363 |access-date=July 2, 2024}}

The underlying database is assumed to follow the network model. GM's first database manager was implemented via linked lists, but in 1977 the "Virtual Associative Access Manager" {VAAM) was developed to use virtual storage and implementing entity relationships as arrays.{{rp|p.86}} APL was later ported to the MCTS operating system.

Description

APL consists of six statements, CREATE, INSERT, FIND, FOR EACH, REMOVE, and DELETE,{{rp|p.85}} and miscellaneous functions such as counting the number of members in a set, determining the length or type of an entity, or locating an entity by name.{{rp|p.95}}

  • Create is a synonym for Allocate. It causes storage to be allocated for a based variable. A file or set where the data is to be allocated may be specified.
  • Delete is a synonym for Free. Delete frees a based variable and optionally removes it from all sets of which it is a member.
  • Find locates an entity that is a member of a set or container based on specified conditions. An optional ELSE clause is executed if no entities are found.
  • For Each heads a group of statements to be executed for all entities or sets matching a specified condition.
  • Insert inserts an entity into a specified set. Optionally, the placement of the new entity relative to other elements of the set may be specified.
  • Let sets a locator variable to reference a specified set.
  • Remove removes an entity from a set.

Implementation

APL statements were implemented as PL/I preprocessor macros, which translated into calls to the database manager. Later GM's Apple PL/I dialect supported APL directly in the language.

References