I 10 articoli

Odnoklassniki.ru
Hotmail
Vkontakte.ru
Musica sui Sopranos
GayRomeo
Goole
Btjunkie
ICD-10
Starbucks
Slum

News:

APL (linguaggio di programmazione)

APL
Paradigma allineamento, funzionale, strutturato, modulare
Comparso dentro 1964
Progettato vicino Kenneth E. Iverson
Sviluppatore Kenneth E. Iverson
Disciplina di battitura a macchina dinamico
Esecuzioni importanti IBM APL2, Dyalog APL, APL2000, APL tagliente
Dialetti A+, Dyalog APL, APLNext
Influenzato vicino notazione matematica
Influenzato J, K, Nial

APL (A Programming Lil anguage) è programmazione di allineamento lingua basata su una notazione inventata in 1957 vicino Kenneth E. Iverson mentre a Università di Harvard. Ha iniziato come tentativo di fornire la notazione costante per l'insegnamento e l'analisi dei soggetti relativi all'applicazione dei calcolatori. Iverson ha pubblicato la sua notazione in 1962 in un libro nominato Un linguaggio di programmazione. Entro 1965, un sottoinsieme della notazione è stato effettuato come linguaggio di programmazione, quindi è stato conosciuto come IVSYS. Più successivamente, prima del relativo rilascio commerciale, l'APL ha ottenuto il relativo nome dal titolo del libro. Iverson ha ricevuto Premio di Turing in 1979 per il suo lavoro.

La notazione del Iverson più successivamente è stata usata per descrivere IBM System/360 lavori l'architettura alla macchina, una descrizione molto più concisa ed esatta che la documentazione attuale e rivelare parecchi problemi precedentemente inosservati. Più successivamente, a Selectric il typeball è stato destinato specialmente per scrivere una rappresentazione lineare di questa notazione. Questa funzione distintiva di APL, l'uso di una serie di caratteri speciale che descrive visivamente i funzionamenti da effettuare, rimane oggi fondamentalmente immutata.

Le caratteristiche di lingua di APL un insieme ricco dei funzionamenti che lavorano ad intero allineamenti dei dati, come l'insieme delle istruzioni di vettore della a SIMD architettura. Mentre molti linguaggi di programmazione richiederebbero ripetizione a, per esempio, aggiunga insieme tipicamente due allineamenti, funzioni nell'affare di APL con gli interi allineamenti immediatamente. Insieme con una serie di caratteri speciale in cui i glyphs rappresentano i funzionamenti da effettuare, questo drasticamente riduce il numero potenziale di cicli e tiene conto più piccolo, programmi più concisi e più compatti.

Come con tutti i linguaggi di programmazione che hanno avuti parecchie decadi di uso continuo, l'APL si è evoluto significativamente, generalmente in un modo verso l'alto-compatibile, dai relativi rilasci più in anticipo. L'APL è solitamente interpretativo e interattivoe caratterizza normalmente legg-valut-stampano il ciclo (REPL) per l'input di espressione e di ordine. Oggi, quasi tutto il supporto moderno di esecuzioni programmazione strutturata mentre parecchi dialetti ora caratterizzano certa forma di orientato oggettivamente costruzioni di programmazione.

Indice

Storia

Il primo incarnation di che cosa era successivamente essere il linguaggio di programmazione di APL era un libro che descrive una notazione inventata in 1957 vicino Kenneth E. Iverson mentre a Università di Harvard. Pubblicato in 1962, la notazione descritta nel libro era riconoscibile tuttavia distante da APL.

IBM era principalmente responsabile dell'introduzione di APL al mercato. In 1965, una parte della notazione è stata ripresa ed effettuato come linguaggio di programmazione. L'APL era in primo luogo disponibile in 1967 per IBM 1130 As APL \ 1130[1]. L'APL ha guadagnato il relativo appiglio sui sistemi a divisione di tempo dell'elaboratore centrale dagli anni 60 tardi con gli anni 80. Più successivamente, quando adeguatamente effettuare i fissaggi era cominciare infine disponibile nel in anticipo ai mid-1980s, molti utenti ha migrato le loro applicazioni all'ambiente del personal computer.

Interpretatori in anticipo di IBM APL per IBM 360 e IBM 370 i fissaggi hanno effettuato la loro propria amministrazione multiutente invece di contare sui servizi host, così erano sistemi a divisione di tempo nella loro propria destra. In primo luogo introdotto in 1966, APL \ 360 il sistema era un interpretatore multiutente. In 1973, IBM si è liberato APL.SV quale era una continuazione dello stesso prodotto, ma che ha offerto variabili comuni come il mezzo accedere alle facilità fuori del sistema di APL, quale il sistema operativo archivia. Nei metà di anni 70, l'interpretatore dell'elaboratore centrale di IBM persino è stato adattato per uso sul IBM 5100 calcolatore desktop, che ha avuto un piccolo a tubo catodico e una tastiera di APL, quando la maggior parte degli altri piccoli calcolatori del tempo hanno offerto soltanto il BASIC. Negli anni 80, VSAPL il prodotto di programma ha goduto l'uso diffuso con CMS, TSO, VSPCe CICS utenti.

