P03-0503 Formalizzazione ed elaborazione automatica dell

UNIVERSITÀ DEGLI STUDI DI MACERATA
DIPARTIMENTO DI SCIENZE POLITICHE, DELLA COMUNICAZIONE E DELLE RELAZIONI INTERNAZIONALI
CORSO DI LAUREA MAGISTRALE IN
SCIENZE DELLA COMUNICAZIONE PUBBLICA, D'IMPRESA E PUBBLICITÀ
CLASSE LM-59 – ANNO ACCADEMICO 2014/2015
Formalizzazione ed elaborazione automatica
dell'informazione
Progettazione di sistemi multimediali
Simone Carletti – CSIA
Ufficio Web, eLearning, Ricerca e Sviluppo
P03 – 05.03.15
[email protected]
Argomenti (1)
Introduzione alla progettazione del software e allo
sviluppo sostenibile
• Riferimenti nel testo
»
»
»
»
»
»
1.1.
1.3.
1.4.
1.5.
1.6.
1.7.
Il concetto di sviluppo sostenibile
La gestione della globalizzazione dell’informazione
L’informatica sociale
Reti socio tecnologiche di interattività
Il sistema informativo come modello di rete socio…
Punti di osservazione di un sistema informativo
• Approfondimenti
» http://en.wikipedia.org/wiki/Systems_development_life_cycle
» http://it.wikipedia.org/wiki/Metodologia_agile
» “A sustainable development experience”
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
2 di 20
05/03/2015
Argomenti (2)
Formalizzazione ed elaborazione automatica
dell'informazione
• Riferimenti nel testo
»
»
»
»
»
»
2.1. I linguaggi formali
2.2. La macchina di Turing
2.5. Algoritmo: definizione, rappresentazione
2.6. La notazione
2.7. I modelli formali
2.8. Strutture dati e modelli di dati
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
3 di 20
05/03/2015
I linguaggi formali
• Presenti in tutte le applicazioni e in tutte le fasi di uso di un
elaboratore elettronico
»
»
»
»
»
»
linguaggi di specifica, di programmazione, di scripting
linguaggi di configurazione
compilatori e interpreti
linguaggi di marcatura (html, xml ecc)
protocolli di comunicazione
interazione uomo macchina (sequenze di click)
• Paradigmatici nella teoria
» molti problemi informatici sono riconducibili a quello dell'appartenenza di una
stringa ad un linguaggio
• Definibili in modo formale secondo diversi approcci
» algebrico
» generativo
» riconoscitivo
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
4 di 20
05/03/2015
I linguaggi formali
• Definizioni
» Dato un alfabeto Σ definiamo stringa o parola una sequenza finita di
caratteri di Σ
» Data una stringa x il numero di caratteri che la costituiscono è chiamato
lunghezza della stringa ed è indicato come segue: |x|. La stringa di
lunghezza zero (cioè non costituita da alcun simbolo) è chiamata stringa
vuota o nulla
» L’insieme di tutte le stringhe definite sull’alfabeto Σ (inclusa la stringa
vuota) è denotato Σ*
• Esempi:
» 01000010 è una stringa definita sull’alfabeto binario {0, 1}. La sua
lunghezza è 8. Essa appartiene quindi a {0, 1}*
» La sequenza infinita 010101… non appartiene a {0, 1}*
» abracadabra è una stringa definita sull’alfabeto italiano. La sua lunghezza
è 11
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
5 di 20
05/03/2015
I linguaggi formali, esempio applicativo
• Programming languages
“A compiler usually has two distinct components. A lexical analyzer
identifies the tokens of the programming language grammar, e.g. identifiers
or keywords, which are themselves expressed in a simpler formal language,
usually by means of regular expressions.
At the most basic conceptual level, a parser attempts to decide if the source
program is valid, that is if it belongs to the programming language for which
the compiler was built.
A parser usually outputs more than a yes/no answer, typically an abstract
syntax tree, which is used by subsequent stages of the compiler to
eventually generate an executable containing machine code that runs
directly on the hardware, or some intermediate code that requires a virtual
machine to execute.”
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
6 di 20
05/03/2015
I linguaggi formali, esempio applicativo
• Differenze tra linguaggi compilati / interpretati
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
7 di 20
05/03/2015
I linguaggi formali, esempio applicativo
• Esempio di syntax tree per l’algoritmo Euclideo
while b ≠ 0
if a > b
a := a − b
else
b := b − a
return a
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
8 di 20
05/03/2015
I linguaggi formali, esempio applicativo
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
9 di 20
05/03/2015
La macchina di Turing
• Una macchina di Turing (MdT) è una macchina ideale che
manipola i dati contenuti su un nastro di lunghezza
potenzialmente infinita, secondo un insieme prefissato di
regole ben definite
• In altre parole, è un modello (matematico) astratto che
definisce una macchina in grado di eseguire algoritmi e
dotata di un nastro potenzialmente infinito su cui può
leggere e/o scrivere dei simboli
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
10 di 20
05/03/2015
La macchina di Turing
• La macchina è formata da una testina di lettura e scrittura
con cui è in grado di leggere e scrivere su un nastro
potenzialmente infinito e partizionato, in maniera discreta,
in caselle. Ad ogni istante di tempo t1 la macchina si trova in
uno stato interno s1 ben determinato, risultato
dell'elaborazione compiuta sui dati letti
• Lo stato interno, o configurazione, di un sistema è la
condizione in cui si trovano le componenti della macchina ad
un determinato istante di tempo t. Le componenti da
considerare sono:
» il numero della cella osservata
» il suo contenuto
» l'istruzione da eseguire
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
11 di 20
05/03/2015
La macchina di Turing
• Implementare un algoritmo in questo contesto significa
effettuare una delle quattro operazioni elementari
» spostarsi di una casella a destra
» spostarsi di una casella a sinistra
» scrivere un simbolo preso da un insieme di simboli a sua disposizione su
una casella
» cancellare un simbolo già scritto sulla casella che sta osservando
» oppure fermarsi
• Eseguire un'operazione o1, tra gli istanti di tempo t1 e t2,
vuol dire passare dallo stato interno s1 al s2
• Formalmente questo si esprime in {s1,a1,o1,s2}, ovvero:
nello stato interno s1 la macchina osserva il simbolo a1,
esegue l'operazione o1 e si ritrova nello stato interno s2
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
12 di 20
05/03/2015
La macchina di Turing
• In teoria dei sistemi dinamici, un automa è un sistema
dinamico discreto (nella scansione del tempo e nella
descrizione del suo stato) e invariante (il sistema si comporta
alla stessa maniera indipendentemente dall'istante di tempo
in cui agisce)
• Gli automi sono spesso utilizzati per descrivere linguaggi
formali in informatica teorica, e per questo sono chiamati
accettori o riconoscitori di un linguaggio
• Il massimo livello di complessità e generalizzazione di un
automa è raggiunto dalla macchina di Turing
• Turing dimostrò che un tale strumento, dalle caratteristiche
così rigidamente definite, è in grado di svolgere un qualsiasi
calcolo e capì la stretta relazione tra calcolabilità e
dimostrabilità
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
13 di 20
05/03/2015
Algoritmo: definizione, rappresentazione
• Un algoritmo è un procedimento che risolve un determinato
problema attraverso un numero determinato di passi
• Il termine deriva dalla trascrizione latina del nome del matematico
persiano al-Khwarizmi, considerato uno dei primi autori ad aver
fatto riferimento a questo concetto
• L'algoritmo è un concetto fondamentale dell'informatica, alla base
della nozione teorica di calcolabilità: un problema è calcolabile
quando è risolvibile mediante un algoritmo
• L'algoritmo è un concetto cardine anche della fase di
programmazione dello sviluppo di un software: preso un problema
da automatizzare, la programmazione costituisce essenzialmente la
traduzione di un algoritmo per tale problema in programma, scritto
in un certo linguaggio, che può essere quindi effettivamente
eseguito da un calcolatore.
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
14 di 20
05/03/2015
Algoritmo: definizione, rappresentazione
Proprietà fondamentali degli algoritmi
» atomicità: i passi costituenti devono essere "elementari",
ovvero non ulteriormente scomponibili
» non ambiguità: i passi costituenti devono essere interpretabili
in modo diretto e univoco dall'esecutore, sia esso umano o
artificiale
» finitezza: l'algoritmo deve essere composto da un numero finito
di passi e richiedere una quantità finita di dati in ingresso
» terminazione: l'esecuzione deve avere termine dopo un tempo
finito
» effettività: l'esecuzione deve portare a un risultato univoco
» determinismo: a ogni passo, il successivo deve essere uno e uno
solo, ben determinato
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
15 di 20
05/03/2015
Algoritmo: definizione, rappresentazione
Diagrammi di flusso - Flow charts
• “A flowchart is a type of diagram
that represents an algorithm,
workflow or process, showing the
steps as boxes of various kinds, and
their order by connecting them with
arrows. This diagrammatic
representation illustrates a solution
model to a given problem”
• Flowcharts are used in analyzing,
designing, documenting or managing
a process or program in various fields
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
16 di 20
05/03/2015
Algoritmo: definizione, rappresentazione
Flow charts: strutture di controllo
• if (cond1 ) { blocco1 }
• if (cond1) {blocco1} else {blocco2}
• while (cond1) do {blocco1}
• do {blocco2} while (cond2)
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
17 di 20
05/03/2015
Introduzione alla progettazione del
software e allo sviluppo sostenibile
• Approfondimenti
»
»
»
»
»
»
»
»
http://en.wikipedia.org/wiki/Formal_language
http://en.wikipedia.org/wiki/Abstract_syntax_tree
http://en.wikipedia.org/wiki/Euclidean_algorithm
http://it.wikipedia.org/wiki/Macchina_di_Turing
http://it.wikipedia.org/wiki/Automa_(informatica)
http://it.wikipedia.org/wiki/Algoritmo
http://www.treccani.it/enciclopedia/algoritmo/
http://en.wikipedia.org/wiki/Flowchart
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
18 di 20
05/03/2015
La notazione
Definizione
» “Una notazione è un sistema di
scrittura (utilizzato) per rappresentare
o descrivere concetti in uno specifico
settore disciplinare” (ad es: notazione
matematica, informatica, geometrica,
musicale, etc.)
» “La notazione usa simboli o espressioni
simboliche che sono intese avere un
preciso significato”
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
19 di 20
05/03/2015
La notazione, impatto
» Milestones dello sviluppo della scrittura e delle notazioni
• perfezionamento dell’alfabeto greco
• superamento del sistema numerico additivo (romano) e adozione del
sistema numerico posizionale (arabo)
» La notazione matematica: il linguaggio più noto e meglio
sviluppato come strumento di pensiero
» Importanza del codice, della scrittura, quale strumento di
sviluppo della conoscenza umana e dell’intelligenza:
• “The quantity of meaning compressed into small space by algebric signs
[...] facilitates the reasoning we are accustomed to carry on by their aid”
(C. Babbage, 1948)
• “Alleviando il cervello da tutto il lavoro non necesarrio [...] lo rende libero
di concentrarsi su problemi più rilevanti” (A. Whitehead, 1948)
• La scrittura da strumento di memoria a strumento di pensiero: “Le
scritture danno accesso alle articolazioni del linguaggio e ne moltiplicano
le possibilità” (E.A. Havelock, 1973)
• “L’intelligenza umana è stata liberata dal fardello della necessità di
ricordare e ha potuto applicarsi all’innovazione” (D. de Kerckhove, 1995)
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
20 di 20
05/03/2015
La notazione e i sistemi formali
• Nei linguaggi di programmazione
» universalità: stessa interpretazione in contesti diversi
» non ambiguità: stessa interprestazione da diversi autori
» eseguibilità: possono essere eseguiti da un calcolatore/automa
• In tutti i sistemi formali
» semplicità: nel formulare i costrutti
» suggestività: possibilità di riferirsi/suggerire espressioni
collegate ed indipendenti
» sintesi: utilizzo di simboli, nomi, e funzioni concise che
racchiudono i dettagli al loro interno
» economia: all’aumentare delle regole grammaticali che
descrivono il linguaggio si semplifica l’uso del linguaggio che
può essere generato
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
21 di 20
05/03/2015
La notazione dei sistemi numerici
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
22 di 20
05/03/2015
I modelli formali, definizione
• Un sistema formale è costituito da:
» un alfabeto, ovvero un insieme (finito o numerabile)
di simboli
» una grammatica che specifica quali sequenze finite di
questi simboli sono formule ben formate (fbf). La
grammatica deve essere ricorsiva, nel senso che deve
esistere un algoritmo per decidere se una sequenza di
simboli è o meno una formula ben formata
» un sottoinsieme dell'insieme delle formule ben formate:
gli assiomi (o concetti di base) del sistema formale.
Anche in questo caso l'insieme degli assiomi deve essere
ricorsivo
» alcune regole, dette regole di inferenza, che associano
formule ben formate ad n-uple di formule ben formate
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
23 di 20
05/03/2015
I modelli formali
• Caratteristiche dei modelli formali:
» costituisce una rappresentazione di una realtà o di
un fenomeno; non la realtà stessa
» può essere migliorabile
» permette di spiegare, capire e approfondire la realtà
che rappresenta
» un modello diventa superato quando se ne costruisce
uno migliore
» le componenti del modello possono non
corrispondere precisamente con le componenti della
realtà rappresentata
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
24 di 20
05/03/2015
Strutture e modelli di dati: definizione
•
•
•
•
•
•
In informatica una struttura dati è un'entità usata per organizzare un
insieme di dati all'interno della memoria del computer, ed eventualmente
per memorizzarli in una memoria di massa
La scelta delle strutture dati da utilizzare è strettamente legata a quella
degli algoritmi; per questo, spesso essi vengono considerati insieme
La scelta della struttura dati influisce inevitabilmente sull'efficienza degli
algoritmi che la manipolano
La struttura dati è un metodo di organizzazione dei dati, quindi prescinde
dai dati effettivamente contenuti
Ciascun linguaggio di programmazione offre strumenti, più o meno
sofisticati, per definire strutture dati, ovvero aggregare dati di tipo
omogeneo o eterogeneo
Più formalmente, i linguaggi forniscono un insieme predefinito di tipi di
dato elementari, e le strutture dati sono strumenti per costruire tipi di
dati aggregati più complessi
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
25 di 20
05/03/2015
Strutture e modelli di dati: caratteristiche
Le strutture di dati si differenziano prima di tutto in base alle
operazioni che si possono effettuare su di esse e alle prestazioni
offerte; questo permette di studiare
un'astrazione dall'implementazione
» scalare: elementare, numero o carattere
» array: omogenea, a una o più dimensioni
» record: eterogenea, contiene diversi elementi o campi
» classe: è un costrutto tipico dei linguaggi orientati agli oggetti,
e consiste in un record a cui sono associate anche dei metodi
» lista: dinamica, un insieme di "nodi" collegati linearmente
» albero: struttura a nodi, gerarchica
» grafo: generalizzazione dell'albero, non gerarchico, può
contenere collegamenti ad altri rami e cicli
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
26 di 20
05/03/2015
Strutture e modelli di dati: esempi
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
27 di 20
05/03/2015
Strutture e modelli di dati: caratteristiche
• Modello dati (astratto)
» la struttura dei dati
» l’insieme delle operazioni effettuabili sui dati
• Modello dati (Sistema Informativo)
»
»
»
»
la struttura dei dati
la verifica di integrità
manipolazione dei dati
interrogazione dei dati
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
28 di 20
05/03/2015
Notazione, sistemi formali, strutture dati
• Approfondimenti
» http://it.wikipedia.org/wiki/Notazione
» http://en.wikipedia.org/wiki/Formal_system
» http://it.wikipedia.org/wiki/Struttura_dati
PROGETTAZIONE
DI SISTEMI
[email protected]
MULTIMEDIALI
29 di 20
05/03/2015
Grazie per l’attenzione
[email protected]