-{APL}- (skraćenica izvedena prema knjizi )Ajverson, Kenet E. . A Programming language . Izdavač -{Wiley}-. je programski jezik razvijen 1960-ih od strane Кеnet J. Ajverson-a. Glavni tip podatak sa kojim se barata u APL-u su višedimenzioni nizovi. Koristi veliki spektar grafičkih simbola za predstavljanje funkcija i operatora, što je dovelo do veoma konciznog koda. Imao je značajan uticaj na razvoj koncepta modeliranja, tabela, funkcionalnog programiranja"ACM Award Citation – John Backus. 1977". -{Awards.acm.org}-. 1924-12-03. Preuzeto 2010-02-03. i raznih matematičkih paketa. Takođe je inspirisao razvoj nekoliko drugih programskih jezika, a i danas se koristi za razvoj određenih aplikacija.

Istorijat

Matematička notacija za rad sa nizovima koja je narasla u APL programski jezik razvijana je od strane Кеnet Ј. Ајverson-a na Harvard univerzutetu od 1957. a objavljena u njegovoj knjizi -{A Programming language}- 1962. godine. U predgovoru te knjige piše:Primenjena matematika se uglavnom bavi dizajnom i analizom eksplicitnih postupaka za izračunavanje tačne ili približne vrednosti različitih funkcija. Takve eksplicitne procedure nazivaju se algoritmi ili programi.

Godine 1960. počeo je da radi za IBM i u saradnji sa Adinom Falkofom napravio je APL, na osnovu notacije koju je razvio. Ova notacija je korišćena u IBM-u za kratke istraživačke izveštaje o računarskim sistemima kao što su -{Burroughs B5000}- (o njegovim stek mehanizmu).

Godine 1963. Herbert Helerman je radeći na IBM institutu za istraživanje sistema implementirao deo ove notacije na IBM-ov kompjuter IBM 1620, a to je korišćeno od strane učenika na specijalnom kursu u srednjoj školi. Učenici su testirali svoj kod u Helerman-ovoj laboratoriji. Ova implementacija dela notacije APL-a je nazvana PAT(Personalizovani -{array}- prevodilac).-{Helerman, H., "Experimental Personalized Array Translator System", Communications of the ACM}-, 7, 433 (Jul, 1964).

Iste godine Falkof, Ajverson i Edvard H. Susengut () (svi radili u IBM-u) koristili su ovu notaciju za formalni opis arhitekture i funkcionalnosti IBM System/360Falkof, Edin; Ajverson, Kenet E., "APL\360 Users Guide", -{IBM Research, Thomas J. Watson}- istraživački centar, -{Yorktown Heights, NY}-, Avgust 1968. mejnfrejm računara, što je objavljeno 1964. godine. Nakon sto je ovo objavljeno, tim je usmerio svu svoju pažnju na implementaciju ove notacije na kompjuterski sistem. Jedan od motiva za ovaj pravac implementacije bio je i interes Džona L. Lorensa-a () koji je imao zaduženja u jednom udruženju koje se bavilo obrazovanjem, a koje je kupio IBM 1964. godine. Lorens je pitao Ajversona i njegovu grupu za pomoć pri korišćenju programskih jezika kao sredstva za razvoj i upotrebu računara u obrazovanju.Falkof, Edin D.; Ajverson, Keneth E., The evolution of APL, -{ACM SIGPLAN Notices}- 13, 1978-08.

мини|IBM kugla (jedan OCR) sa APL karakterima, Novčić radi upoređivanja

Nakon što su se Lorens M. Brid i Filip S. Abrams sa Stanford univerziteta priključili timu u IBM-u, oni su nastavili svoj primarni rad na implementaciji programiranoj u Fortran-u IV za deo notacije, koji je bio urađen za IBM-ov kompjuter IBM 7090 koji je radio pod IBSYS operativnim sistemom. Ovaj posao bio je završen krajem 1965. i kasnije je bio poznat pod imenom IVSYS(). Kao Helerman-ov PAT sistem ranije, ova implmentacije nije uključivala APL skup karaktera, ali je koristila specijalne rezervisane reči na engleskom jeziku za funkcije i operatore. Sistem je kasnije adaptiran na sistem deljenja vremena () i od novembra 1966. godine bio je reprogramiran za IBM System/360 Model 50, kompjuter koji je radio u režimu deljenja vremena i bio korišćen unutar IBM-a.-{Haigh, Tomas, "Biographies: Kenneth E. Iverson", IEEE Annals of the History of Computing}-, 2005