Parecchie ditte timesharing si sono generate negli anni 60 e negli anni 70 che hanno venduto i servizi di APL usando le versioni modificate dell'interpretatore l'APL \ 360 di IBM. In America del Nord, quelle migliore-sapute erano I. P. Soci di Sharp, Scientific Timesharing Corporatione l'azienda di calcolatore (TCC). Con l'avvenimento in primo luogo degli elaboratori centrali meno costosi come IBM 4331 e successivamente il personal computer, l'industria timesharing ha avuto tutti solo sparito entro i metà di anni 80.

APL tagliente era disponibile da I. P. Soci di Sharp, in primo luogo su una base timesharing negli anni 60 e più successivamente come prodotto di programma che inizia intorno 1979. APL tagliente era un'esecuzione avanzata di APL con molte estensioni di lingua, come pacchetti (la capacità di mettere uno o più oggetti in una singola variabile), il sistema di lima, ha annidato gli allineamenti e variabili comuni.

Gli interpretatori di APL erano disponibili dall'altro elaboratore centrale ed il miniordinatore produce pure, considerevolmente Burroughs, CDC, Data General, Dicembre, Harris, Hewlett-Packard, Siemens, Xeroxed altri.

APL2

Iniziando nell'inizio degli anni 80, sviluppo di IBM APL, sotto la direzione del Dott Colore marrone del Jim, effettuato una nuova versione della lingua di APL di cui ha contenuto come relativo aumento primario il concetto allineamenti annidati dove un allineamento può contenere altri allineamenti, più le nuove caratteristiche di lingua che hanno facilitato l'integrazione degli allineamenti annidati nel workflow di programma. Ken Iverson, più nel controllo dello sviluppo della lingua di APL, IBM di sinistra ed unito I. P. Soci di Sharp dove, tra l'altro, ha diretto lo sviluppo di APL tagliente per essere più secondo la sua visione. Iverson più successivamente ha sviluppato Lingua di J.

Poichè altri fornitori erano occupati interpretatori svilupparsi di APL per nuovi fissaggi, considerevolmente Unix- basato microcomputer, APL2 era quasi sempre il campione scelto per i nuovi sviluppi dell'interpretatore di APL. Anche oggi, la maggior parte dei fornitori di APL citano la compatibilità APL2, che si avvicina soltanto a 100%, come punto di vendita per i loro prodotti.

APL2 per IBM le unità centrale di un ordinatore è ancora oggi disponibile ed erano in primo luogo disponibili per CMS e TSO intorno 1980. L'edizione della stazione di lavoro APL2 (Windows, OS/2, AIX, Linux e Solaris) è seguito molto più successivamente nell'inizio degli anni 90.

Microcomputer

La prima esecuzione del microcomputer di APL era sul MCM/70, 8008- processor basato, in 1973. A Piccolo APL per Intel 8080 EMPL denominati sono stati liberati in 1977 e in Softronics APL, con la maggior parte delle funzioni di APL completo, dato che 8080 sistemi basati di CP/M sono stati liberati in 1979.

In 1977, è stato liberato un livello APL di affari conosciuto come TIS APL, basato sul processor Z80. Ha caratterizzato l'insieme completo delle funzioni della lima per APL, più uno schermo pieno immesso e la commutazione di giuste e discussioni di sinistra per la maggior parte dei operatori diadici introducendo il ~. prefisso a tutte le funzioni diadiche del singolo carattere come - o a/.

L'avanguardia APL era disponibile per Z80 CP/M- processor basati verso la fine degli anni 70. TCC ha liberato APL.68000 nell'inizio degli anni 80 per Motorola 68000- processor basati, questo sistema che è la base per il prodotto limitato di MicroAPL APLX. I. P. I soci di Sharp hanno liberato una versione del loro interpretatore di APL per il pc e il PC/370 di IBM - per il pc di IBM, emulatore è stato scritto che ha facilitato reusing gran parte del codice dell'elaboratore centrale di IBM 370. Discutibilmente, l'interpretatore di APL più noto per il personal computer di IBM era STSC's APL*Plus/PC.

Nell'inizio degli anni 80, i Analogic Corporation si sono sviluppati La macchina di APL, che era trattamento matriciale il calcolatore ha progettato essere programmato soltanto nell'APL. Ci erano realmente tre unità di elaborazione, la stazione di lavoro dell'utente, PC DI IBM, dove i programmi sono stati seguiti e pubblicato stati, Motorola 6800 processor che ha fatto funzionare l'interpretatore di APL ed il processor di allineamento Analogic che ha eseguito i primitivi. Ai tempi della relativa introduzione la macchina di APL era probabile il sistema di APL più veloce disponibile. Anche se un successo tecnologico, la macchina di APL era un guasto di vendita. La versione iniziale ha sostenuto un singolo processo alla volta. Quando il progetto è stato interrotto, il disegno era stato completato per permettere gli utenti multipli. Come divagazione, una funzione insolita della macchina di APL era che la biblioteca dei luoghi di lavoro è stata organizzata tali che una singola funzione o variabile che sono state ripartite da molti luoghi di lavoro ha esistito soltanto una volta nella biblioteca. Vari dei membri del progetto della macchina di APL precedentemente avevano speso un certo numero di anni con effettuare del Burroughs APL \ 700.

