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
[redigér | rediger kildetekst]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
[redigér | rediger kildetekst]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.
4 | 6 | 8 | 10 | 12 |
6 | 9 | 12 | 15 | 18 |
8 | 12 | 16 | 20 | 24 |
10 | 15 | 20 | 25 | 30 |
12 | 18 | 24 | 30 | 36 |
- 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
[redigér | rediger kildetekst]- ^ 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.
- ^ 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.
- ^ 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.
- ^ 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) - ^ "Turing Award Citation 1979". Awards.acm.org. Arkiveret fra originalen 1. december 2017. Hentet 27. november 2017.
Eksterne henvisninger
[redigér | rediger kildetekst]- SIGAPL Arkiveret 9. februar 2012 hos Wayback Machine - SIGPLAN Chapter on Array Programming languages
- APL Wiki Arkiveret 10. februar 2011 hos Wayback Machine
- APL2C Arkiveret 13. juli 2015 hos Wayback Machine, a source of links to APL compilers
- TryAPL.org Arkiveret 29. november 2020 hos Wayback Machine, an online APL primer
- Vector Arkiveret 20. september 2016 hos Wayback Machine, the journal of the British APL Association
- Dyalog APL Arkiveret 22. november 2020 hos Wayback Machine
- IBM APL2 Arkiveret 4. august 2008 hos Wayback Machine
- APL2000 Arkiveret 26. august 2020 hos Wayback Machine
- NARS2000Arkiveret 12. september 2013 hos Wayback Machine
- GNU APL Arkiveret 10. januar 2016 hos Wayback Machine
- OpenAPL Arkiveret 4. april 2019 hos Wayback Machine
Spire 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. |