Ključna stvar za efektivno korišćenje APL-a, pre široko rasprostranjene upotrebe CRT-terminala, bio je razvoj -{IBM Selectric}- pisaće mašine sa zamenljivim kuglama i svim APL karakterima na njima. Ovi karakteri mogu da se postave na tastaturu preko standardnih karaktera i da se vidi koji se karakter dobije pritiskom na koji taster. Po prvi put su programeri mogli da koriste prave APL karaktere iz Ajversonove notacije a ne nezgodne engleske ključne reči koje su ih predstavljale. Ajverson navodi Falkofa kao inspiraciju da uvede u upotrebu -{IBM Selectric}- kuglu za kucanje.Edin Falkof - Muzej istorije kompjutera. "Ajverson je njemu davao zasluge za biranje imena APL i prve verzije kugle sa APL karakterima na njoj."

мини|центар|600px|Tastatura sa APL karakterima na tasterima

IBM je bio prvenstveno odgovoran za uvodjenje APL-a na tržište. APL je bio dostupan 1967. za IBM 1130 kao APL/1130. APL je dobio svoje uporište na mejnfrejm sistemima deljenja vremena od kraja 1960-ih do početka 1980-ih. Nešto kasnije, odgovarajuće rešenje hardvera je postalo dostupno na tržištu, pa su sredinom i krajem 1980-ih mnogi korisnici preselili svoje aplikacije na okruženje personalnih računara.

Godine 1973. IBM je objavio APL.SV koji je bio naslednik istog proizvoda, ali koji je ponudio zajedničke promenljive kao sredstvo za pristup objektima van APL sistema, kao što su datoteke operativnih sistema. Sredinom 1970-ih IBM mejnfrejm interpretator je čak prilagođen za upotrebu na IBM 5100 stonom računaru, koji je imao mali CRT i APL tastaturu, kada je većina drugih malih računara toga vremena samo obezbeđivala osnovnu.

1973—1974. godine Dr. Patrik E. Hagerti () usmerava implementaciju APL interpretatora univerziteta Merilend na -{Sparry Univac 1100/2200series}- mejnfrejm kompjuter. U to vreme -{Sparry}- nije imao ništa. Godine 1974. student Alen Stebens () je dobio zadatak da implementira internu funkciju.

Nekoliko tajmšering firmi je nastalo 1960-ih i 1970-ih i one su prodavale APL usluge koristeći modifikovanu verziju IBM APL\360 interpretatora.U Severnoj Americi poznatiji su: -{I. P. Sharp Associates}-, -{STSC}-, -{Time Sharing Resources (TSR)}- i -{The Computer Company (TCC)}- i drugi.Remembering APL. -{Quadibloc.com}-. Preuzeto 2013-06-17.

APL je bio dostupan kako komercijalnom tržištu, tako i preko informacionog centra za potrošače. Sa prvim dolaskom jeftinih mejnfrejm računara, kao što su IBM 4300 i kasnije PC, APL se razvijao.

Šarp APL () je napredna verzija APL implementacije sa mnogo jezičkih ekstenzija, kao i paketa (sposobnost da stavi jedan ili više objekata u jednu promenljivu, sistem datoteka, ugnježdeni nizovi, deljene promenljive itd.). APL prevodioci su bili dostupni od drugih mejnfrejm i mini računara, kako što su Burroughs, CDC, Data General, DEC, Harris, Hewlett-Packard, Siemens AG, Xerox i drugi.

Godine 1979. Ajverson je dobio Tjuringovu nagradu za svoj rad na APL-u.

Dodaci

Mnoge implementacije APL-a, od APLX, Dyalog-a i drugih, uključuju dodatke za objektno-orijentisano programiranje, podržavaju .NET , XML, primitivne konverzije nizova, grafiku, interfejse operativnih sistema i lambda izraza.

Dizajn

Za razliku od tradicionalno strukturiranih programskih jezika, APL kod je obično strukturiran kao niz operatora,-{MicroAPL}-. Operatori. http://www.microapl.co.uk. -{MicroAPL}-. Preuzeto 12 Januara 2015. -{External link in}- |website= unarnih i binarnih funkcija, koje se primenjuju na nizove. APL ima mnogo nestandardnih primitivnih funkcija i operatora koji su označeni jednim ili kombinacijom nekoliko simbola. Svi ovi imaju isti prioritet i desnu asocijativnost, što znači da se APL kod čita zdesna na levo.

Rane implementacije nisu imale strukturu kontrole toka, kao što su "-{do}-", "-{while}-" i "-{if-then-else}-" konstrukciju. Umesto toga one su koristile operacije nad listama, gde se cela operacija može zapisati u jednoj liniji. Novije implementacije APL-a uključuju strukture kontrole toka, tako da se podaci i kontrola toka programa mogu jasno razdvojiti.