In una fase, Microsoft Corporation ha progettato liberare una versione di APL, ma questi programmi non si sono attuati mai.

Una pubblicazione all'inizio del 1978 di Rodnay Zaks da Sybex era Un'esecuzione microprogrammata di APL ISBN 0895880059 quale è l'elenco completo e totale di fonte per il microcodice per un PDP/processor LSI-11 che effettua l'APL. Ciò può essere la sostanza della sua tesi di PhD.

Descrizione

[ricerca originale?]

Sopra un insieme molto largo dei dominii di problema (per la matematica, scienza, ingegneria, disegno del calcolatore, automatismo, visualizzazione di dati, scienza attuariale, DP tradizionale, ecc.) l'APL è estremamente un potente, espressivo ed il linguaggio di programmazione conciso, si è regolato tipicamente in un ambiente interattivo. Originalmente è stato generato, tra l'altro, come senso descrivere i calcolatori, esprimendo notazione matematica in un senso rigoroso che potrebbe essere interpretato da un calcolatore. È facile da imparare ma alcuni programmi di APL possono occorrere un certo tempo capire, particolarmente per un nuovo venuto. Pochi altri linguaggi di programmazione offrono la funzionalità completa di allineamento di APL.

Diverso dei linguaggi di programmazione tradizionalmente strutturati, il codice nell'APL è strutturato tipicamente come catene di monadic o diadico funzioni e operatori comportarsi sopra allineamenti. Poichè l'APL ha molti non standard primitivi (funzioni ed operatori, indicati tramite un singolo simbolo o una combinazione di alcuni simboli), non ha funzione o precedenza di operatore. Le esecuzioni iniziali di APL non hanno avute controlli le strutture (faccia o mentre cicli, se-allora-altri), ma usando i funzionamenti di allineamento, uso di programmazione strutturata le costruzioni erano necessarie solo. Per esempio, la funzione di iota (che rende un allineamento unidimensionale, o vettore, da 1 a N) può sostituire il per-ciclo ripetizione. Le esecuzioni più recenti di APL includono generalmente le strutture complete di controllo, così il flusso della struttura di dati e di controllo di programma può essere chiaramente ed in modo pulito ha separato.

L'ambiente di APL è denominato a luogo di lavoro. In un luogo di lavoro l'utente può definire i programmi ed i dati, cioè. i valori di dati esistono inoltre fuori dei programmi e l'utente può maneggiare i dati senza la necessità per definire un programma. Per esempio,

assegna vettore valori 4 5 6 7 a N;

