APL (programmeringssprog)

For alternative betydninger, se APL. (Se også artikler, som begynder med APL)

APL (som står for A Programming Language, alternativt Array Programming Language)[1] 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.[2][3] Notationen anvendtes bl.a. til at beskrive arkitekturen for IBM System/360.[4]

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

Historie

Iverson udgav sin notation i en bog med titlen A programming Language 1962.[1] I 1964 blev en delmængde af notationen implementeret som et programmeringssprog.[3] 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.
4681012
69121518
812162024
1015202530
1218243036
  • 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

  1. ^ a b Iverson, Kenneth E. (1962). A Programming Language. Wiley. ISBN 0-471-43014-5. Arkiveret fra originalen 27. oktober 2014. Hentet 27. november 2017.
  2. ^ McIntyre, Donald B. (1991). "Language as an Intellectual Tool: From Hieroglyphics to APL". IBM Systems Journal. 30 (4): 554-581. doi:10.1147/sj.304.0554. Arkiveret fra originalen 4. marts 2016. Hentet 27. november 2017.
  3. ^ a b A. D. Falkoff, K. E. Iverson (1973). "The design of APL". IBM Journal of Research and Development. 17 (4): 324-334. doi:10.1147/rd.174.0324. Arkiveret fra originalen 13. april 2018. Hentet 27. november 2017.
  4. ^ Falkoff, A.D., Iverson, K.E., Sussenguth, E.H. (1964). "A formal description of SYSTEM/360" (PDF). IBM Systems Journal. 3 (2): 198-261. doi:10.1147/sj.32.0198. Arkiveret (PDF) fra originalen 3. marts 2016. Hentet 27. november 2017.{{cite journal}}: CS1-vedligeholdelse: Flere navne: authors list (link)
  5. ^ "Turing Award Citation 1979". Awards.acm.org. Arkiveret fra originalen 1. december 2017. Hentet 27. november 2017.

Eksterne henvisninger

ProgrammeringSpire
Denne artikel om datalogi eller et datalogi-relateret emne er en spire som bør udbygges. Du er velkommen til at hjælpe Wikipedia ved at udvide den.