Fondamenti di Comunicazione Digitale

Slides:



Advertisements
Presentazioni simili
- le Medie la Moda la Mediana
Advertisements

Equazioni e calcoli chimici
Definitezza Vogliamo poter richiedere la “definitezza” delle funzioni
Punti Fissi.
I numeri naturali ….. Definizione e caratteristiche
Equazioni di primo grado
____________________
Sommario Nelle lezioni precedenti abbiamo introdotto tutti gli elementi che formano un particolare tipo di linguaggio logico, denominato linguaggio predicativo.
Sintassi (prima parte)
Gli elementi fondamentali Incominciamo il nostro viaggio …
Linguaggi Regolari e Linguaggi Liberi
La comunicazione.
Algoritmi e Programmazione
1 Linguaggi di Programmazione - elementi Corso di Laurea in Informatica (AA 2005/2006) Gabriella Pasi e Carla Simone
= 2x – 3 x Definizione e caratteristiche
Il linguaggio della geometria
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Il ragionamento classico
Interpretazione Astratta
Semantiche dei linguaggi di programmazione
L’algebra come linguaggio simbolico
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Iterazione enumerativa (for)
Intelligenza Artificiale 1 Gestione della conoscenza lezione 8
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Corso di Informatica (Programmazione)
EQUAZIONI DI PRIMO GRADO
Scuola Secondaria di 1° Grado - Classe I F - Favara
Modelli simulativi per le Scienze Cognitive
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
1 Implementazione di Linguaggi 2 Implementazione di Linguaggi 2 Federico Bernardi Type checking 2° parte Type checking 2° parte - Equivalenza di type expressions.
Semantica di Tarski.
Unità Didattica 1 Algoritmi
Unità Didattica 2 I Linguaggi di Programmazione
I numeri by iprof.
Corso di Laurea in Ingegneria per lAmbiente e il Territorio Informatica per lAmbiente e il Territorio Docente: Giandomenico Spezzano Tutor: Alfredo Cuzzocrea.
Notazioni Asintotiche e Ordini di Grandezza delle funzioni
Intelligenza Artificiale
Ingegneria della conoscenza e sistemi esperti Dario Bianchi, 1999 Conoscenza e ragionamento Logica dei predicati del primo ordine.
Ingegneria della conoscenza e sistemi esperti Dario Bianchi, 1999 Logica dei predicati del primo ordine.
Fondamenti di Informatica Algoritmi
Espressioni condizionali
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
LINGUAGGI DI PROGRAMMAZIONE
Intelligenza Artificiale - AA 2001/2002 Logica formale (Parte 2) - 1 Intelligenza Artificiale Breve introduzione alla logica classica (Parte 2) Marco Piastra.
Intelligenza Artificiale
Esercizio Questo esercizio riguarda i MODELLI di COMUNICAZIONE ed è stato proposto dal Prof. Mussio, docente di Fondamenti di comunicazione digitale, durante.
Logica Matematica Seconda lezione.
Elementi di Informatica di base
Le distribuzioni campionarie
Lo sviluppo del software e i linguaggi di programmazione
BIOINFO3 - Lezione 15 ISTRUZIONI
EQUAZIONI DI PRIMO GRADO
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Sistemi basati su conoscenza Linguaggio naturale: grammatiche Prof. M.T. PAZIENZA a.a
Intelligenza Artificiale 1 Gestione della conoscenza lezione 19 Prof. M.T. PAZIENZA a.a
Rappresentazione dell’informazione nel calcolatore.
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
La logica Dare un significato preciso alle affermazioni matematiche
Grammatiche Grammatiche libere da contesto Grammatiche regolari
public class volume { public static void main (String[] args) { final double bott_vol =2.0; final double latt_vol = 0.355; int bott_num = 4; int latt_num.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
6. LIMITI Definizione - Funzioni continue - Calcolo dei limiti
Linguaggi, stringhe e alfabeti. Linguaggi e grammatiche Un linguaggio è un sistema di comunicazione tra persone che permette di trasmettere informazioni.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Logica Lezione 8, DISTRIBUIRE COMPITO 1.
Transcript della presentazione:

Fondamenti di Comunicazione Digitale FCD Fondamenti di Comunicazione Digitale P.MUSSIO G.VALLE Questi lucidi sono stati preparati da Piero Mussio, Università degli Studi di Milano, per uso didattico. Essi contengono materiale originale di proprietà dell'Università degli Studi di Milano e/o figure di proprietà di altri autori, società e organizzazioni di cui e' riportato il riferimento. Tutto o parte del materiale può essere fotocopiato per uso personale o didattico ma non può essere distribuito per uso commerciale. Qualunque altro uso richiede una specifica autorizzazione da parte dell'Università degli Studi di Milano e degli altri autori coinvolti.

Corso Fondamenti di Comunicazione Digitale Parte prima: Il modello adottato nel corso di processo di comunicazione digitale Una discussione sul concetto di metalinguaggio e della sua utilità per il comunicatore digitale Umano Calcolatore Nel Contesto Processo di Sviluppo

Metalinguaggio Metá ‘sopra ‘, ‘oltre ’+ linguaggio Un linguaggio che ha per oggetto un altro linguaggio Usato in informatica per specificare in forma finita le regole con cui si definisce un linguaggio di programmazione

Linguaggio di programmazione Due definizioni informali: Un po’ più rigorosa: l’insieme dei possibili programmi costruiti a partire da un vocabolario di base (insieme finito di simboli) più corrente: una descrizione formale per descrivere algoritmi eseguibile da un calcolatore Un linguaggio di programmazione (def,1) è definito specificando sintassi e la sua semantica

Sintassi e semantica di un linguaggio di programmazione un insieme di regole formali che specificano come si compone un programma a partire da lettere, cifre e altri segni (parentesi, punti etc.) Semantica un insieme di regole formali che specificano il significato di ogni programma sintatticamente valido scritto in quel linguaggio Noi: approccio operazionale e informale alla semantica: operazionale: specifichiamo il comportamento di un calcolatore astratto che esegue il programma scritto nel linguaggio. Informale: non descriveremo la semantica in modo formale N.B.: astratto non virtuale

Un metalinguaggio per la definizione di sintassi BNF: Bakus Naur Form (anni 60):una notazione per rendere precise le specifiche che allora si davano in linguaggio naturale Una regola in BNF: <operator> +- / * I simboli  < >  e operator sono simboli del metalinguaggio (BNF) chiamati anche simboli non terminali I simboli + * / - sono simboli linguaggio che sto definendo chiamati anche simboli terminali. I simboli terminali non compaiono mai alla sinistra di 

Un esempio di grammatica in BNF <expression> <identifier>  (<expression> ) <expression> <operator> <expression> <operator> +- / * <identifier> <letter> <numeral >  <identifier> <letter>  <identifier> <numeral > <letter>  a b c  …….. z <numeral>  0  1 2 ……. 9 I simboli terminali sono: +,-,/,*,a,b, c,….,z, 0,1, 2,…,9 <expression> è il simbolo di partenza (start symbol) Questa è una frase complessa (grammatica) nel metalinguaggio BNF che specifica l’insieme (infinito) delle espressioni aritmetiche di un linguaggio di programmazione realistico anche se ipotetico

Il linguaggio <expression> <identifier>  (<expression> ) <expression> <operator> <expression> <operator> +- / x <identifier> <letter> <numeral >  <identifier> <letter>  <identifier> <numeral > <letter>  a b c  …….. z <numeral>  0  1 2 ……. 9 Il linguaggio delle espressioni aritmetiche è l’insieme delle stringhe di simboli terminali che possono essere generati secondo le regole della grammatica a partire dallo start symbol. a12+b*a3 e (a12+b)*a3 sono frasi del linguaggio delle espressioni perché posso costruirle seguendo le regole della grammatica (a12+b*a3 no perché non si può costruire secondo le regole

Le regole della BNF <expression> <identifier>  (<expression> ) <expression> <operator> <expression> I non terminali che appaiono alla destra di  in una regola debbono apparire a sinistra in qualche regola Una grammatica consiste di un insieme di regole in cui ogni non terminale è definito (appare a sinistra di  ) I simboli terminali debbono essere simboli validi del linguaggio Un unico simbolo non terminale è designato (dal progettista) come simbolo di partenza

Il significato dei metasimboli  sta per “è definito come”  sta per “oppure” e serve a permettere definizioni alternative di uo stesso non terminale <expression> <identifier>  <expression> <operator> <expression> questa regola prescrive che un’espressione è costituita da un <identifier> oppure da una <expression> seguita da un <operator> seguita da un’altra <expression> Questa è una definizione ricorsiva poiché <expression> appare sia a destra che a sinistra di ‘ ‘ : <expression> è definito per mezzo di <expression>

Come si usa una grammatica Si usa per generare stringhe di simboli terminali che appartengono al linguaggio definito. <expression>  <expression> <operator> <expression> <identifier> <operator> <expression> <identifier> <operator> <identifier> <letter> <operator> <identifier> <letter> <operator> <numeral> b <operator> <numeral> b <operator> 2 b / 2 (stringa valida nel linguaggio delle espressioni) Si parte dal simbolo iniziale e si applica una delle definizioni alternative (scelta arbitraria) e.g. <expression> <expression> <operator><expression> Si prosegue sostituendo uno dei non terminali (di nuovo scelto arbitrariamente) (e. g applico <expression> <identifier> al primo <expression> ri-applico <expression> <identifier> al secondo <expression> Applico <identifier> <letter> Sostituisco nuovamente il non terminale <identifier> (scelto arbitrariamente, e.g. <identifier> <numeral>) Applico (in tre passi) <letter>  b, <numeral>  2 e <operator> / e ottengo b/2 che è una stringa valida nel linguaggio delle espressioni

Come si usa una grammatica . <expression>  <expression> <operator> <expression> <identifier> <operator> <expression> <identifier> <operator> <identifier> <letter> <operator> <identifier> <letter> <operator> <numeral> b <operator> <numeral> b <operator> 2 b / 2 (stringa valida nel linguaggio delle espressioni) Il ragionamento è espresso in metalinguagio Tutte queste sono stringhe del metalinguaggio costruite su simboli non erminali e terminali. . Le stringhe del metalinguggio possono perciò contenere stringhe del linguaggio

Cosa significa la stringa ottenuta? Dipende dalle regole di assegnamento che stabilisco Se definisco un calcolatore tale che: ‘a ‘ indica una precisa posizione nella memoria del calcolatore ‘/’ indica l’operazione di somma eseguibile dal calcolatore ‘2’ indica un posizione di memoria del calcolatore il cui contenuto è l’intero 2 il calcolatore interpreta la stringa b/2 come ‘somma il contenuto della cella ‘a’ al contenuto della cella ‘2’ e eseguendo il comando ottiene <contenuto di ‘a’ + 2>

Perché il concetto di metalinguaggio è importante per il CD ? Perché spesso il CD si trova a parlare in linguaggio naturale di problemi e delle loro soluzioni (ad esempio con i clienti o gli utenti del sistema). In queste situazioni, crea messaggi che hanno come contenuto il linguaggio stesso. (ad esempio: cosa intende esattamente con questa parola? è una frase di metalinguaggio) Questa situazione è pericolosa perché può dar luogo a paradossi.

Un esempio Questa frase , scritta sulla slide 11 nl rettangolo, non è vera Se, per semplicità rimpiazziamo la frase con il simbolo ‘S’, otteniamo: - ‘S’ è vera se e solo se la frase nel rettangolo sulla slide 11 non è vera In più- in base al significato assegnato – stabilire empiricamente che (2) - ‘S’ è identica alla sentenza alla frase nel rettangolo sulla slide 11 Identico: che possono sostituirsi l’un l’altro preservando la verità In (1) sostituisco ‘la frase nel rettangolo sulla slide 11 ‘ con ‘S’ e ottengo (3) ‘S’ è vera se e solo se ‘S’ è non vera La (3) è ottenuta con un metodo logicamente inoppugnabile , rappresenta un paradosso

Una analisi del paradosso Questa frase , scritta sulla slide 11 nl rettangolo, non è vera (3) ‘S’ è vera se e solo se ‘S’ è non vera Tarsky analizza le premesse da cui nasce il paradosso : I- abbiamo assunto che il linguaggio contenga le espressioni,ma anche i nomi con cui le indichiamo e il predicato ‘vero ’. Assumiamo anche le espressioni in cui il predicato è usato appartengano al linguaggio (linguaggio semanticamente chiuso) II- le ordinarie regole della logica sono valide nel linguaggio III- le premesse empiriche tipo (2) possono esser stabilite nel linguaggio e trae le conclusioni non ritiene discutibile la III, dificile rinunciare alla II . Rimane il problema di aggirare la I. non usando un linguaggio semanticamente chiuso. . Argomenti discussi, ma c’è accordo sul ritenere che le espressioni che usiamo per formulare affermazioni intorno agli elementi di un certo universo non possono essere confuse con quelle usate per formulare espressioni intorno alle espressioni del primo tipo.

Una soluzione Dividere il linguaggio in due linguaggi: Questa frase , scritta sulla slide 11 nl rettangolo, non è vera (3) ‘S’ è vera se e solo se ‘S’ è non vera Dividere il linguaggio in due linguaggi: Il linguaggio oggetto: che ci permette di esprimerci ri spetto ai fenomeni di un certo universo. Il metalinguaggio: il linguaggio in cui possiamo formulare affermazioni sule espressioni oggetto. Il metalinguaggio deve soddisfare. i- deve permettere di esprimere tutte le espressioni del linguaggio oggetto ii- deve contenere i concetti semantici relativi al linguaggio oggetto, non esprimibili nel linguaggio oggetto In informatica si tende a separare nettamente i due linguaggi, usando notazioni diverse per i simboli terminali e non terminali

Un esempio di quando un CD usa linguaggi e metalinguaggi Un CD progetta ambienti interattivi in cui operatori svolgono diverse attività e ambienti interattivi in cui gli operatori decidono come svolgere quelle attività, Questa seconda attività è un’attività metalinguistica. Nel primo filmato mostra un responsabile di officina che usa un ambiente interattivo per gestire un robot industriale Nel secondo filmato lo stesso responsabile progetta l’interfaccia per un nuovo addetto (liberalità della ETA consulting –Brescia , tesi di Denise Salvi, brescia 2002)

Officina applicativa: linguaggio

Un esempio di quando un CD usa linguaggi e metalinguaggi Nel secondo filmato si usa un ambiente interattivo per costruire o adattare un ambiente interattivo che permette di usare e controllare un robot industriale. In questo caso il responsabile di officina progetta o adatta l’ambiente interattivo usando un metalinguaggio visuale (User Interface Development Environment) (liberalità della ETA consulting –Brescia , tesi di Denise Salvi, brescia 2002)

Officina di sistema: metalinguaggio

Un esempio di grammatica per XML in una notazione più sintetica <document> <prolog> <element> <Misc>* <prolog> <XMLDecl>? <Misc>* (<doctypedecl> <Misc>*)? <XMLDecl>  ‘<?xml’ <VersionInfo> <EncodingDecl>? <SDDecl>? <S>? ‘?>’ … <element>  <EmptyElemTag> | <StartTag> <content> <EndTag> <EmptyElemTag>  ‘<’ <Name> (<S> <Attribute>)* <S>? ‘/>’ <StartTag> ’<’ <Name> (<S> <Attribute>)* <S>? ‘>’ <content>  (<element>|<CharData>|<CDSect>|<Comment> | <Reference>|<PI>)* <Attribute>  <Name> <S>? ‘=’ <S>? <AttValue> <EndTag>  ‘</’ <Name> <S>? ‘>’ <Name>  (<Letter> | ‘_’ | ‘:’) (<NameChar>)* <NameChar>  <Letter> | <Digit> | ‘.’ | ‘ -’ | ‘_’ | ‘:’ |<CombiningChar>|<Extender> <Letter>  a b c  … z <Digit>  0  1 2 …9 <S> (#x20 | #x9 | #xD | #xA)+ spazi, carriage returns, line feeds, or tabs

Applicare la grammatica (1) <document><prolog><element>  <XMLDecl><Misc><element>  <?xml<VersionInfo><EncodingDecl><SDDecl><S>?><Misc><element> … <?xml version="1.0” encoding = “UTF-8” standalone = “yes” ?><Misc><element> <?xml version="1.0” encoding = “UTF-8” standalone = “yes” ?><S><element> <?xml version="1.0” encoding = “UTF-8” standalone = “yes” ?> <element> <StartTag><content><EndTag>  <<Name>><content><EndTag>  <<Letter><NameChar>><content><EndTag>  <e<NameChar>><content> <EndTag>  <e<Letter>><content> <EndTag>  <e1><content> <EndTag>  <el><content> <EndTag>  <el><CDSect><EndTag>  <el><CDStart><Cdata><CDEnd><EndTag>  Dal simbolo di partenza ad una stringa in XML

Applicare la grammatica (2) <?xml version="1.0” encoding = “UTF-8” standalone = “yes” ?> <el><CDStart><Cdata><CDEnd><EndTag>  <el><![CDATA[<Cdata><CDEnd><EndTag>  <el><![CDATA[<Char><CDEnd><EndTag>  <el><![CDATA[Content<CDEnd><EndTag>  <el><![CDATA[Content]]<EndTag>  <el><![CDATA[Content]]</<Name><S>> <el><![CDATA[Content]]</el<S>> <el><![CDATA[Content]]</el > Stringa valida nel linguaggio XML