Programmazione funzionale

Slides:



Advertisements
Presentazioni simili
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Advertisements

Corrado Cavalli Microsoft .NET MVP
Linguaggi di programmazione
Paradigma Funzionale Paradigma Imperativo: Programma = transizione di stato Paradigma Funzionale: Programma = valutazione di un’espressione La maggior.
Paradigma Funzionale Paradigma Imperativo: Programma = transizione di stato Paradigma Funzionale: Programma = valutazione di unespressione La maggior parte.
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
MultiSet, Liste Ordinate
Codifica di algoritmi linguaggio macchina vs programmazione strutturata Lab Programmazione - turno /2006.
CODIFICA Da flow-chart a C++.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
7/16/20151 Haskell: Tipi basici e Definizioni n Tipi Atomici (scalari) n Valori e Identificatori n Overloading n Definizioni e Layout n Definizioni ricorsive:
1 Tipi di dato modificabili §a livello semantico, riconduciamo la modificabilità alla nozione di variabile l lo stato “modificabile” corrispondente sarà.
Introduzione alle Classi e agli Oggetti in Java 1.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
Oltre il web 2.0: il web semantico Seminario. World Wide Web ● Nasce nel 1991 al CERN di Ginevra Evoluzione: web dinamico ● Si basa su ● URL ● HTTP ●
INFORMATICA ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE.
Elementi fondamentali dell’ Architettura di di un elaboratore elettronico.
I linguaggi di programmazione Gruppo iOS 47: Colombini Christian Flora Jonathan Rossi Francesco.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI LINGUAGGIO MACCHINA.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Lavoro di gruppo 3^E sia Peroni Jessica Mascheroni Beatrice
PROGETTO AGRICOLTURA L’architettura tecnologica Bologna : 11/04/02.
rielaborato da Atzeni-etal., Basi di dati, Capitolo 4
Rielaborato da Atzeni et al., Basi di dati, Mc-Graw Hill
Linguaggi: guardando la semantica
Dal problema al processo risolutivo
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Programmazione per la Musica | Adriano Baratè
Sistema di Analisi e di Acquisizione
Logica binaria Moreno Marzolla
Dal problema al processo risolutivo
ESPRESSIONE LETTERALE
Commenti Ogni riga che comincia con il simbolo # non viene letta dall’interprete per cui rappresenta un modo per commentare il listato # Questo è un esempio.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Unità didattica 1: Introduzione al linguaggio Java
Informatica per l’Ingegneria
Informatica A.A. 2016/17 Prof. Italo Epicoco
Programmazione ad Oggetti per la Fisica
analizzatore di protocollo
Haskell: Higher Order Programming
Haskell: Programmazione con Tuple, Liste
Classe III A A.s – 2012 Programma di Informatica
OBJECT ORIENTED DATABASE
Programmare.
Strutture di Controllo
Secondo Programma in C.
Sommario cos’è un tipo di dato astratto astrazione tramite specifica:
Definizione di linguaggio di programmazione
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Interpretazione Astratta
Semantica dinamica Vogliamo definire una funzione che associ ad ogni termine corretto del mio linguaggio di programmazione un valore. Questa associazione.
Circuiti combinatori Laboratorio di Architetture degli Elaboratori I
Esercizio Dato un albero binario, definiamo altezza minimale di un nodo v la minima distanza di v da una delle foglie del suo sottoalbero, definiamo invece.
Fogli di Calcolo Elettronici
Introduzione a Logisim
Esercitazione guidata 1
Strategie di progetto Si possono utilizzare le strategie tipiche dello sviluppo di un processo di ingegnerizzazione (es. ingegneria del software). Strategie.
Selezione e Proiezione
Haskell: Higher Order & Combinator Programming
Analisi composizionale e contestuale
Linguaggio di Modellazione Unificato
PowerShell di Windows PowerShell è un shell che mette a disposizione un prompt interattivo e un interprete a riga di comando , per le sue caratteristiche.
Algoritmi.
Semantica operazionale:
Vincoli di Integrità Non tutte le combinazioni possibili di valori dei domini su cui è definita una relazione sono accettabili. Alcuni attributi possono.
Programmazione Procedurale
Transcript della presentazione:

Programmazione funzionale Linguaggi Funzionali /aa. 03 - M.Bellia Programmazione funzionale Computer and Modelling Funzione: valore e operazioni Types Haskell: Programming Definizioni e Scripts Proofs Valutazione Usiamo Hugs Moduli e prelude.hs Esempi di programmi Esercizi 4/15/2019

