LISP. C. Montangero Dipartimento d'informatica - Università di Pisa 2014
|
|
- Fabiano Basile
- 8 anni fa
- Visualizzazioni
Transcript
1 LISP C. Montangero Dipartimento d'informatica - Università di Pisa 2014
2 John McCarthy Creatore del LISP LISt Processor, 1965 Time sharing memorandum, 1959 Thor, 1967 AI, dal 1956 con C. Shannon Premio Turing 1971
3 Sommario Il contesto storico Gli obiettivi Il nucleo funzionale del linguaggio sintassi semantica: sistema di transizioni semantica: l'interprete meta-circolare Le definizioni ricorsive L'incidente del binding dinamico Le liste di proprietà e il gc Conclusioni: un assessment di parte
4 La trimurti dei tardi anni '50 FORTRAN COBOL LISP (formule/array) (record/file) (simboli) John Backus ('77) Grace Hopper John McCarthy ('71)
5 Algol60 McCarthy Bauer Backus ( 78) Naur ('05) Perlis ('66) Sintassi formale (BNF), scoping statico, sistema di tipi call by name
6 LISP: obiettivi applicativi Elaborazione simbolica list processing, ossia manipolazione di formule logiche (prova programmi, AI) di analisi (derivazione, integrazioni) programmi interpretazione/compilazione trasformazione verifica alberi di ricerca AI (non-determinismo)
7 Esempio Dimostrazione automatica: Riconoscere P(a) come P[x/a] verificare la corrispondenza tra x e a Costruire Q[x/a] sostituendo ogni "x" (libero) in Q con "a"
8 Esempio: giochi
9 LISP: obiettivi teorici Trattare i linguaggi come oggetti matematici "ragionar sui programmi" to use a prefix notation (emphasizing the operator rather than the operands of an expression); to use the concept of function as widely as possible; to provide higher order functions and hence a notation for functions (based on Church s (1941) λ-notation); es: ottimizzazione equivalenza per sostituzione trasparenza del riferimento (referencial transparency) x:=f();p(x,x) p(f(),f())? To avoid the need for explicit erasure of unused list structures
10 LISP: struttura dati S-expr : (PLUS A B) espressioni simboliche, perché le foglie sono simboli detti anche atomi perchè privi di struttura ma ci torniamo sopra cfr arrayin FORTRAN, recordin COBOL oggi coesistono naturalmente
11 LISP: struttura dati Alberi binari Proto sintassi astratta (PLUS A B) abbrevia (PLUS. (A. (B. NIL))) struttura a lato rappresenta A+B CAR CDR Cella cons = parola IBM 704 CAR = contents of the addresspart of register CDR = contents of the decrementpart of register
12 LISP: codice Nei progetti iniziali: sintassi concreta MLISP (Meta LISP) o LISP2, per scrivere i programmi Espressione aritmetica da manipolare :(PLUS A B) da calcolare : plus[a;b] S-expr usate come rappresentazione interna ritardata realizzazione del traduttore codifica in S-expr del linguaggio per definirne la semantica Incidente favorevole (insieme all'interpretazione): LISP1.5 è type-less (come il linguaggio macchina) favorisce l auto modifica dei programmi "Syntactic sugar causes cancer of the semicolon." Alan Perlis in realtà ci sono i numeri (interi) Controllo dinamico dei tipi (a tempo d'esecuzione)
13 LISP e concorrenti Linguaggi funzionali vs imperativi (con stato) LISP: ambiente di valutazione delle variabili a-list : Nomi Valori» semantica per riferimento, contrapposta a FORTRAN e COBOL valutazione di una variabile: env o mem» env : Nomi Locazioni» mem : Locazioni Valori semantica per valore degli altri terminologia antica» da History of Programming Languages
14 LISP e concorrenti Altri linguaggi "simbolici" SNOBOL manipolava direttamente stringhe di caratteri "pattern" per individuare i punti da sostituire, back-tracking IPL (sexi) pioneered the concept of list processing albeit in an assembly-language style» (A. Newell, C. Shaw, and H. Simon (Nobel '78))
15 Cose di casa nostra Anni '60: Roma ROMALISP C. Böhm et al: ri-fare per capire per usare: non c'era SourceForge!» non era ovvio portare un sistema di programmazione da una macchina a un'altra Anni '70: Pisa MagmaLISP CM, G. Pacini e F. Turini estensione per non-determinismo
16 Il linguaggio (puro) Primitive di manipolazione S-expr: CONS : S-expr ₓ S-expr S-expr CAR, CDR : S-expr S-expr ATOM : S-expr {T, NIL} EQ : Atom ₓ Atom {T, NIL} Forme: espressioni da valutare speciali: (QUOTE f) (COND (p 1 f 1 )... (p n f n ))
17 Il linguaggio puro (2) Forme generali: (f op f 1... f n ) : applica f op ai valori ottenuti da f 1... f n Definizioni (LAMBDA x f) Dichiarazione (LABEL fn f) : definisce f(x) sostituisce il combinatore Y: : nomina f come fn (ricorsione)
18 Il linguaggio (pragmaticamente impuro) Componente imperativa DEFINE, per le definizioni di funzione PROG, SETQ, per programmi sequenziali RPLACA, RPLACD, per effetti collaterali sulle liste» ridefinizione dei puntatori» incubo teorico
19 Evalquote e Apply (primitive)
20 Apply (2)
21 Eval
22 Un esempio, finalmente! First = car, rest = cdr Non serve label Ricorda qualcosa?
23 Un altro esempio Tests è la lista di coppie del cond Second = cadr
24 L'interprete metacircolare
25 Espressioni condizionali (COND) if p 1 then c 1 elseif... elseif p n then c n endif
26 Scelte in FORTRAN if x<ythen \\21 else \\22 end if \\24 Costrutto di controllo trasposto dal linguaggio di macchina: IF(X-Y)21,22,22 C X-Y< GOTO 24 C X-Y C JOIN 24...
27 Apply pairs aggiunge a env i legami parametri-argomenti
28 Eval
29 Esempio: Wang algorithm......
30 Wang algorithm (2)......
31 LISP e λ-calcolo λ-calcolo formalismo teorico per lo studio della calcolabità equivalente alla Macchina di Turing Universale (A. Church, 1936) paradigma: calcolo di funzioni: calcolo per riduzione (sostituzione testuale): nessuna struttura dati: e.g.: interi codificati (astutamente) come funzioni
32 LISP e λ-calcolo (2) LISP (puro) struttura dati: S-expr simula la sostituzione testuale a-list (association list) ambiente di valutazione: a-list : Nomi Valori Semantica Lips1.5: con interprete (meta-circolare) λ-calcolo: nessuna fino al 1975 (Dana Scott ( 76)) McCarthy: "non ho capito molto del lavoro di Church" "ho preso la notazione per le funzioni"
33 Vera scienza
34 Inserto: il combinatore paradossaley se N= (n=0->1,n*f(n-1)) λf. λn.n assomiglia al fattoriale ((λf. λn.n)?) 3 ((λf. λn.n) (λf. λn.n) ) 3 = (λn. (n=0->1,n*(λf. λn.n (n-1)) )) 3 = 3*(λf. λn.n (n-1)) ci metto (Y λf. λn.n), dove Y = (λg. (λg.g(g g)) (λg.g(g g))) :-(
35 Y F punto fisso di F Y F = (λg.(λg.g(g g)) (λg.g(g g))) F = (λg. F(g g)) (λg. F(g g)) = F( (λg. F(g g)) (λg. F(g g)) ) = F( Y F ) per cui, dato che N = (n=0->1,n*f(n-1)) ((λf. λn.n) (Yλf. λn.n)) 3 3=0->1,3*((Yλf. λn.n) 2) 3*( ((λf. λn.n) (Y λf. λn.n)) 2 ) diventa ma YF = F(YF) e così via...
36 Scherzi della memoria Acknowledgments The inadequacy of the LAMBDA-notation for naming recursive functions was noticed by N. Rochester, and he discovered an alternative to the solution involving label which has been used here.
37 Binding dinamico (def show (lambda () x )) (def try (lambda (x) (show) )) (show) (x)? (try t) (show) [x/t] [x/t](x) t In C ecc, il comportamento di show è univoco: il primo x è indefinito binding statico: le due "x" si riferiscono a due celle diverse In LISP, dipende dal contesto d'invocazione: binding dinamico λz.pz = 2 o 3?
38 Involontario Scoperto da J. Slagle Durante la tesi (integrazione simbolica) (def testr (lambda (x p f u) (cond ((p x) (f x)) ((atom x) (u)) (t (testr (cdr x) p f (lambda () (testr (car x) p f u)))) ) )) Tipico esempio di programmazione funzionale Problema noto come FUNARG(functional argument)
39 La madre di tutte le funzioni higher order (defun map (FUN X) (cond((null X) X) (t(cons (FUN (first X)) (map FUN (rest X> map restituisce la lista dei risultati dell applicazione di fun a ogni elemento di X Alla base del modello MapReduce di Google
40 Esempio (map '(lambda (x) (list x x)) '(CHITTY BANG)) restituisce X è zucchero sintattico per (QUOTE X) ((CHITTY CHITTY) (BANG BANG)) Se usiamo map per definire consall, tale che (consall'beat '(HARVARD YALE)) dia ((BEAT HARVARD) (BEAT YALE))
41 Esercizio (defun consall(x L) (map '(lambda(y)???) L)) (consall 'BEAT '(HARVARD YALE)) dia ((BEAT HARVARD) (BEAT YALE))
42 Cave! (defun consall(x YS) (map '(lambda(y) (list X y)) YS)) dà invece: ((HARVARD YALE) HARVARD) ((YALE) YALE)) perché X è legato a (HARVARD YALE) e non a BEAT: (defun map (FUN X) La X di map maschera quella di consall Cambiare nome è poco generale...
43 La soluzione: chiusure Due nuove forme speciali FUNCTION per marcare le funzioni CLOSURE per conservare l ambiente Si risolve anche il problema delle funzioni come valori proceduralizzazione della conoscenza
44 La soluzione: nuovi problemi? Ambiente: Interprete: lista Compilatore: stack Stack: Funarg : abbastanza bene Funzioni come valori: Havoc Cactus stack
45 La storia continua... J. Moses nel 67 osserva many LISP implementers don t care about the FUNARG problem, i.e. that interpreted and compiled programs can behave differently E più naturale implementare il binding statico in un compilatore che in un interprete... Scheme, un dialetto del LISP sviluppato negli anni settanta, oltre a usare lo statico, abbandona completamente lo stack, e alloca i frame nello heap
46 Le liste di proprietà Avevamo detto: "atomi, perchè senza struttura" In realtà sono "classi statiche"/"record" In LISP 1.5 predefinite, con i selettori PNAME: nome esterno (lista di caratteri) EXPR: definizione di funzione (lambda-expr) SUBR: definizione di funzione (primitiva) TRACE: indicatore di traccia dell'esecuzione APVAL: valore di top-level (S-expr)
47 Le liste di proprietà APVAL: NIL vale NIL, T vale T, F vale T cset[obj;value] permette di definirlo Eval si ridefinisce anche in termini di π : Atom ₓ Atom S-expr
48 Poi... putprop: Atom ₓ S-expr ₓ Atom S-expr apply[putprop;(a V P);...] ha valore V (= identità sul secondo argmento) effetto collaterale: definisce la proprietà P di A Record dinamici selettori definibili a run-time MLISP2 (1973) usa la "dot notation"
49 Garbage-collection Atomi p-list Pila di controllo a-list Lista libera
50 LISP: innovazioni P. Graham, What Made LISP Different, May Conditionals They were invented by McCarthy for LISP: since he was on the Algol committee got conditionals into Algol, whence they spread to most other languages. 2. A function type In LISP, functions are first class objects, they're a data type just like integers, strings, etc, and can be stored in variables, can be passed as arguments, and so on. 3. Recursion Recursion existed as a mathematical concept before LISP of course, but LISP was the first programming language to support it.
51 LISP: innovazioni (2) 4. A new concept of variables In LISP, all variables are effectively pointers. Values are what have types, not variables, and assigning or binding variables means copying pointers, not what they point to. 5. Garbage - collection 6. Programs composed of expressions LISP programs are trees of expressions, each of which returns a value. This is in contrast to Fortran and most succeeding languages, which distinguish between expressions and statements.
52 LISP: innovazioni (3) 7. A symbol type Symbols differ from strings in that you can test equality by comparing a pointer. 8. A notation for code Using trees of symbols 9. The whole language always available There is no real distinction between read -time, compile - time, and runtime. [...] reading at runtime enables programs to communicate using s-expr, an idea recently reinvented as XML.
53 Due culture... When LISP was first invented, all these ideas were far removed from ordinary programming practice, which was dictated largely by the hardware available in the late 1950s. Over time, the default language, embodied in a succession of popular languages, has gradually evolved toward LISP:
54 Compilatore Meglio: generatore di codice La sintassi astratta viene gratis! self-hosting: compila se stesso Conviene una macchina intermedia Lisp-machine Reale, da Symbolics Esercizio: trasformare l interprete in un compilatore
55 Due culture Conditionals 2. A function type 3. Recursion 4. A new concept of variables 5. Garbage collection are now widespread. 6. Programs composed of expressions -is starting to appear in the mainstream 7. A symbol type -Python has a form of this, though there doesn't seem to be any syntax for it. 8. A notation for code 9. The whole language always available - are so far still unique tolisp
56 LISP vs il resto del mondo Though useful to present-day programmers, it's strange to describelisp in terms of its variation from the random expedients other languages adopted. La vitalità del LISP si deve probabilmente alla flessibilità che gli deriva in definitiva dalla sua originaria accidentale type-freeness. Oggi l'interesse verso la manipolazione di programmi, e più in generale di modelli, (metaprogrammazione) riporta in auge quest concetti.
57 Conclusioni Graham dice ancora: That [la flessibilità] was not, probably, how McCarthy thought of it. LISP wasn't designed by to fix the mistakes in Fortran LISP came about more as the byproduct of an attempt to axiomatize computation. Un interesse teorico simile si ha oggi per sistemi di tipi higher order: permettere di manipolare funzioni di funzioni con garanzie tipo quelle fornite dai correnti linguaggi per il prim'ordine.
58 Bibliografia J. McCarthy et al. LISP 1.5 Manual (1963) J. McCarthy. History of LISP. Newell, A. and F.C. Shaw. "Programming the Logic Theory Machine." Feb Proceedings of the Western Joint Computer Conference, pp D.C. Smith, H.J. Enea. MLISP2 (1973)
59 Bibliografia D. S. Scott,"Data types as lattices". LNCS 499, P. Graham. ANSI Common LISP. Prentice-Hall, P. Graham. What Made LISP Different. May J. Moses. The Function of FUNCTION in LISP Or Why the FUNARG Problem Should be Called the Environment Problem. MIT Mem G. Steele. A History of Scheme. SchemeHistory-2006public.pdf
EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO
EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO Linguaggi di programmazione classificati in base alle loro caratteristiche fondamentali. Linguaggio macchina, binario e fortemente legato all architettura. Linguaggi
DettagliProgrammazione Funzionale
Programmazione Funzionale LP imperativi: apparenza simile modello di progettazione = macchina fisica Famiglia dei LP imperativi = progressivo miglioramento del FORTRAN Obiezione: pesante aderenza dei LP
DettagliElementi di semantica operazionale
Elementi di semantica operazionale 1 Contenuti sintassi astratta e domini sintattici un frammento di linguaggio imperativo semantica operazionale domini semantici: valori e stato relazioni di transizione
DettagliElementi di semantica denotazionale ed operazionale
Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato
DettagliCapitolo 5: Algol 60, Pascal e C
Capitolo 5: Algol 60, Pascal e C Algol 60 (58-63) -Backus, McCarthy -fino al Pascal (70) è stato lo standard accademico punti positivi -BNF!! -block structure (begin-end), recursion, higher order functions,
DettagliLezione 8. La macchina universale
Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione
DettagliLINGUAGGI DI PROGRAMMAZIONE
LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di
DettagliCOS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle
DettagliCos è un Calcolatore?
Cos è un Calcolatore? Definizione A computer is a machine that manipulates data according to a (well-ordered) collection of instructions. 24/105 Riassumendo... Un problema è una qualsiasi situazione per
DettagliLinguaggi e Paradigmi di Programmazione
Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una
DettagliBrevissima introduzione al Lisp
Brevissima introduzione al Lisp Versione preliminare Giorgio Ausiello, Luigi Laura May 16, 2001 Queste pagine costituiscono un riferimento per gli studenti del corso di Informatica Teorica e non hanno
DettagliLinguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni
Linguaggi per COMUNICARE Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni Sintassi e semantica dei linguaggi Un informazione può : Essere
DettagliAppunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione
Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Marco Liverani (liverani@mat.uniroma3.it)
DettagliStored Procedures. Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma
Stored Procedures Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma Progetto di Applicazioni Software Stored Procedure e User Defined
DettagliCorso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 3 Alberto Ceselli alberto.ceselli@unimi.it Università degli Studi di Milano 5 Marzo 2013 Storicamemente Introduzione al paradigma funzionale 1977: ACM Turing
DettagliConstant Propagation. A More Complex Semilattice A Nondistributive Framework
Constant Propagation A More Complex Semilattice A Nondistributive Framework 1 The Point Instead of doing constant folding by RD s, we can maintain information about what constant, if any, a variable has
DettagliFondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main
Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli
DettagliIntroduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali
a Visual Basic Lezione 1 Concetti base e istruzioni condizionali Mario Alviano Introduzione all informatica Università della Calabria http://alviano.net/introinfo A.A. 2008/09 Introduzione Un esempio:
DettagliOggetti Lezione 3. aspetti generali e definizione di classi I
Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione
DettagliMetodologie di programmazione in Fortran 90
Metodologie di programmazione in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2007/2008 Fortran 90: Metodologie di programmazione DIS - Dipartimento di
DettagliAlgoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.
Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito
DettagliGESTIONE INFORMATICA DEI DATI AZIENDALI
GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming
DettagliLaboratorio di Informatica
Laboratorio di Informatica Introduzione a Python Dottore Paolo Parisen Toldin - parisent@cs.unibo.it Argomenti trattati Che cosa è python Variabili Assegnazione Condizionale Iterazione in una lista di
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
Dettagli12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)
12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,
DettagliProgrammazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 2 - Funzioni Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2.
DettagliFondamenti di Programmazione
Fondamenti di Programmazione Capitolo 2 Variabili, Espressioni e Comandi Prof. Mauro Gaspari: gaspari@cs.unibo.it Valori e Tipi Un valore (= value) è una delle entità fondamentali che i programmi sono
DettagliQuestion 1: introduction to computer programming
Question 1: introduction to computer programming Question 1: introduction to computer programming What is a compiler? (4 points). Cos è un compilatore? (4 punti). c 2006 Marco Bernardo 1/14 Question 1:
DettagliINFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno
INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno UD 3.1b: Costrutti di un Algoritmo Dispense 1.2 I Costrutti di base 13 apr 2010
DettagliSommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.
Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell
DettagliCorso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 3 Alberto Ceselli (thanks C. Braghin) ceselli@dti.unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 09 Marzo 2009 Storicamemente
DettagliProgramma di Paradigmi e possibili domande. Capitolo 1
Definizione di macchina astratta Programma di Paradigmi e possibili domande Capitolo 1 Una macchina astratta per il linguaggio L detta ML, è un qualsiasi insieme di algoritmi e strutture dati che permettono
DettagliVariabili e tipi di dato
Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per
DettagliAlgoritmi e Complessità
Algoritmi e Complessità Università di Camerino Corso di Laurea in Informatica (tecnologie informatiche) III periodo didattico Docente: Emanuela Merelli Email:emanuela.merelli@unicam.it Lezione 2 Teoria
DettagliInformazione analogica e digitale
L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica
Dettagli(anno accademico 2008-09)
Calcolo relazionale Prof Alberto Belussi Prof. Alberto Belussi (anno accademico 2008-09) Calcolo relazionale E un linguaggio di interrogazione o e dichiarativo: at specifica le proprietà del risultato
DettagliProgrammazione ad Oggetti. Java Parte I
Programmazione ad Oggetti Java Parte I Overview Caratteristiche generali 1 Caratteristiche generali Un moderno linguaggio orientato agli oggetti Pensato per lo sviluppo di applicazioni che devono essere
DettagliCapitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.
Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2
DettagliDispensa di database Access
Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di
DettagliProcedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM
Procedure memorizzate SQL-2003/PSM Procedure memorizzate nel database Programmazione general-purpose Leggere sezione 8.2 di Garcia-Molina et al. Lucidi derivati da quelli di Jeffrey D. Ullman 1 Una estensione
DettagliAlgebra Booleana ed Espressioni Booleane
Algebra Booleana ed Espressioni Booleane Che cosa è un Algebra? Dato un insieme E di elementi (qualsiasi, non necessariamente numerico) ed una o più operazioni definite sugli elementi appartenenti a tale
DettagliNell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo
Nell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo - la durata del mutuo in anni - l importo del mutuo
DettagliTipi di Dato Ricorsivi
Tipi di Dato Ricorsivi Luca Abeni September 2, 2015 1 Tipi di Dato Vari linguaggi di programmazione permettono all utente di definire nuovi tipi di dato definendo per ogni nuovo tipo l insieme dei suoi
DettagliAlgebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE
Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE Andrea Bobbio Anno Accademico 2000-2001 Algebra Booleana 2 Calcolatore come rete logica Il calcolatore può essere visto come una rete logica
DettagliTipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
DettagliRicapitoliamo. Ricapitoliamo
Ricapitoliamo Finora ci siamo concentrati sui processi computazionali e sul ruolo che giocano le procedure nella progettazione dei programmi In particolare, abbiamo visto: Come usare dati primitivi (numeri)
DettagliCorso di INFORMATICA 2 (Matematica e Applicazioni)
Università di Camerino Scuola di Scienze e Tecnologie Sezione di Matematica Corso di INFORMATICA 2 (Matematica e Applicazioni) Anno Accademico 2014/15 3 Anno Primo Semestre Docenti: Paolo Gaspari Roberto
DettagliInterpretazione astratta
Interpretazione astratta By Giulia Costantini (819048) e Giuseppe Maggiore (819050) Contents Interpretazione astratta... 2 Idea generale... 2 Esempio di semantica... 2 Semantica concreta... 2 Semantica
DettagliLE SUCCESSIONI 1. COS E UNA SUCCESSIONE
LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe
DettagliBreve Excursus su Evoluzione della Programmazione. Corso di Linguaggi e Metodologie di Programmazione
Breve Excursus su Evoluzione della Programmazione Corso di Linguaggi e Metodologie di Programmazione Introduzione Le slide presenti in questo documento hanno il solo scopo di riassumere i momenti fondamentali
DettagliCodifica: dal diagramma a blocchi al linguaggio C++
Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU
DettagliCompatibilità del Portale Piaggio con Internet Explorer 10 e 11. Internet Explorer 10
Italiano: Explorer 10 pagina 1, Explorer 11 pagina 2 English: Explorer 10 page 3 and 4, Explorer 11 page 5. Compatibilità del Portale Piaggio con Internet Explorer 10 e 11 Internet Explorer 10 Con l introduzione
Dettagli3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)
Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Meccanica (A-K) 3. (testo di riferimento: Bellini-Guidi) Ing. Agnese Pinto 1 di 28 Linguaggi di programmazione Un programma è un algoritmo
DettagliLaurea in Ingegneria Informatica Facoltà di Ingegneria Università di Roma La Sapienza. Dispense del Corso di Intelligenza Artificiale
Laurea in Ingegneria Informatica Facoltà di Ingegneria Università di Roma La Sapienza Dispense del Corso di Intelligenza Artificiale Anno Accademico 2003/04 Linguaggi per l Intelligenza Artificiale Daniele
DettagliJava: Compilatore e Interprete
Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT
DettagliIntroduzione ai Web Services Alberto Polzonetti
PROGRAMMAZIONE di RETE A.A. 2003-2004 Corso di laurea in INFORMATICA Introduzione ai Web Services alberto.polzonetti@unicam.it Introduzione al problema della comunicazione fra applicazioni 2 1 Il Problema
DettagliIl tipo di dato astratto Pila
Il tipo di dato astratto Pila Il tipo di dato Pila Una pila è una sequenza di elementi (tutti dello stesso tipo) in cui l inserimento e l eliminazione di elementi avvengono secondo la regola seguente:
DettagliLaboratorio Matematico Informatico 2
Laboratorio Matematico Informatico 2 (Matematica specialistica) A.A. 2006/07 Pierluigi Amodio Dipartimento di Matematica Università di Bari Laboratorio Matematico Informatico 2 p. 1/1 Informazioni Orario
DettagliProof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme
G Pareschi Principio di induzione Il Principio di Induzione (che dovreste anche avere incontrato nel Corso di Analisi I) consente di dimostrare Proposizioni il cui enunciato è in funzione di un numero
DettagliAPI e socket per lo sviluppo di applicazioni Web Based
API e socket per lo sviluppo di applicazioni Web Based Cosa sono le API? Consideriamo il problema di un programmatore che voglia sviluppare un applicativo che faccia uso dei servizi messi a disposizione
DettagliIstituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni
Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni Fondamenti di Informatica Modulo 1 Programma dell'a.a. 2003/2004 Luigi Romano Dipartimento di Informatica
DettagliProcesso di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico
Processo di risoluzione di un problema ingegneristico 1. Capire l essenza del problema. 2. Raccogliere le informazioni disponibili. Alcune potrebbero essere disponibili in un secondo momento. 3. Determinare
DettagliIntroduzione ai Metodi Formali
Intruzione ai Meti Formali Sistemi software anche molto complessi regolano la vita quotidiana, anche in situazioni life-critical (e.g. avionica) e business-critical (e.g. operazioni bancarie). Esempi di
DettagliINTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI
INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.
DettagliIl software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi
Il Software Il software impiegato su un computer si distingue in: Software di sistema Sistema Operativo Compilatori per produrre programmi Software applicativo Elaborazione testi Fogli elettronici Basi
DettagliIntroduzione a Matlab
Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie dell Informazione via Bramante 65, 26013 Crema (CR), Italy ruggero.donida@unimi.it Perché? MATLAB is a high-level technical computing
DettagliIl test di Turing. Seminario. Ester Dalvit. 22 marzo 2005. Il test di Turing p. 1/1
Il test di Turing Seminario Ester Dalvit 22 marzo 2005 Il test di Turing p. 1/1 Intelligenza artificiale Una macchina compie in modo efficiente e veloce attività come eseguire calcoli aritmetici Il test
DettagliUniversità di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record
DettagliFondamenti dei linguaggi di programmazione
Fondamenti dei linguaggi di programmazione Aniello Murano Università degli Studi di Napoli Federico II 1 Riassunto delle lezioni precedenti Prima Lezione: Introduzione e motivazioni del corso; Sintassi
DettagliAlcune nozioni di base di Logica Matematica
Alcune nozioni di base di Logica Matematica Ad uso del corsi di Programmazione I e II Nicola Galesi Dipartimento di Informatica Sapienza Universitá Roma November 1, 2007 Questa é una breve raccolta di
DettagliCosa è un foglio elettronico
Cosa è un foglio elettronico Versione informatica del foglio contabile Strumento per l elaborazione di numeri (ma non solo...) I valori inseriti possono essere modificati, analizzati, elaborati, ripetuti
DettagliSQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12
SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I Anno accademico 2011/12 DEFINIZIONE Il concetto di vista 2 È una relazione derivata. Si specifica l espressione che genera il suo contenuto.
DettagliL interesse nella macchina di Turing
Aniello Murano Macchina di Turing universale e problema della fermata 6 Lezione n. Parole chiave: Universal Turing machine Corso di Laurea: Informatica Codice: Email Docente: murano@ na.infn.it A.A. 2008-2009
DettagliLogica e codifica binaria dell informazione
Politecnico di Milano Corsi di Laurea in Ingegneria Matematica e Ingegneria Fisica Dipartimento di Elettronica ed Informazione Logica e codifica binaria dell informazione Anno Accademico 2002 2003 L. Muttoni
DettagliLinguaggi di Programmazione LISP
Linguaggi di Programmazione LISP Carlo Lepori Scuola di Ingegneria del Canton Ticino (STS) Introduzione In questa parte del corso Linguaggi di programmazione affronteremo alcune tematiche riguardanti la
DettagliIntroduzione al MATLAB c Parte 2
Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione
DettagliLinguaggi di programmazione
Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input
DettagliAgent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica
Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Linguaggi di Programmazione Michele Tomaiuolo Linguaggi macchina I
DettagliI PROBLEMI ALGEBRICI
I PROBLEMI ALGEBRICI La risoluzione di problemi è una delle attività fondamentali della matematica. Una grande quantità di problemi è risolubile mediante un modello algebrico costituito da equazioni e
DettagliUniversita' degli Studi di Udine UNA PROPOSTA PER L'INTRODUZIONE DI CAPACITA' DI META-RAPPRESENTAZIONE IN UN LINGUAGGIO DI PROGRAMMAZIONE LOGICA
Universita' degli Studi di Udine FACOLTA' DI SCIENZE MATEMATICHE FISICHE E NATURALI UNA PROPOSTA PER L'INTRODUZIONE DI CAPACITA' DI META-RAPPRESENTAZIONE IN UN LINGUAGGIO DI PROGRAMMAZIONE LOGICA Relatore:
DettagliE una notazione per descrivere gli algoritmi.
Linguaggio di Programmazione E una notazione per descrivere gli algoritmi. Programma:: e la rappresentazione di un algoritmo in un particolare linguaggio di programmazione. In generale, ogni linguaggio
DettagliFondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)
Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Definiamo innanzitutto una relazione d ordine tra le funzioni. Siano φ e ψ funzioni
DettagliAllocazione dinamica della memoria - riepilogo
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della
DettagliProgrammi. Algoritmi scritti in un linguaggio di programmazione
Programmi Algoritmi scritti in un linguaggio di programmazione Sistema operativo:programma supervisore che coordina tutte le operazioni del calcolatore Programmi applicativi esistenti Sistemi di videoscrittura
Dettaglicon ANTLR tesi di laurea Anno Accademico 2007-2008 Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr. 534001505
tesi di laurea con ANTLR Anno Accademico 2007-2008 Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr. 534001505 Obiettivo Analisi statica di codice sorgente, realizzato in javascript,
DettagliCONCETTO DI LIMITE DI UNA FUNZIONE REALE
CONCETTO DI LIMITE DI UNA FUNZIONE REALE Il limite di una funzione è uno dei concetti fondamentali dell'analisi matematica. Tramite questo concetto viene formalizzata la nozione di funzione continua e
DettagliIl software e la programmazione
Il software e la programmazione Concetti base sul software Elementi di programmazione Cenni sul linguaggio Pascal Che cosa è il software Determina ciò che un computer può fare Include istruzioni memorizzate
DettagliMacchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:
Sommario Macchine a stati finiti M. Favalli Engineering Department in Ferrara 4 Sommario (ENDIF) Analisiesintesideicircuitidigitali / 35 (ENDIF) Analisiesintesideicircuitidigitali 2 / 35 4 Le macchine
DettagliFONDAMENTI di INFORMATICA L. Mezzalira
FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software
Dettagli4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0
Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice
DettagliIl calcolatore oggi : UN SISTEMA DI ELABORAZIONE
Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE hardware Firmware, software memorizzato su chip di silicio Sistema Operativo venduto con l, comprende vari programmi di gestione del sistema Applicativo,
DettagliIl linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.
(Structured Query Language) : Il linguaggio è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. prima versione IBM alla fine degli anni '70 per un prototipo di ricerca (System
DettagliAnalizzatore lessicale o scanner
Analizzatore lessicale o scanner Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser. Lo scanner, attraverso un esame carattere per carattere dell'ingresso,
DettagliA.A. 2006/2007 Laurea di Ingegneria Informatica. Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio
A.A. 2006/2007 Laurea di Ingegneria Informatica Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio Obbiettivi Acquisire familiarità con la nozione di oggetto Apprendere le proprietà
DettagliIl Software. Il software del PC. Il BIOS
Il Software Il software del PC Il computer ha grandi potenzialità ma non può funzionare senza il software. Il software essenziale per fare funzionare il PC può essere diviso nelle seguenti componenti:
DettagliGli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori
Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine
DettagliProgettazione : Design Pattern Creazionali
Progettazione : Design Pattern Creazionali Alessandro Martinelli alessandro.martinelli@unipv.it 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali
DettagliStrumenti per la Progettazione
Strumenti per la Progettazione Diversi Ingegneri usano semplici Calcolatrici Il 40% usa fogli Spreadsheets tipo Excel Il 20%, per risolvere i loro calcoli, scrive programmi in linguaggi tipo C o Fortran
DettagliINFORMATICA 1 L. Mezzalira
INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello
DettagliTipologie di macchine di Turing
Tipologie di macchine di Turing - Macchina di Turing standard - Macchina di Turing con un nastro illimitato in una sola direzione - Macchina di Turing multinastro - Macchina di Turing non deterministica
Dettagli