APL (programmeringssprog)

APL (som står for A Programming Language, alternativt Array Programming Language) er et fortolket programmeringssprog oprindeligt udviklet af Kenneth E. Iverson da han var ved Harvard University og siden videreudviklet af IBM. Dets styrke er behandling af matricer og vektorer gennem specielle kommandotegn, der nødvendiggør specielle symboler. Notationen anvendtes bl.a. til at beskrive arkitekturen for IBM System/360.

Iverson modtog i 1979 en "Turing Award" for sit arbejde med APL.

Historie 
Iverson udgav sin notation i en bog med titlen A programming Language 1962. I 1964 blev en delmængde af notationen implementeret som et programmeringssprog. I starten af 1980'erne præsenterede IBM en betydeligt generaliseret og udvidet version som man kaldte APL2. Indtil den anden halvdel af 1980'erne var IBM den dominerende leverandør af APL implementeringer. I starten af 1990'erne udviklede flere mindre virksomheder konkurrerende versioner af sproget, bl.a. APL2000 fra STSC og Dyalog APL fra Dyalog Ltd og disse versioner har siden på forskellig vis videreudviklet sproget.

Iverson konstruerade en efterfølger til APL kaldet "J" som kun anvender ASCII. Der findes andre sprog der har funktionalitet i stil med APL. "A+" er et open source-programmeringssprog der deler mange kommandoer med APL.

Eksempel 
Følgende APL-program finder alle primtal fra 2 til 6:

Dette er hvad der sker hvis R sættes til 6 (læst fra højre mod venstre):
 Variablen R tildeles værdien 6 (tildelnings-primitivet )
 En vektor med værdierne fra 1 til 6 dannes (funktionen )
 Element nr 1 fra venstre (her tallet 1) i denne vektor fjernes (funktionen  )
 Den på denne måde reducerade vektor tildeles variabelen R. (tilldelnings-primitivet  ). Læg mærke til at den samme variabel kan tildeles helt andre datatyper under programmets udførsel, i dette tilfælde først heltallet 6 og derefter vektoren (2,3,4,5,6)
 Til venstre for R står reduktionsfunktionen, / , med et udtryk i parenteser yderligere til venstre.
 Parentesen udføres først. Beregn det ydre produkt R multipliceret med R, dvs. i dette tilfælde en matrice med 5 x 5 elementer hvor elementi j er Ri x Rj (ydre produkt funktionen  dannes med operatoren  anvendt på funktionen ), f.eks.

 Dan en vektor med samme længde som vektoren R, hvor elementet er 1 hvis et element i R også findes i ydre produkts matricen, ellers 0. I dette tilfælde vektoren (0,0,1,0,1). ("tilhører"-funktion )
 Inverter denne vektor, dvs. byt 0 med 1 og 1 med 0 (negerings-funktionen ). Parentesen indeholder nu en vektor med værdierne (1,1,0,1,0).
 Nu til reduktionsfunktionen / . Udvælg de elementer i vektoren R hvor det tilsvarende element i den netop dannede vektor er lig med 1. Vi får vektoren (2,3,5)
 Udskriv resultatet (sker automatisk. Resultatet af en linje i et APL-program skrives ud, hvis ikke den sidste operation er tildelings-primitivet)

Referencer

Eksterne henvisninger 

 SIGAPL  - SIGPLAN Chapter on Array Programming languages
 APL Wiki 
 APL2C , a source of links to APL compilers
 TryAPL.org , an online APL primer
 Vector , the journal of the British APL Association
 Dyalog APL 
 IBM APL2 
 APL2000 
 NARS2000
 GNU APL 
 OpenAPL 

Programmeringssprog