La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "APL Italiana SpA APL as a tool of thought Un linguaggio di programmazione, un bagaglio personale negli studi scientifici Mauro Guazzo Codework Italia srl."— Transcript della presentazione:

1 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 unepoca 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 dellimballaggio sul prodotto, cioe dellinterfaccia stile Carnevale di Rio sui meriti dellapplicazione. -regola del silenzio: applicazioni che non spiegano il loro rifiuto ma rendono unopzione fioca e non cliccabile. Non ho capito il loro modo di ragionare, la mia richiesta e assurda, lopzione e temporaneamente inattiva o si tratta di un bug ? -accettazione del crash come evento fisiologico. Vero ? Falso ? Non sta a noi cambiare il panorama del software… … ma forse possiamo trovare un parziale sollievo, unambiente 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 dallambiente 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 lapplicabilita 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 dellapplicazione sono piu importanti della rapidita di sviluppo. -Dove lalgoritmo 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 lAPL 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 dellinterprete, compresi il file system, linterfaccia grafica, le primitive TCP/IP, le API offerte, …)

8 Character set: specifico dellAPL ! (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 dallinterprete. 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 Simple array (rango 2, dimensioni 2 4, numerico) E Array of arrays (rango esterno 1, dimensione 5, misto) A E6

11 Tre tipi di istruzioni: Nelluso 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 * 5 (funzione primitiva) 32 2 Power 5 (funzione definita) 32

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

15 Precedenza di esecuzione: Da destra a sinistra senza eccezioni 4 x ( 4 x 2 ) Risultato immediato: Se unespressione 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 dallAPL. Per es. -E possibile assemblare ed eseguire codice al volo con estrema generalita. -In caso di errore, linterprete riprende il controllo senza abortire lapplicazione. In ambiente di sviluppo e facile rimediare allerrore e proseguire. In ambiente di produzione e agevole proteggere lutente intercettando e gestendo lerrore.

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 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 dellAPL news:comp.lang.apl Newsgroup Corso di Apl Dyalog Introduzione elementare

19 OK, sono pronto a provare lAPL 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 dallimballaggio. (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 APL standard Simple arrays Arrays of arrays, estensioni non standard, bizzarrie,… Strutture di controllo. File system Strumenti GUI objects, properties, events, methods Error trapping Trace TCP/IP API (OLE,DDE,ODBC, COM,.Net,...) Portabilita tra dialetti APL: 100% 70% 20%


Scaricare ppt "APL Italiana SpA APL as a tool of thought Un linguaggio di programmazione, un bagaglio personale negli studi scientifici Mauro Guazzo Codework Italia srl."

Presentazioni simili


Annunci Google