Computer and modelling Linguaggi Funzionali /aa. 03 - M.Bellia Computer and modelling Computer Profondamente rinnovati nella tecnologie della componentistica Onnipresenti (mainframes, Pc,…, automobili, telefonia, elettrodomestici,… Invariati nei fondamenti: Esprimono: Funzioni Calcolabili Utilizzati: Programmi per manipolare informazione simbolica Linguaggi (esecutori,…) Applicazioni Continua crescita Richiedono adeguati linguaggi 4/15/2019

Linguaggi Funzionali /aa. 03 - M.Bellia Adeguati linguaggi Linguaggi Applicazioni specifiche HTML, XML, …, Scripting Programmazione Linguaggi di Programmazione Imperativi: p. calcolano ma modificano anche lo stato Applicativi: p. calcolano solo Logici: Prolog Algebrici: OBJ funzionali 4/15/2019

Linguaggi Funzionali Caratteristiche Essenziali Si distinguono: Funzioni come valori Trasparenza referenziale Funzioni come unici valori Si distinguono: Puri Non Puri: estesi con caratteristiche non funzionali Side effects: setq, rplca.. Metaprogramming: S-exp, define, eval, Indeboliti su caratteristiche funzionali Trasparenza e typing non stretto 4/15/2019

Linguaggi Funzionali - 2 Fondamenti -calcolo e -calcolo tipato: Teorie di funzioni (calcolabili) Teorie algebriche (assiomatiche) Modello di calcolo Derivato dalle teorie e basato sulla riduzione algebrica Utilizzabile in tutte le applicazioni della programmazione (rapida prototipazione) Sperimentazione e sviluppo di nuovi linguaggi Esempio: il meta linguaggio con cui si descrive la semantica di un linguaggio è un linguaggio funzionale. Esistono modelli funzionali per tutti i vari modelli di calcolo non funzionale (inlcuse MdT) e per i linguaggi di un certo rilievo (Object Calculus e Calcolo di function records per gli OO) 4/15/2019

Linguaggi Funzionali /aa. 03 - M.Bellia Funzione Cos’è una funzione f::A->B : Relazione Binaria f  A x B Univoca xA, #{(x,y) f}=1 dove: #=cardinallità Relazione Binaria? Somma è binaria? Isomorfismo: NkN dove: N=naturali, =calcolabili NNN N x N  N  N  N  N  N  (N  N) Valori e operazioni 4/15/2019

Linguaggi Funzionali /aa. 03 - M.Bellia Valori e operazioni Come si esprime una funzione? Introduce-- astrazione (o generalizzazione) Sintassi diverse: x.* 2 x \x->2*x {(x,2*x)} Astrazioni diverse (funzionali) f. x. f 2 x Calcola-- espressioni Operazioni Applicazione-- g: A->B, a: A (Sintassi diverse:) g a : B g  (\ f -> \ y -> f y), a  (+ 1) Composizione-- f: B->C, g: A->B (sintassi diverse:) f.g : A->C 4/15/2019

types Associati alle espressioni Classificano le strutture componenti e : A Classificano le strutture componenti f : B->C , g : A->B Controllano le composizioni f.g : A->C g.f : errore Strong: Unicità e Staticamente determinato 4/15/2019

Haskell 1990 Pure Picture and functions Higher Order, Strongly typed, Lazy … Language Picture and functions 2-dim. Picture Operazioni: flipV, flipH, invertColour, superimpose, above, sideBySide, … 4/15/2019

Definizioni Programma = insieme di definizioni che introducono tipi e “valori” su cui opereremo con… Scripts Moduli Definizioni: Tipi: type idT = exprT Valori: IdV :: type IdV = exprV type Picture = [[char]] horse :: Picture horse = … 4/15/2019

Pictures abstract data types implementazione Module Picture rotateHorse :: Picture rotateHorse = flipH (flipV horse) IdV x1 … xn = exprV (valori funzione con parametri) rotate :: Picture -> Picture rotate x = flipH (flipV x) oppure rotate = flipH.flipV abstract data types rotate ignora la implementazione Meccanismi di visibilità (moduli) implementazione [[char]]: implementa come una lista di linee Module Picture 4/15/2019

Implementazione implementazione [[char]]: implementa come una sequenza di linee flipH = Invertiamo l’ordine della sequenza di linee = reverse flipV = Mantieniamo la sequenza ma Invertiamo l’ordine di ogni linea = map reverse map: (a -> b) -> [a] -> [b] 4/15/2019

Proofs una proprietà: flipH.flipV = flipV.flipH dim. FlipH manipola la sequenza di linee flipV manipola le sole linee della sequenza Manipolano in modo ortogonale 4/15/2019

valutazione Riduzione di termine Sia double n = 2 * n Valutiamo: 23 - (2 * (3+1)) --- def. Double 23 - (2 * 4) --- arith. + 23 - 8 --- arith. * 15 --- arith. - 23 - (double (3+1)) 23 - (double 4) 23 - (2 * 4) … 4/15/2019

Usiamo Hugs Istallazione Ambiente interattivo Espressioni di top level Hugs da unix Espressioni di top level Alcuni esempi Comandi di gestione ambiente Panoramica (dipende dalla piattaforma) Configurazione :Set -E****** 4/15/2019

Moduli e Prelude.hs Programmi sono collezioni di moduli Nomi: Capital letter (maiuscola) Import / Export visibilità La collezione forma una gerarchia con Top Altrimenti un modulo Main Prelude.hs Built-in data e functions: integer, list, tuple etc. e loro operazioni 4/15/2019

Esempi di programmi Modulo FirstLiterate.lhs Modulo Picture: Loading Esecuzione di espressioni square size square double(squar 2) $$ 2 double Modulo Picture: Load Esecuzione horse rotate horse 4/15/2019

Esercizi Modulo PictureT: Ex. 2.2 Ex. 2.3 Definire: estendere Picture con: unaTT: una modifica di horse Rote90: rotazione di 90 right isTruePicture: predicato Ex. 2.2 Rettangolo nero utilizzando le sole operazioni (superimpose, etc.) Ex. 2.3 Scacchiera 8 x 8 4/15/2019