aggiunge 4 a tutti i valori (che danno 8 9 10 11) e le stampa (un valore di ritorno non assegnato alla conclusione di una dichiarazione ad una variabile usando la freccia di assegnazione è visualizzato dall'interpretatore di APL);

stampa la somma di N, cioè. 22.

L'utente può conservare il luogo di lavoro con tutti i valori, programmi e condizione di esecuzione.

L'APL è ben noto per il relativo uso di un insieme di nonASCII simboli che sono un'estensione di aritmetica tradizionale e notazione algebrica. Avere singoli nomi del carattere per SIMD le funzioni di vettore è unidirezionali che l'APL permette la formulazione compatta delle procedure per trasformazione di dati come computazione Gioco del Conway di vita in una linea del codice (esempio). In quasi tutte le versioni di APL, è teoricamente possibile esprimere tutta la funzione computable in un'espressione, cioè in una linea del codice.

A causa della relativi natura condensata e caratteri non standard, l'APL a volte è stato chiamato “lingua di write-only“e lettura che un programma di APL può inizialmente ritenere come decodificare Hieroglyphics egiziani. A causa dell'insolito serie di caratteri, uso di molti programmatori speciale tastiere con i keytops di APL per creare codice di APL. Anche se ci sono vari sensi scrivere il codice di APL usando soltanto i caratteri di ASCII[2], in pratica, non è fatto quasi mai. (Questo può pensarsi per sostenere le tesi del Iverson circa notazione come attrezzo di pensiero[citazione stata necessaria].) La maggior parte se non tutte le esecuzioni moderne usano le disposizioni di tastiera standard, con i rilievi speciali o Redattori di metodo di input ai caratteri di accesso non-ASCII. Storicamente, la serie completa di caratteri di APL è stata distintiva, con i caratteri alfabetici di corsivo maiuscolo e numeri e simboli dritti. La maggior parte dei fornitori continuano a visualizzare la serie di caratteri di APL in una serie completa di caratteri su ordinazione.

I fautori di APL sostengono che gli esempi di cosiddetto codice di write-only sono quasi invariabilmente esempi degli errori di programmazione di pratica o del debuttante dei poveri, che possono accadere in tutta la lingua. I fautori di APL inoltre sostengono che sono molto più produttivo con APL che con i linguaggi di programmazione più convenzionali e che funzionare il software può essere effettuato molto in tempo e con lontano pochi programmatori che usando l'altra tecnologia. L'APL lascia un individuo risolvere i problemi più duri più velocemente. Inoltre, essendo compatto e terse, l'APL si presta bene a sviluppo del software della più grande scala mentre la complessità in seguito a tantissime linee del codice può essere ridotta drammaticamente. Molti fautori ed i professionisti di APL osservano la programmazione nei linguaggi di programmazione standard, come COBOL e Java, come comparativamente noioso. L'APL è trovato spesso dove il tempo--mercato è importante, quali con i sistemi commerciali.

Iverson più successivamente ha progettato Linguaggio di programmazione di J quale usa ASCII con digrammi anziché i simboli speciali.

Esempi

Un esempio molto semplice che tranquillo richiederebbe parecchie linee del codice nel maggior parte non-allinea i linguaggi di programmazione è un generatore di numero casuale di lottery del selezionamento 6 (da 1-40), completa con non garantire numeri ripetuti e la fascicolazione dei risultati nell'ordine ascendente:

↑6? 40

La seguente espressione specie una lista di parola immagazzinata nella tabella X secondo la lunghezza di parola:

X [⍋X+.≠ ';]

La funzione seguente “vita„, scritta in Dyalog APL, prende una tabella booleana e calcola la nuova generazione secondo Gioco del Conway di vita:

Nel seguente esempio, anche Dyalog, la prima linea assegna un certo codice del HTML “ad un txt„ variabile ed allora usa un'espressione di APL per rimuovere tutte le modifiche del HTML, restituenti il testo soltanto secondo le indicazioni di ultima linea.

La seguente espressione trova tutti numeri principali da 1 alla R (che presume un'origine di indice di 1). Sia nel tempo che nello spazio, il calcolo è O (² della R).

(∼R∈R°.×R) /R←1↓ιR

Da destra a sinistra, questo significa:

  1. il ιR genera contenere di vettore numeri interi da 1 alla R (se la R = 6 all'inizio del programma, ιR è 1 2 3 4 5 6)
  2. Cada il primo elemento di questo vettore (funzione del ↓), cioè. 1. Così 1↓ιR è 2 3 4 5 6
  3. Regoli la R al vettore (←, primitivo di assegnazione)
  4. Generi prodotto esterno della R moltiplicata dalla R, cioè. una tabella che è tabella di moltiplicazione della R dalla R (funzione di °.×)
  5. Sviluppi un vettore la stessa lunghezza della R con 1 in ogni posto in cui il numero corrispondente nella R è nella tabella esterna del prodotto (∈, ha regolato la funzione dell'inclusione), cioè. 0 0 1 0 1
  6. Negi logicamente i valori nel vettore (zeri del cambiamento ad un e ad un agli zeri) (∼, funzione di negazione), cioè. 1 1 0 1 0
  7. Selezioni gli articoli nella R per cui l'elemento corrispondente è 1 (/funzione), cioè. 2 3 5

Calcolo

L'APL era unico nella velocità con cui potrebbe realizzare i funzionamenti complessi della tabella. Per esempio, una moltiplicazione molto grande della tabella occorrerebbe soltanto alcuni secondi su una macchina che era oggi molto meno potente che quelle. Ci erano sia motivi tecnici che economici per questo vantaggio:

  • Gli interpretatori commerciali hanno trasportato le procedure lineari alto-sintonizzate della biblioteca di algebra.
  • Molto basso le spese generali interpretative sono state incontrate per-allineano-non l'per-elemento.
  • Il tempo di reazione di APL ha confrontato favorevole ai tempi di esecuzione dei compilatori d'ottimizzazione in anticipo.
  • IBM ha fornito microcodice aiuto per APL su un certo numero di elaboratori centrali IBM/370.

Una carta ampiamente citata “una macchina di APL„ (creata da Phil Abrams) ha perpetuato il mito di che l'APL ha fatto l'uso dominante valutazione pigra dove i calcoli realmente non sarebbero effettuati fino a che i risultati non siano necessari ed allora soltanto quei calcoli hanno richiesto rigorosamente. Effettuare) una valutazione pigra evidente (e facile è J-vettore : quando un monadic iota è incontrato nel codice, IS-IS mantenuto come a rappresentazione invece di calcolazione immediatamente, così salvando un certo tempo così come la memoria.

Anche se questa tecnica non è stata generalizzata, comprende il meccanismo di sopravvivenza migliore della lingua: non specificare l'ordine dei funzionamenti scalari. Proprio mentre finalmente standardizzato da X3J10, l'APL è così altamente dato-parallelo, dà a implementors di lingua la libertà immensa ai funzionamenti di programma efficientemente come possibile. Come innovazioni del calcolatore come antememoriae SIMD l'esecuzione è diventato disponibile nel commercio, programmi di APL ported con pochi particolari a basso livello d'ottimizzazione spesi sforzo supplementare.

Interpretatori

Oggi, la maggior parte della attività di lingua di APL avviene sotto il sistema operativo del Microsoft Windows, con una certa attività sotto Linux, Unixe OS del Mac. Comparativamente poca attività di APL avviene oggi sulle unità centrale di un ordinatore.

APLNow (precedentemente APL2000) offre un interpretatore avanzato di APL che funziona sotto Linux, Unix e Windows. Sostiene l'automazione di Windows, i supporti denomina al sistema operativo e a DLLs prestabilito dall'utente, ha un sistema di lima avanzato di APL e rappresenta il livello corrente di sviluppo di lingua di APL. Il prodotto di APL2000 è una continuazione avanzata di STSC'serie di prodotti APL*Plus/PC riuscito e APL*Plus/386 di s.

Dyalog APL è un interpretatore avanzato di APL che funziona sotto Linux, Unix e Windows. Dyalog ha estensioni aggressive alla lingua di APL che includono nuovo orientato oggettivamente caratteristiche, aumenti numerosi di lingua, più un costante namespace modello usato per gli entrambi la relativa interfaccia di automazione di Microsoft, così come i namespaces natali. Per la piattaforma di Windows, Dyalog APL offre l'integrazione stretta con Microsoft. Rete, più integrazione limitata con la piattaforma visiva di sviluppo dell'studio di Microsoft.

IBM offre una versione di IBM APL2 per i sistemi di IBM AIX, di Linux, del sole Solaris e di Windows. Questo prodotto è una continuazione di APL2 offerto per gli elaboratori centrali di IBM. IBM APL2 era discutibilmente il sistema di APL più influente, che ha fornito un campione solido di esecuzione per l'insieme seguente delle estensioni alla lingua, mettente a fuoco sugli allineamenti annidati.

Offerte limitate MicroAPL APLX, un interpretatore completo dei 64 bit per Linux, Windowse Apple OS del Mac sistemi.

Soliton associa le offerte l'interpretatore di SAX (APL tagliente per l'Unix) per i sistemi di Linux e dell'Unix, che è uno sviluppo ulteriore del I. P. Prodotto tagliente di APL dei soci di Sharp. Diverso della maggior parte degli altri interpretatori di APL, Kenneth E. Iverson ha avuto certa influenza negli allineamenti annidati senso sono stati effettuati nell'APL tagliente e in SAX. Quasi tutte le altre esecuzioni di APL hanno seguito il corso regolato da IBM con APL2, così alcuni particolari importanti nell'APL tagliente differiscono da da altre esecuzioni.

Compilazione

I programmi di APL sono normalmente interpretato e di meno spesso compilato. In realtà, la maggior parte dei compilatori di APL tradotto fonte APL ad una lingua a livello più basso come C, affidando i particolari machine-specific al compilatore a livello più basso. La compilazione dei programmi di APL era un soggetto frequentemente discusso nei congressi. Anche se alcuni di più nuovi aumenti alla lingua di APL quali gli allineamenti annidati hanno reso la lingua sempre più difficile compilare, l'idea della compilazione di APL è ancora in sviluppo oggi.

Nel passato, la compilazione di APL è stata considerare come mezzi per realizzare la velocità di esecuzione paragonabile ad altre lingue tradizionali, particolarmente sulle unità centrale di un ordinatore. Parecchi compilatori di APL hanno realizzato alcuni livelli di successo, comunque comparativamente piccolo dello sforzo di sviluppo speso su APL nel corso degli anni sono andato a perfezionare la compilazione nel codice di macchina.

Come è il caso quando sposta i programmi da un interpretatore di APL del fornitore verso un altro, programmi di APL di APL richiederà invariabilmente i cambiamenti al loro soddisfare. Secondo il compilatore, le dichiarazioni variabili potrebbero essere necessarie, determinate caratteristiche di lingua dovrebbero essere rimosse o evitate, o i programmi di APL dovrebbero essere puliti in qualche modo. Alcune caratteristiche della lingua, come la funzione di esecuzione (un esperto di espressione) ed il vario riflessione e introspection le funzioni da APL, quale la capacità di restituire il testo della funzione o di attuare una nuova funzione da testo, non sono semplicemente pratiche effettuare in compilazione di codice di macchina.

Un compilatore commerciale è stato portato al mercato vicino STSC nei metà di anni 80 come adjunta al prodotto di programma di VSAPL dell'IBM. Diverso dei compilatori più moderni di APL, questo prodotto ha prodotto il codice di macchina che eseguirebbe soltanto nell'ambiente dell'interpretatore, esso non era possibile per eliminare il componente dell'interpretatore. Il compilatore potrebbe compilare molti scalari e vector i funzionamenti al codice di macchina, ma conterebbe sui servizi dell'interpretatore di APL per effettuare un po'più di funzioni avanzate, piuttosto che tenta di compilarlo. Tuttavia, gli speedups drammatici si sono presentati, particolarmente per il codice pesante iterativo di APL.

Intorno allo stesso tempo, il libro Un compilatore di APL da Coda di todo Budd comparso in stampa. Questo libro ha dettagliato la costruzione di un traduttore di APL, scritta dentro C, che ha effettuato determinate ottimizzazioni come fusione del ciclo specifico ai bisogni di una lingua di allineamento. La lingua di partenza era APL-come in quanto alcune regole della lingua di APL sono state cambiate o si distese per consentire la compilazione più efficiente. Il traduttore emetterebbe il codice di C che allora è compilata e la parte esterna buona di funzionamento del luogo di lavoro di APL.

Oggi, la velocità di esecuzione è meno critica e molte lingue popolari sono usando effettuato macchine virtuali - istruzioni che sono interpretate a tempo di esecuzione. Il Burroughs/Unisys APLB l'interpretatore (1982) era il primo per usare la compilazione incrementale dinamica per produrre il codice per una macchina virtuale APL-specifica. Recompiled in moto mentre i contrassegni hanno cambiato i loro significati funzionali. Oltre che rimuovere analizzare e una certa verifica degli errori dal percorso principale di esecuzione, tale compilazione inoltre migliora l'entrata e l'uscita ripetute degli operandi funzionali prestabiliti dall'utente. Ciò evita la messa a punto della pila e la smontatura per le chiamate di funzione fatte dagli operatori incorporati dell'APL come riduce e ciascuno.

APEX, un compilatore di ricerca APL, è disponibile dall'isola Research Inc. del serpente L'APEX compila l'APL piano (un sottoinsieme dell'iso N8485) in SAC, una lingua funzionale di allineamento con la semantica parallela ed attualmente funziona sotto Linux. usi Apex-generati di codice fusione del ciclo e contrazione di allineamento, procedure del speciale-contenitore non generalmente disponibili agli interpretatori (per esempio, aggiornamento del vettore di permutazione), realizzare un livello delle prestazioni paragonabile a quello di Fortran.

Il APLNext VisualAPL il sistema è una partenza da un sistema convenzionale di APL in quanto VisualAPL è un allineare. Lingua netta che è completamente inter-operabile con altra . Microsoft. Rete lingue come VB.Net e C#. VisualAPL è inerentemente orientato oggettivamente e Unicode-ha basato. Mentre VisualAPL comprende la maggior parte delle caratteristiche delle esecuzioni dell'eredità APL, la lingua di VisualAPL estende l'eredità APL per essere. Rete-compliant. VisualAPL è ospitato nell'ido visivo standard dell'studio di Microsoft e come tale, invoca la compilazione in un modo identico a quello di altro. Lingue nette. Producendo. Codice runtime netto di linguaggio comune (CLR), utilizza il compilatore just-in-time di Microsoft (JIT) per sostenere il bit 32 o i fissaggi 64-bit. Le prestazioni notevoli velocità-aumentano l'eredità eccessiva APL sono state segnalate, particolarmente quando la battitura a macchina forte (facoltativa) delle discussioni di funzione è usata.

Un APL a C# il traduttore è disponibile dai sistemi grafici del Causeway. Questo prodotto è stato destinato per permettere il codice di APL, tradotto a C# equivalente, per funzionare completamente fuori dell'ambiente di APL. Il compilatore del Causeway richiede una biblioteca run-time delle funzioni di allineamento. Un certo speedup, a volte drammatico, è visibile, ma accade a causa delle ottimizzazioni inerenti a Microsoft . Rete struttura.

Terminologia

L'APL fa una distinzione libera in mezzo funzioni e operatori. Le funzioni prendono i valori (variabili o costanti o espressioni) come discussioni e restituiscono i valori come risultati. Operatori (aka funzioni higher-order) l'introito funziona come le discussioni e ritorno riguardante, funzioni derivate come risultati. Per esempio la funzione “di somma„ è derivata applicando l'operatore “di riduzione„ alla funzione “dell'aggiunta„. Applicando lo stesso operatore di riduzione “al soffitto„ funzioni (che restituisce il più grande di due valori) genera una funzione “massima„ derivata, che restituisce il più grande di un gruppo (vettore) dei valori. Nella lingua di J, Iverson ha sostituito i termini “verbo„ e “avverbio„ per “la funzione„ e “l'operatore„.

L'APL inoltre identifica quelle caratteristiche sviluppate nella lingua e rappresentate tramite un simbolo, o una combinazione fissa dei simboli, As primitivi. La maggior parte dei primitivi sono funzioni o operatori. La codificazione APL è in gran parte un processo di scrittura le funzioni non-primitive e (in alcune versioni di APL) degli operatori. Tuttavia alcuni primitivi sono considerati come nè funzioni nè operatori, il più notevolmente assegnazione.

Serie di caratteri

L'APL è stato criticato sempre per la relativa scelta di una serie di caratteri unica e non standard. L'osservazione che alcuni che la imparino stanno bene solitamente agli aderenti ardent indica che ci è un certo peso dietro Iverson'l'idea di s che la notazione ha usato fa una differenza. Nell'inizio, ci erano pochi dispositivi terminali in grado di riprodurre il carattere di APL - insieme - più popolari quei impiegare IBM Selectric meccanismo grafico con un tipo speciale elemento di APL. Col tempo, con l'uso universale dei dispositivi di alta qualità di stampa e del dispositivo grafico, il problema della serie di caratteri di APL in gran parte è stato eliminato; tuttavia, il problema di entrare nei caratteri di APL richiede l'uso di redattori di metodo di input o i rilievi speciali della tastiera, che possono frustrare i principianti accustomed ad altre lingue. Con la divulgazione del Unicode il campione, che contiene la serie di caratteri di APL, il problema di ottenere le serie complete di caratteri richieste sembra sospeso andare via.

Dal punto di vista dell'utente, i caratteri supplementari possono dare ad APL un'eleganza e un concision speciali non possibili in altre lingue, usando il mnemonic di simboli visivamente delle funzioni che rappresentano. O può condurre ad un grado ridiculous di complessità e del unreadability, tipicamente quando i simboli sono messi insieme insieme in una singola massa senza osservazioni. O può essere unreasonably difficile e che richiede tempo allora entrare più successivamente pubblichi quelle dichiarazione di APL.

Simboli di APL e disposizione di tastiera

Noti i mnemonics che associano un carattere di APL con una lettera: punto interrogativo su Q, alimentazione su P, rho su R, valore basso su B, metta su N, modulo su M. e così via. Ciò lo rende più facile affinchè un altoparlante English-language scriva l'APL a macchina su una tastiera non-APL che fornisce uno ha risposte visive sul suo schermo. Inoltre, le decalcomanie sono state prodotte per il collegamento alle tastiere standard, sulla parte anteriore delle chiavi o sulla parte superiore di loro.

Uno schema più aggiornato della tastiera, gli applicabili per APL2 ed altre esecuzioni moderne, è disponibili: Disposizione del sindacato per le finestre.

Tutti i simboli di APL sono presenti dentro Unicode (anche se alcuni prodotti di APL non possono ancora caratterizzare questo):

' ( ) + , - . /  :  ; < = >  ? [ ]
\ _ ¨ ¯ × ÷

I caratteri supplementari di APL erano disponibili vicino overstriking un carattere sopra un altro. Per esempio, ceppo il simbolo è stato costituito dal overstriking lo spostamentoP con lo spostamentoO. Ciò ha complicato correggere gli errori e la pubblicazione delle linee di programma. Ciò può infine essere il motivo affinchè i programmi iniziali di APL abbia certo stile denso - erano difficili da pubblicare.

Molti overstrikes indicati nella suddetta tabella, anche se facendo appello, realmente non sono usati. I nuovi overstrikes sono stati introdotti dai fornitori mentre hanno prodotto le versioni di APL adeguate a fissaggi specifici, le caratteristiche del sistema, sistema di lima e così via. Più ulteriormente, stampando i terminali e l'APL iniziale i terminali a raggi catodici erano capaci di visualizzazione dei overstrikes arbitrari, ma come personal computer ha sostituito velocemente i terminali come dispositivo data-entry, carattere che di APL il supporto ora è stato fornito come ROM del generatore di carattere di APL o una serie di caratteri molle resa dal visualizzatore. Con l'avvenimento di Windows, i caratteri di APL sono stati definiti come appena un'altra serie completa di caratteri completa, così la distinzione fra i caratteri del overstruck ed i caratteri standard che sono eliminati.

Terminali successivi di IBM, considerevolmente IBM 3270 le stazioni di esposizione, hanno avute una disposizione della tastiera alternata che è oggi la base per alcune delle disposizioni di tastiera moderne di APL in uso. I terminali migliori, vale a dire visualizzatori anziché gli stampatori, hanno consigliato allo sviluppo dei redattori di schermo pieno migliori, che hanno avuti un miglioramento misurabile nella leggibilità di programma e di rendimento.

Uso

L'APL lungamente ha avuto una piccola e base fervent dell'utente. Era ed ancora è popolare nelle applicazioni di assicurazione e finanziarie, nelle simulazioni e nelle applicazioni matematiche, spesso dove una soluzione cambia frequentemente o dove in una lingua standard rende la complessità eccessiva. L'APL è stato usato in un'ampia varietà dei contesti e per molti e scopi variati. Un bollettino nominato “Cit-Quad„ dedicato ad APL è stato pubblicato dagli anni 70 dalla sezione di SIGAPL dell'associazione per materiale di calcolo (Cit-Quad è il nome del carattere di APL usato per l'entrata e l'uscita del testo).

Principalmente dovuto il relativo notazione di infix e la relativa enfasi su interazione con il calcolatore, APL può essere un ambiente ideale per lo schieramento veloce di interattivo Lingue specifiche di dominio. Malgrado la presenza dei caratteri non standard nella serie di caratteri di APL, è possibile per un utente di una lingua dominio-specifica effettuata nell'APL per scrivere i programmi semplici (o gli scritti) che sono costituiti solamente dalle parole, dai numeri e dalla punteggiatura esperta. Fino a in ritardo quanto i mid-1980s, APL time-sharing i fornitori hanno offerto le applicazioni trasportate sotto forma di le lingue specifiche di dominio. Sul I. P. Tagliente sistema a divisione di tempo, un luogo di lavoro denominato MAGIA 39 accesso offerto ai dati di linea aerea e finanziari più (per il tempo) rappresentare graficamente specializzato e la segnalazione, sotto forma d'una lingua specifica di dominio. Un altro esempio è il luogo di lavoro di GRAPHPAK fornito con APL2 dell'IBM; una versione di dimostrazione sia di APL2 che di GRAPHPAK può essere trasferita per Windows.

L'APL inoltre è stato usato in numeroso metaprogramming applicazioni. I dati dati esterni che hanno variato di tanto in tanto, programmi di APL sono stati usati per comporre le parti o completare le sezioni del codice scritte in altre lingue quali fortran, COBOL, o Java. Un'applicazione ha usato l'APL per generare il codice di fortran di un modello di programmazione lineare notevole. Come tali, il codice di fortran si è pensato per essere troppo grande essere capito confortevolmente da un singolo o piccolo gruppo degli individui. Tuttavia, con questo metodo, la manutenzione programmata non ha proposto barriera. I metodi simili sono stati usati dove le tabelle di consolidamento hanno effettuato la parte esterna di APL potrebbero immediatamente essere trasformate nei programmi in COBOL Considerevoli che hanno effettuato i calcoli necessari di consolidamento. Un punto noioso che precedentemente ha richiesto parecchie giornate lavorative, vale a dire modifiche ad un programma in COBOL Lungo, praticamente è stato eliminato. Le cose simili sono state fatte che alla fine hanno emesso il codice del Java.

L'interesse nell'APL ha declinato costantemente dagli anni 80. Ciò era parzialmente dovuto la mancanza di percorso di espansione dalle esecuzioni performant dell'elaboratore centrale alle alternative a basso costo iniziali del personal computer ed alla disponibilità degli attrezzi di calcolo dell'utilizzatore finale di alto-rendimento come Microsoft Excel e Microsoft Access. Queste sono piattaforme adatte per che cosa può essere applicazioni dell'elaboratore centrale APL negli anni 70 e negli anni 80. Alcuni utenti di APL hanno migrato al Linguaggio di programmazione di J, che offre le caratteristiche più avanzate. Infine, il declino era inoltre debito in parte allo sviluppo di MATLAB, Ottava di GNUe Scilab. Queste piattaforme alline-orientate di calcolo scientifiche forniscono un'esperienza di calcolo interattiva simile ad APL, ma di più assomigliano ai linguaggi di programmazione convenzionali quale fortran ed usano l'ASCII standard.

Nonostante questo declino, i ritrovamenti di APL hanno continuato l'uso in determinati campi, quale ricerca di contabilità (Requisiti di PhD di contabilità della Stanford)

Normalizzazione

L'APL è stato standardizzato dal ANSI gruppo di lavoro X3J10 e Iso/IEC Gruppo di lavoro tecnico unito del sottocomitato 22 del comitato 1 3. La lingua di nucleo APL è specificata nell'iso 8485:1989 e la lingua estesa di APL è specificata in ISO/IEC 13751:2001.

Citazioni

  • “APL, in cui potete scrivere un programma per simulare mescolareare una piattaforma delle schede ed allora trattarle fuori a parecchi giocatori in quattro caratteri, nessuno di cui compare su una tastiera standard.„ David dato
  • “l'APL è un errore, portato a termine a perfezione. È la lingua del futuro per le tecniche di programmazione del passato: genera una nuova generazione dei bums di codificazione. “ Edsger Dijkstra, 1968
Rho, rho, rho della X
È uguale sempre 1.
Il Rho è dimensione; rho del rho, Rank.
L'APL è divertimento!
  • “Questo senso di fare il commercio era così produttivo che si è sparso come wildfire. Per il momento in cui la gente pratica scopra che cosa era accaduto; L'APL era così importante una parte di come IBM ha fatto funzionare il relativo commercio che non potrebbe possibilmente essere sradicato. I ricercatori selvaggio-eyed avevano prodotto un affarista. “Michael S. Montalbano 1982 (veda Una storia personale di APL)
  • La seguente rima divertente è stata distribuita come componente del fortuna programmi nelle installazioni numerose dell'Unix.
'Tis il sogno di ogni programmatore
Prima che la sua vita sia fatta,
Per scrivere tre linee di APL
E faccia il funzionamento maledetto di cosa.

Veda inoltre

Riferimenti

  1. ^ Razza del Larry (l'agosto 2006). "Come abbiamo ottenuto ad APL \ 1130". Vettore (associazione britannica di APL) 22 (3). ISSN 0955-1433. 
  2. ^ Il Dickey, rifugi, lista di A della trascrizione di APL progetta, 1993
  • Iverson, Kenneth E. - Un linguaggio di programmazione, Wiley 1962.
  • Una descrizione convenzionale di SYSTEM/360, Giornale 3:3, New York dei sistemi di IBM: 1964
  • Pakin, Sandra - Manuale APL \ 360 di riferimento, Science Research Associates, Inc. 1968. ISBN 0-574-16135-X,
  • Storia dei linguaggi di programmazione, capitolo 14
  • Gerald Jean Francis Banon - Basa il da Computacao Grafica, JANEIRO DI RIO DE: CAMPUS, 1989. 141 P.

Veda inoltre

Collegamenti esterni

I terreni comunali di Wikimedia ha mezzi relativi a:
The original article is from Wikipedia. To view the original article please click here.
Creative Commons Licence