La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

“APL as a tool of thought”

Presentazioni simili


Presentazione sul tema: "“APL as a tool of thought”"— Transcript della presentazione:

1 “APL as a tool of thought”
APL Italiana SpA “APL as a tool of thought” Un linguaggio di programmazione, un bagaglio personale negli studi scientifici Mauro Guazzo Codework Italia srl

2 Viviamo in un’epoca eccitante di sorprendenti sviluppi software…
Vero ? Falso ? … ma rimangono dei motivi di frustrazione: -convivenza con bugs in numero spropositato -accettazione della filosofia “Best effort” invece di “Funzionamento garantito” -malfunzionamenti non riproducibili, perche’ tutto e’ dinamico e interdipendente. -prevalenza dell’imballaggio sul prodotto, cioe’ dell’interfaccia stile “Carnevale di Rio” sui meriti dell’applicazione. -regola del silenzio: applicazioni che non spiegano il loro rifiuto ma rendono un’opzione “fioca” e non cliccabile. “Non ho capito il loro modo di ragionare, la mia richiesta e’ assurda, l’opzione e’ temporaneamente inattiva o si tratta di un bug ?” -accettazione del crash come evento fisiologico. Non sta a noi cambiare il panorama del software… … ma forse possiamo trovare un parziale sollievo, un’ambiente in cui il “Funzionamento garantito” vale ancora ?

3 Cercasi interprete che ci eviti questo genere
di oltraggi:

4 APL (A Programming Language)
Kenneth Iverson, Harvard University, circa 1960 Una notazione eseguibile, nata per comunicare algoritmi fra persone, in seguito eseguita anche da un interprete. Un linguaggio di programmazione “fuori del coro”, eccellente per applicazioni scientifiche, ma adottato spesso anche per applicazioni gestionali. Rigore, concisione, potenza espressiva, portabilita’, indipendenza dall’ambiente ospite. APL e’ il principe degli Array Programming Languages, nel senso che tutte le sue primitive nascono per tabelle multidimensionali. Ed e’ uno strumento divertente per “pensare ad alta voce”.

5 APL e’ un ottimo candidato per:
-Catturare la versione di riferimento di un algoritmo (eventualmente poi realizzato in altri linguaggi) -Comunicare idee fra persone -Costruire prototipi -Accompagnare una persona come strumento personale negli studi scientifici -Sviluppare applicazioni scientifiche -Costruire in tempi brevi un linguaggio specialistico per gli oggetti in corso di studio (per es. permutazioni, matrici di numeri complessi, tensori, grafi, campi finiti, codici, immagini bitmap, spartiti musicali, stringhe di DNA, etc. etc.) -Simulare sistemi -Simulare un processore e sviluppare software per una CPU che ancora non esiste -Raddoppiare la produttivita’ di un team di sviluppo software. -Elaborare programmi sorgente.

6 Dove invece l’applicabilita’ dell’ APL e’ dubbia:
-Come strumento unico di un programmatore professionista (il cui ambiente di sviluppo e’ spesso prescritto da altri). -Dove un compilatore e’ preferibile ad un interprete o le prestazioni dell’applicazione sono piu’ importanti della rapidita’ di sviluppo. -Dove l’algoritmo da realizzare e’ banale e lo sforzo di sviluppo sta tutto nella “delivery”: Graphic User Interface, API, connettivita’ Internet. -Dove la macchina target non dispone di un interprete APL !

7 Cosa rende l’APL unico:
-Rigore matematico, potenza espressiva, concisione ineguagliata -Sintassi semplicissima, geniale sintesi tra semplicita’ e potenza -Trattamento elegante di tabelle multidimensionali e strutture ricorsive -Indipendenza dal sistema operativo ospite (portabilita’). Possibilita’ di concentrarsi sul problema, ignorando i vincoli informatici. -Linguaggio nato adulto (?). Scelte dettate dalla razionalita’ e non da considerazioni di accettazione commerciale. -Massima generalita’. Niente eccezioni. Quello che funziona per 3 elementi funziona per (e nei casi estremi e degeneri) -Standard di linguaggio consolidato e immutabile (NB. questo vale per la specifica di algoritmi - molte altre componenti necessarie sono lasciate alla creativita’ dei realizzatori dell’interprete, compresi il file system, l’interfaccia grafica, le primitive TCP/IP, le API offerte, …)

8 Character set: specifico dell’APL !
(non ASCII, ANSI o EBCDIC. Tuttavia lo standard UNICODE contiene anche il character set APL ) Problema di simboli criptici (tastiera, schermo, stampa ?) (oltre a A…Z a…z 0…9)

9 Tipi dato: ridotti a due. Una cella contiene o
un carattere o un numero. NB. I problemi di rappresentazione interna (float, integer, binary…), di precisione e di calcolo numerico non scompaiono, ovviamente, ma in prima battuta sono gestiti dall’interprete. Strutture dati: 1-Singleton ovvero scalare. La variabile contiene un solo carattere o numero e non e’ indicizzabile come tabella. 2-Simple array. Tabella ad N dimensioni (che non mescola numeri e caratteri). Le primitive APL operano tutte su questa struttura, in modo uniforme. La variabile e’ indicizzabile come per es. A[ 1; 5; 12; 1] 3-Array of arrays. Estensione ricorsiva (senza limiti di nesting) di un simple array in cui ogni celletta contiene a sua volta un simple array o un array of arrays. Miscela di contenuto numerico e carattere.