U radnom prostoru korisnik može definisati programe i podatke, ali vrednosti podataka postoje i van programa i korisnik može da ih koristi bez pisanja koda. U primerima ispod APL prvo ispiše šest belilna dok čeka unos korisnika. Izlaz počinje u prvoj kolini. Korisnik može da sačuva radni prostor sa svim vrednostima, programima i statusom izvršavanja.

n ← 4 5 6 7 Dodeljuje vektor vrednosti (4, 5, 6 ,7) promenljivoj -{n}-, operacija za kreiranje nizova. n 4 5 6 7 Prikazuje sadržaj -{n}-, trenutno niza ili vektora. n+4 8 9 10 11 4 se dodaje na sve elemente vektora -{n}-, kreirajući vektor dužine 4 (8, 9, 10, 11). +/n 22APL prikazuje sumu komponenti vektora -{n}-, npr. 22=(4+5+6+7), koristeći veoma kompaktnu notaciju. m ← +/(3+⍳4) m 22 Ove operacije mogu se izvesti i jednom jedinom naredbom.

APL je poznat po tome što koristi skup ne--{ASCII}- karaktera. APL omogućava kompaktnu formulaciju algoritma. U gotovo svakoj verziji APL-a, teoretski je moguće napisati svaku funkciju jednim izrazom, tj. u jednoj liniji koda.

Zbog neobičnog skupa karaktera mnogi programeri koriste posebne tastature sa APL karakterima na tasterima za pisanje APL kodova.APL Simboli. Entering APL Symbols. Preuzeto 1 Januara 2015. Iako postoje različiti načini da se APL kod napiše samo korišćenjem -{ASCII}- karaktera, to se u praksi skoro nikada ne radi. Većina novijih implementacija koristi standardne rasporede na tastaturi, sa posebnim metodama za pristup ne--{ASCII}- karakterima. APL font je karakterističan sa velikim italik karakterima, uspravnim brojevima i simbolima. Većina prevodilaca i dalje prikazuje APL skup karaktera u prilagođenom fontu.

Zagovornici APL-a tvrde da se takozvani "-{write-only code}-" (loše napisan i gotovo neshvatljiv kod) može skoro uvek pripisati lošem programiranju ili početničkoj grešci i da se može desiti u bilo kom programskom jeziku. Takođe kažu da su mnogo produktivniji sa APL-om nego sa konvencionalnim programskim jezicima, kao i da se projekti mogu realizovati sa daleko manje programera i za daleko manje vremena.

APL je pogodan i za razvijanje kompleksnog softvera, jer broj linija koda može drastično da se smanji. Mnogi ljubitelji APL-a takođe smatraju standardne jezike kao što su -{COBOL}- ili Јаvа dosadnim.

Izvršavanje

APL je pogodan jezik za paralelizaciju.

Interpretatori

-{APL Next}-(pre APL2000) nudi napredni APL interpretator koji radi pod Linuksom, Uniksom() i Windows-om. Ima napredni APL sistem i predstavlja trenutni nivo razvoja APL jezika.

Dyalog APL je napredni APL interpreter koji radi pod AIX-om, Linuksom, Mac OS-om, i Majkrosoftovim Windows-om.Dyalog APL Dyalog ima dodatke APL jeziku koji koriste nove objektno-orijentisane mogućnosti, brojna poboljšanja jezika, korišćenje prostora imena i druge. Za Windows platformu Dyalog APL je tesno povezan sa .NET platformom, a postoji i određena interpretacija za Majkrosoft Vižual Studio () razvojnom platformom.

IBM nudi svoju verziju IBM APL2 za IBM AIX, Linuks, Sun Solaris i Windows sistem. Ovaj proizvod je naslednik APL2 ponuđenog za IBM mejnfrejm računare. IBM APL2 je najverovatnije najuticajniji APL sistem.

NARS2000 je -{open-source}- APL interpretator napisan od strane Boba Smita, poznatog APL programera. Sadrži nove tipove podataka, radi primarno pod Windows-om(32-bitna i 64-bitna verzija), a radi i pod Linuksom i Epl Mac OS-om () sa -{Wine}--om.

-{Micro APL Limited}- nudi APLX, potpuno funkcionalan 64-bitni prevodilac za Linuks, Microsoft Windows i Mac OS sistem. Jezgro jezika je po uzoru na IBM-ov APL2 sa brojnim poboljšanjima. APLX je usko povezan sa .NET , javom, R-om i drugima.

Open APL je open-source implementacija APL-a objavljena od strane Branka Bratkovića. Baziran je na kodu Kena Tompsona iz Belovih laboratorija, a i na osnovu doprinosa drugih ljudi koji su u implementaciji učestvovali. Licenciran je od strane GNU General javne licence i radi pod Uniks sistemima uključujući Linuks sa x86 -{SPARC}- i drugim procesorima.