10 A Simple array Array of arrays 444 75 126 0.234 126 126
(rango 2, dimensioni 2 4, numerico) 126 1.1E12 0.234 444 75 126 126 Array of arrays (rango esterno 1, dimensione 5, misto) E6 A

11 Tre tipi di istruzioni:
Nell’uso immediato (line-by-line): -Assegnazione (vedi sintassi di base) Nella programmazione, anche -GOTO condizionato -Definizione di funzione di utente

12 Strutture di controllo esecuzione:
- Definite nel linguaggio: -Chiamate ricorsive -GOTO condizionato, equivalente a : IF condizione GOTO label - Aggiunte dagli implementatori: tutte le strutture usuali (equivalenti a IF-THEN-ELSE, FOR-NEXT, WHILE, REPEAT, CASE, etc.) Istruzioni dichiarative: nessuna per dichiarare variabili. La testata di una funzione di utente specifica la sintassi voluta, in una delle tre forme: Pluto (nessun argomento di input) Pluto X (un argomento) X Pluto Y (due argomenti)

13 Le funzioni primitive APL sono rappresentate da simboli ad-hoc, le funzioni definite (i programmi) hanno nomi alfabetici. Es. per la potenza 2 * (funzione primitiva) 32 2 Power (funzione definita)

14 Sintassi di base 3 + 2 - 53 + - 12 , ABC / a = b , Log 12 12 13
(Da destra a sinistra) Operando Funzione , ABC / a = b , Log ( ) , ( X , Y ) ABC [ 3 / 2 ; ]

15 Precedenza di esecuzione:
Da destra a sinistra senza eccezioni 4 x 2 + 3 20 ( 4 x 2 ) + 3 11 Risultato immediato: Se un’espressione non e’ assegnata ad una variabile, il risultato va a schermo. In alternativa: ABC  4 x 3 + 2

16 L’ APL e’ realizzato da un interprete, non da un
compilatore. I vantaggi di un ambiente interpretato sono sfruttati al massimo dall’APL. Per es. -E’ possibile assemblare ed eseguire codice “al volo” con estrema generalita’. -In caso di errore, l’interprete riprende il controllo senza abortire l’applicazione. In ambiente di sviluppo e’ facile rimediare all’errore e proseguire. In ambiente di produzione e’ agevole proteggere l’utente intercettando e gestendo l’errore.

17 Ambienti in cui l’ APL e’ disponibile:
-CMS, TSO per S/390 (Mainframe IBM) -UNIX -LINUX -DOS -Windows -MacOS . . . Fornitori di APL: -IBM (prima implementazione) -Dyalog (usato in questa presentazione) -APL 2000 (erede di STSC) -Soliton (erede di I.P. Sharp)

18 Risorse WEB: Materiale ACM su APL e J Articolo Why APL Articolo “APL as a tool of thought” Fornitori di APL 2000 Fornitori di Dyalog APL chilton.com/~jimw/Welcome.html Collezione di links Rivista APL APL Italiana www-306.ibm.com/software/awdtools/apl/ Fornitori di APL2 directory.google.com/Top/Computers/Programming/Languages/APL/ Directory dmoz.org/Computers/Programming/Languages/APL/ Directory en.wikipedia.org/wiki/APL_programming_language Storia dell’ APL Sviluppo dell’APL news:comp.lang.apl Newsgroup Corso di Apl Dyalog Introduzione elementare

19 “OK, sono pronto a provare l’APL”
“Concretamente, che devo fare ?” 1.Procurarsi un interprete 2.Accertarsi che sia ben installato (documentazione ? mappa tastiera ? Fonts ? Stampa caratteri ? Salvataggio del lavoro fatto ? Uso della sessione ? Uso dell’ editore ?) 3.”Da chi imparo ?” (corsi, libri, materiale Web, APLista senior, amico che impara con me ?) 4.Accertarsi di imparare solo l’ APL standard --- distinguere il prodotto dall’imballaggio. (vedi slide seguente). 5.Capite le poche regole del gioco, sperimentare ! Non pretendere di impararlo tutto. 6.Riflettere bene prima di lanciarsi a trasformare un algoritmo in un prodotto finito consegnabile in APL (completo di GUI, grafica, file system, interazione con Windows, Internet ecc.)

20 Portabilita’ tra dialetti APL: 100% 70% 20%
File system Error trapping APL standard Simple arrays TCP/IP Trace Arrays of arrays, estensioni non standard, bizzarrie,… Strutture di controllo. API (OLE,DDE,ODBC, COM,.Net, ...) Strumenti GUI objects, properties, events, methods Portabilita’ tra dialetti APL: 100% 70% 20%


Scaricare ppt "“APL as a tool of thought”"

Presentazioni simili


Annunci Google