BIOINFORMATICA
La Bioinformatica si occupa, dell’acquisizione,
memorizzazione, distribuzione, analisi e interpretazione dei
dati prevalentemente nell’ambito della biologia.
Questa nuova disciplina scientifica utilizza metodi di
matematica, informatica, biologia, medicina, fisica allo
scopo di migliorare la comprensione dei fenomeni biologici.
Di seguito, si elenca a titolo alcuni dei principali obiettivi
della Bioinformatica:
• Sviluppo
di strumenti per la generazione ed il
mantenimento dell’informazione proveniente alle varie
fonti: mappa fisica, mappa genetica, mappa cromosomica,
mappa citogenetica, polimorfismi, e l’informazione relativa
alle sequenze genomiche e proteiche etc.;
• Raccolta e organizzazione delle informazioni genetiche
associate alle patologie mediche;
• Sviluppo di programmi di calcolo per l'analisi delle
sequenze;
• Sviluppo d’interfacce grafiche in grado di visualizzare in
maniera efficace l’informazione richiesta;
• Sviluppo di metodi software che consentano di agevolare
tutte le fasi dei progetti;
• Sviluppo di strutture per database specializzate ed
integrate;
Realizzazione di standard per lo scambio e la descrizione
dei dati;
• Realizzazione di una rete dati per la raccolta la
distribuzione e l’aggiornamento costante di tutta
’informazione prodotta;
• Raccolta della bibliografia, brevetti e altri database di
supporto all’informazione specifica;
• • Predizione dei geni nelle sequenze di DNA;
• • Predizione delle strutture tridimensionali delle proteine
partendo dalle sequenze primarie;
• • Predizione delle funzioni biologiche e biofisiche sia
dalle sequenze e sia dalle strutture;
• • Simulazione dei processi metabolici e cellulari basati su
queste funzioni.
• • Realizzazioni di sistemi per la correlazione
dell’informazione in sistemi biologici complessi.
LOGICA
• LOGICA, i principi logici che collegano la scrittura
sintattica delle frasi con la loro verità e falsità possono
essere ampliamente trovati in Platone (428-348 a.C.).
• Il primo studio sistematico della logica è noto come il
trattato di Organon, scritto dagli allievi di Aristotele.
• La scuola di Megera e quella stoica pongono le basi per
lo studio sistematico delle implicazioni, mentre lo studio
di un linguaggio formale artificiale basato sulla notazione
matematica per chiarire le relazioni logiche e ridurre
l’inferenza logica ad un processo meccanico e formale si
deve a Leibnz nel 1600-1700.
• Solo con Boole nella metà dell’ottocento si ha un
sistema logico ragionevolmente completo; il sistema
includeva le parti principali della logica aristotelica ed un
sistema analogo alla logica proposizionale moderna.
• Le tavole della verità come metodo per la verifica della
validità delle formule nel linguaggio proposizionale sono
state introdotte simultaneamente ed indipendentemente
da Wittgenstein (1922) e da Emil Post (1921).
• Nel 1982 Quine descrive un metodo per l’analisi dei
valori della verità che è molto efficiente basato su alberi
di decisione.
• La base di conoscenza o KB (Knowledge Base) è un
insieme di rappresentazioni del mondo, ogni singola
rappresentazione è denominata come formula, le
formule a loro volta sono espresse in un linguaggio
denominato linguaggio di rappresentazione della
conoscenza.
LINGUAGGIO
• Il linguaggio viene definito in un dizionario come
"l'insieme di parole e metodi di combinazione di
parole usate e comprese da una comunità di
persone".
• L’oggetto della rappresentazione della
conoscenza è l’espressione della conoscenza
espressa in forma trattabile automaticamente.
• Alla base di tutta l’informatica vi sono due
concetti fondamentali, che risultano strettamente
interconnessi tra loro: quello di automa e quello
di linguaggio.
SEMANTICA
• La sintassi del linguaggio che descrive le possibili
configurazioni che costituiscono le formule. Di solito
rappresentiamo la sintassi in termini di formule per la carta
stampata, in realtà la vera rappresentazione è all’interno di
un computer: ogni formula è implementata da una
configurazione fisica.
• La semantica determina le realtà del mondo a cui si
riferiscono le formule. Con la semantica ogni formula
asserisce qualcosa al mondo.
• Ogni linguaggio, così come ogni lingua umana, è
formato da parole che devono essere messe
insieme secondo determinate regole (sintassi) al
fine di ottenere un significato (semantica).
• Il risultato di questo processo di astrazione
consiste nella definizione di opportuni modelli
matematici, cioè di sistemi formali che
definiscono di fatto il concetto stesso di
computabilità, cioè costituiscono l'ossatura
portante della teoria della computabilità.
• Tra i più noti di questi sistemi formali vi è una
gerarchia di macchine astratte (la gerarchia
caratterizza la capacità di risolvere classi diverse
di problemi) che parte dagli automi a stati finiti e
termina alla macchina di Turing.
• I sistemi di produzione di Thue, Post,
Markov partono invece dall'idea di automa
come insieme di regole di riscrittura (dette
anche produzioni o regole di inferenza)
che trasformano frasi (insiemi di simboli) in
altre frasi.
• I diversi formalismi si differenziano invece
radicalmente per il modo con cui giungono
ad esprimere la soluzione ad un problema.
• Verso la fine degli anni 30, Claude Shannon
dimostrò che utilizzando un circuito elettrico
dotato di un interruttore era possibile definire le
condizioni VERO per il circuito aperto e FALSO
per circuito chiuso.
• Era possibile dunque effettuare delle operazioni
logiche associando il numero 1 a VERO e il
numero 0 a FALSO.
• Questo linguaggio venne chiamato linguaggio
BINARIO. Il linguaggio binario è dunque il
linguaggio che consente il funzionamento dei
computer.
LINGUAGGIO BINARIO
• Il linguaggio binario è dunque il linguaggio che consente
il funzionamento dei computer.
• Il bit significa binary digit, vale a dire 0 o 1.
• Quindi la più piccola unità informativa manipolabile.
• Con un solo bit possiamo avere sia 1 che 0.
• Con due bit possiamo avere una combinazione di (2*2).
Con tre bit 3 bits possiamo avere otto situazioni differenti
(2*2*2).
• Un ottetto è una unità di informazione composta da 8
bits, e permette di rappresentare caratteri, intesi come
numeri o lettere
Linguaggio macchina
• Quando nacquero gli elaboratori, l'unico modo di
far comprendere loro un programma era quello
di specificarlo nel loro stesso linguaggio, cioè il
"linguaggio macchina": un linguaggio fatto solo
di bit e di byte, in cui ogni operazione aveva un
codice binario di identificazione e in cui ogni
quantità, numerica o alfabetica, doveva essere
caratterizzata dall'indirizzo dei byte di memoria
centrale che la contenevano.
linguaggi assemblatori
• Questo rendeva la programmazione un lavoro da
specialisti. Il linguaggio macchina è il linguaggio
programmativo della 1a generazione.
• Ben presto si passò ai linguaggi della 2a generazione,
cioè ai cosiddetti "linguaggi simbolici".
• Ai byte si sostituirono dei codici convenzionali, diversi a
seconda del ruolo svolto: ad esempio se il byte
{01010101} denotava la somma, esso si indicò con il
codice ADD, facile da ricordare.
• I linguaggi simbolici snellirono di molto la
programmazione ed in effetti sono talvolta usati ancora
oggi; di solito sono detti "linguaggi assemblatori" ed
essendo analoghi al linguaggio macchina permettono
una programmazione particolarmente efficiente.
linguaggi algebrici
• Si arrivò così ai linguaggi della terza
generazione, detti "linguaggi algebrici", che
possono essere utilizzati anche da persone
senza una profonda conoscenza
dell'informatica.
• Il nome di questi linguaggi deriva dal fatto che in
essi è possibile scrivere un'espressione quasi
come si scrive in algebra e che l'elaboratore è in
grado di riconoscere e tradurre nel proprio
linguaggio macchina.
La base di conoscenza
• La base di conoscenza o KB (Knowledge Base)
è un insieme di rappresentazioni del mondo,
ogni singola rappresentazione viene denominata
formula, le formule a loro volta sono espresse in
un linguaggio denominato linguaggio di
rappresentazione della conoscenza.
• L’oggetto della rappresentazione della
conoscenza è l’espressione della conoscenza
espressa in forma trattabile automaticamente.
Un linguaggio di rappresentazione della
conoscenza è definito da due aspetti:
regola: soggetto + verbo + complemento
• Disporre le parole rispettando una regola non è
sufficiente per dare loro un significato:
• es. 1: Il mio cane corre sul prato (sintassi corretta, significato valido)
• es. 2: Il tuo gatto salta sulla macchina (sintassi corretta, significato
valido)
• es. 3: Il fiume beve sul mio cane (sintassi corretta ma priva di
significato)
• es. 4: Il prato corre nella mia macchina (sintassi corretta ma priva di
significato)
• Le regole per la costruzione delle frasi di un linguaggio sono
espresse come produzioni di un sistema formale denominato
grammatica.
• In ambito più strettamente linguistico si intende per
significato il contenuto semantico o senso di un segno
linguistico.
• Il termine semantica (che indicava anticamente, in
medicina, la scienza che valuta i sintomi delle malattie)
fu introdotto da Locke in filosofia per indicare lo studio
dei segni linguistici.
• Morris (1938 e 1946) ha introdotto la distinzione in:
sintattica che studia le relazioni dei segni tra di loro;
semantica, che studia le relazioni dei segni con gli
oggetti cui sono applicabili.
• Le regole per la costruzione delle frasi di un linguaggio
sono espresse come produzioni di un sistema formale
denominato grammatica.
Linguaggio
• Per poter elaborare le informazioni, ovvero per eseguire
tutte le operazioni che possono essere effettuate sulle
informazioni (inserimento, archiviazione, modifica,
ordinamento, calcolo, ecc.) è necessario definire un
linguaggio, ossia uno strumento che sostituisca dei
simboli particolari agli oggetti ed ai concetti.
• Esistono diversi tipi di linguaggi, in particolare si
distinguono tra:
• NATURALI
• FORMALI
ALFABETO
• Un modo più tecnico per definire il concetto di linguaggio
è introdurre un insieme di simboli (detto alfabeto) e dire
che "un linguaggio è un particolare insieme di frasi
formate dai simboli dell’alfabeto".
• possiamo pensare di usare il linguaggio naturale.
• Ad esempio, detto A l'insieme {0,1}, diciamo che L1 è il
linguaggio le cui frasi sono formate da n simboli 0 seguiti
da n simboli 1, con n che denota un qualunque numero
intero positivo. In base a questa definizione,
• sono frasi di L1: 0011, 01, 000111
• non appartengono a L1: 011, cane, a+b, etc.
LINGUAGGI NATURALI
• I linguaggi naturali sono quelli utilizzati
quotidianamente dagli uomini per comunicare
tra loro (italiano, inglese, francese, ecc.); sono
dotati in una notevole ricchezza espressiva e
semantica, ma possono dar luogo ad ambiguità,
imprecisione e difficoltà di interpretazione.
• I linguaggi formali sono quelli artificiali, creati
dall’uomo secondo regole ben definite e prive di
eccezioni e di ambiguità (Pascal, Cobol, ecc.);
sono dedicati a scopi precisi e circoscritti.
ALFABETI
• Ogni tipo di linguaggio, in ogni caso, è costruito su un
alfabeto.
• Un alfabeto è definito come un insieme finito e non
vuoto di simboli convenzionali.
• Una stringa è costituita da una sequenza qualsiasi di
simboli.
• La stringa vuota è una stringa priva di simboli, indicata
con .
• La lunghezza di una stringa è il numero di simboli nella
stringa, per esempio |abc| = 3.
• Un linguaggio su un alfabeto I è un insieme di stringhe
costruite su I.
• Con I* si indica l’insieme di tutte le stringhe su I, inclusa
la stringa vuota.
• Con I+ si indica l’insieme di tutte le stringhe su I, esclusa
la stringa vuota.
• Per esempio, se I = {0,1}, allora I+ =
{0,1,00,10,01,11,000,111,..}.
• Esempi di alfabeti per i linguaggi naturali possono
essere:
• italiano, composto da 21 lettere;
• inglese, composto da 26 lettere.
• Esempi di alfabeti per i linguaggi artificiali possono
essere:
• insieme {linea, punto} del linguaggio telegrafico;
• insieme dei colori {rosso,giallo,verde} del
linguaggio semaforico;
• insieme delle cifre {0,1} utilizzato per il sistema
di numerazione binaria.
GRAMMATICA
• Dopo aver definito un linguaggio L su un alfabeto I, il
primo problema che bisogna risolvere è la
rappresentazione del linguaggio.
• Se L è finito, allora basta elencare le stringhe che
compongono il linguaggio.
• Se L è infinito, allora bisogna trovare altre soluzioni:
• un primo metodo consiste nell’introduzione di un sistema
generativo, denominato grammatica.
• In pratica, ogni stringa del linguaggio viene costruita e
strutturata in modo preciso e non ambiguo utilizzando le
regole di una grammatica. Il linguaggio generato dalla
grammatica G si indica con L(G) e rappresenta l’insieme
delle stringhe generabili da G;
AUTOMA
• Il concetto di automa può essere introdotto come segue:
per automa si intende un dispositivo che stabilisce una
precisa relazione tra un dato di ingresso e un dato di
uscita,
• vincoli di realizzabilità fisica: se l'automa è fatto di parti,
queste sono in numero finito; l'ingresso e l'uscita sono
denotabili attraverso un insieme finito di simboli.
• L'automa potrebbe essere realizzato da un insieme di
dispositivi elettronici digitali, oppure da dispositivi
meccanici o biologici.
• L'obiettivo è di astrarre dai singoli, specifici casi concreti
enucleando le caratteristiche ritenute essenziali.
AUTOMA
• In pratica, l’automa accetta in input una
qualsiasi stringa e risponde “SI” se la
stringa appartiene al linguaggio associato,
“NO” altrimenti.
• Il linguaggio riconosciuto dall’automa A si
indica con L(A) e rappresenta l’insieme
delle stringhe riconosciute da A.
AUTOMA
• In generale, un automa è un dispositivo in grado di eseguire da
solo, cioè in modo automatico, senza l’intervento di una persona,
una sequenza di azioni stabilite in precedenza.
Gli aspetti che caratterizzano il funzionamento di un automa sono:
• i simboli forniti dall’esterno, che l’automa sa riconoscere nel loro
significato;
• i simboli prodotti all’esterno come risultato del lavoro svolto;
• l’insieme di tutti i possibili stati che l’automa può assumere;
• l’insieme di tutte le possibili transizioni di uno stato all’altro.
• Il comportamento di un automa può essere
descritto da un algoritmo che specifica le azioni
da compiere e del quale l’automa è l’esecutore.
• Un automa è definito come una quintupla di
elementi A = (I,S,s0,F,T):
• alfabeto dei simboli input I = (i1, i2,…,in), cioè
l’insieme finito dei simboli che l’automa è in
grado di ricevere dall’esterno, riconoscendoli;
• insieme dei possibili stati S = (s1, s2,…,sn)
che l’automa può assumere durante il suo
funzionamento;
• stato iniziale s0S di partenza del
funzionamento dell’automa;
• insieme degli stati finali FS;
• funzione di transizione T: (it, st-1) → (st,ot)
cioè la funzione che indica lo stato successivo di
transizione all’istante t e il simbolo che viene
emesso verso l’esterno, in relazione di un
determinato stato precedente all’istante t-1 e di
un determinato simbolo input.
• In generale, il funzionamento di un automa
consiste nell’accettare un simbolo dall’esterno
ed emettere un simbolo in uscita, producendo
un cambiamento di stato.
• Una stringa sarà riconosciuta dall’automa se,
partendo dallo stato iniziale s0 e avendo come
input la stringa, esso dopo un certo numero di
transizioni di stato si troverà in uno stato finale di
F; se alla fine l’automa non si trova in uno stato
finale, allora la stringa sarà rifiutata.
• Il funzionamento di un automa può essere
descritto mediante un algoritmo, mediante un
grafo di transizione oppure mediante la tabella
della sua funzione.
DAL PROBLEMA ALL’ALGORITMO
• Problema – Qualunque problema che ci troviamo a dover
risolvere genera delle domande a cui dobbiamo trovare una
risposta.
• Per la risoluzione di un problema si devono affrontare
alcune fasi: la prima fase consiste nell’individuare con
precisione la domanda a cui rispondere e le risposte da
ottenere (dati del problema).
• La seconda fase consiste nella costruzione di uno schema
che tenga conto solo degli aspetti importanti al fine della
risoluzione del problema (modello del problema).
• La terza fase è quella più creativa e consiste nell’individuare
le operazioni da compiere per raggiungere il risultato
stabilito del problema (algoritmo).
Dati e Azioni
• Nella descrizione del problema occorre anzitutto definire
i dati iniziali (dati di input) sui quali basare la soluzione
del problema; essi non devono essere né
sovrabbondanti né troppo ridotti.
• Poi bisogna definire i risultati che si vogliono ottenere
(dati di output). In un problema i dati possono essere di
tipo diverso: numerico (solo cifre: stipendio, importo,
ecc.), alfabetico (solo lettere: nome, cognome, ecc.) o
alfanumerico (insieme di cifre e lettere: codice fiscale,
targa, ecc.).
• Le azioni rappresentano le attività che si compiono in un
intervallo
• operazioni di tipo aritmetico quali i calcoli
(somma, IVA 20%, ecc.) o di tipo logico
(confronto tra due valori A>B, controllo per
stabilire se è stata raggiunta la fine di un elenco,
ecc.).
• Per descrivere le azioni è necessario disporre di
un linguaggio; le descrizioni delle azioni sono
dette istruzioni.
• Una regola pratica per individuare quali sono i
dati e quali le azioni di un problema, consiste nel
trattare i sostantivi come dati e i verbi come
azioni.
• Modello: è una forma semplificata di rappresentazione
della realtà che tiene conto di tutti e solo gli elementi
determinanti per la risoluzione di un problema (per
esempio, la carta stradale per la risoluzione del problema
della determinazione del percorso più breve tra varie città).
• Algoritmo: successione ordinata e finita di tutte le
operazioni che devono essere eseguite per raggiungere il
risultato del problema stabilito in precedenza.
• Implementazione – Per implementazione di un problema
si intende il suo trasferimento su un sistema di
elaborazione.
• Risolutore – Il risolutore è colui che progetta prima il
percorso di risoluzione di un problema e successivamente
l’algoritmo.
• Esecutore – L’esecutore è l’ente, nel senso generico di
umano o automatico, che esegue le azioni secondo le
istruzioni dell’algoritmo.
• Rappresentazione degli algoritmi – Per rappresentare
un algoritmo occorre seguire delle modalità e regole
precise. Per quanto riguarda le modalità, possiamo
dividere la sua rappresentazione in tre parti:
• 1) riga di intestazione: la prima riga contenente il nome
che il risolutore decide di dare all’algoritmo per ricordare
l’obiettivo del problema (Algoritmo Media, Algoritmo
Ordina, ecc.);
• 2) sezione dichiarativa: una o più righe contenente la
descrizione degli oggetti che vengono usati
dall’algoritmo, cioè nome e tipo di dati (base, altezza:
numeri reali; pigreco:costante 3,14; ecc.);
• 3) sezione esecutiva: inizia con la parola begin (o
inizio) e termina con end (o fine), e contiene l’elenco
ordinato delle istruzioni dell’algoritmo che l’esecutore
deve eseguire.
Vi sono poi delle regole per comunicare le istruzioni all’esecutore:
a) per indicare l’istruzione di acquisizione di dati si usa il comando
input (o leggi) seguito dal nome della variabile da leggere, messo fra
parentesi; se le istruzioni di lettura sono più di una, si può utilizzare
un elenco di variabili separandole con una virgola:
input (base)
input (altezza)
oppure
input (base, altezza);
b) per indicare l’istruzione di comunicazione di dati si usa il comando
output (o scrivi);
output (A)
output (B)
oppure
output (A, B);
c) per indicare l’attribuzione di un valore ad una variabile si usa
l’istruzione di assegnamento:
• A := B+C oppure A  B+C.
• Esempio 1 – Calcoliamo la media di tre numeri
reali assegnati.
algoritmo MEDIA;
variabili
A,B,C,M : numeri reali;
begin
input (A,B,C);
M  (A+B+C) / 3;
output (M)
end
Esempio 2 – Dato un numero intero, calcolare il
precedente e il successivo.
algoritmo PREC_SUCC;
variabili
N,P,S : numeri interi;
begin
input (N);
P  N – 1;
S  N + 1;
output (P,S)
end
Esempio 3 – Calcolare il punteggio totale attribuito da una
giuria di 10 elementi ad un iscritto ad una gara.
algoritmo SOMMA;
variabili
C,S,N : numeri interi;
begin
C  0;
S  0;
repeat
input (N);
S  S + N;
C  C + 1;
until C <= 10
output (S)
end
INFERENZA
• La proprietà che un fatto segue altri fatti è rispecchiata
dalla proprietà di una formula di essere derivata da
un’altra formula.
• L’inferenza logica genera nuove formule che sono
derivate da formule esistenti. A noi in generale interessa
generare nuove formule che siano necessariamente
vere, nel caso in cui le vecchie formule siano vere;
questa relazione viene chiamata implicazione.
• Il termine di ragionamento ed inferenza sono solitamente
sinonimi se usati per descrivere un procedimento che
porta al raggiungimento di conclusioni.
INFERENZA
• L’inferenza logica è quindi un processo che realizza la
relazione di implicazione fra formule.
• Una formula è valida o necessariamente vera se e solo
se è vera secondo tutte le possibili interpretazioni in tutti
i mondi possibili. C’è un muro davanti a me e non c’è un
muro davanti a me“ è una formula insoddisfacibile.
Un sistema formale di logica per la descrizione di cose
consiste quindi in:
• sintassi
• semantica
• una teoria della dimostrazione.
Esistono due tipi di logica
• logica proposizionale o logica booleana
• logica del primo ordine.
Nella logica proposizionale i simboli rappresentano intere
proposizioni e le proposizioni possono essere combinate
usando i connettivi booleani.
La logica di primo ordine affida la rappresentazione dei
mondi in termini di oggetti e predicati su oggetti, cioè
proprietà degli oggetti o relazione tra oggetti.
Si utilizzano connettivi e quantificatori che consentono di
scrivere in una unica formula asserzioni riguardanti tutti
gli elementi dell’universo.
• Logiche speciali assumono assunzioni
logiche superiori, ad esempio la logica
temporale considera che il mondo sia
ordinato da un insieme di punti di tempo.
• i sistemi che usano la teoria della
probabilità possono avere gradi di
credenza che possono variare da 0
(credenza nulla) a 1 (certezza).
• I sistemi basati sulla logica fuzzy possono
avere gradi di credenza secondo gradi di
verità. Un fatto non deve essere vero o
falso, ma può essere vero fino ad un certo
grado. Ad esempio l’affermazione “La
Juventus è una grande squadra” può
essere vera con un certo grado di verità.
LINGUAGGIO
Assunzioni Ontologiche
Assunzioni Epistemologiche
Logica preposizionale
Fatti
vero/falso/ignoto
Logica del primo ordine
Fatti, oggetti, relazioni
vero/falso/ignoto
Logica temporale
Fatti, oggetti, relazioni, tempo
vero/falso/ignoto
Teoria della probabilità
Fatti
gradi di credenza (0….1)
Logica fuzzy
Gradi di verità
gradi di credenza (0….1)
LA LOGICA PROPOSIZIONALE
• La sintassi della logica è molto semplice in
quanto utilizza le costanti logiche, vero-falso, i
simboli preposizionali P e Q e i connettivi logici.
Tutte le formule sono costruite utilizzando i
simboli secondo alcune regole
• Le costanti logiche Vero o Falso sono formule
• Un simbolo preposizionale come P o Q è una
formula
• Mettere delle parentesi determina una formula

• Una formula può essere ottenuta combinando formule
semplici con i connettivi logici.
•  (and). Una frase in cui il connettivo principale è 
(PQ) è chiamata congiunzione
•  (or). Una formula che usa , A  (PQ) è una
disgiunzione dei disgiunti (il simbolo  deriva dal latino
vel che significa o).
•
Una formula come (PQ) R è chiamata implicazione.
• La parte (PQ) rappresenta la premessa o antecedente,
mentre R costituisce la conclusione.
• La formula (PQ)
(QP) è una equivalenza
• chiamata anche bicondizionale.
• (not). Una formula come P è chiamata negazione.
• In molti casi la logica preposizionale non necessita di
alcuna relazione per la rilevanza tra P e Q. Ad esempio
la frase “5 è dispari implica Parigi è una capitale” è un
poco strana, ma corretta.
• Una confusione inoltre deriva dal fatto che qualsiasi
implicazione è vera quando il suo antecedente è falso.
Ad esempio posso avere “5 è pari (Falso) Giovanni è
stupido” (vero). In realtà dovrei dire P e Q se P è vero,
allora Q è vero, altrimenti non sostengo nulla.
• Qualsiasi mondo in cui una formula sia vera secondo
una particolare interpretazione è chiamato modello
Le grammatiche.
• Il mondo è costituito da oggetti, cioè identità
individuali con proprietà e relazioni, se le
relazioni sono tali per cui esiste un solo ingresso
si parla di funzioni.
• Un linguaggio formale è definito come un
insieme di stringhe in cui ogni stringa è una
sequenza di simboli. Tutti i linguaggi sono quindi
un insieme infinito di simboli che ha bisogno di
un modo conciso di rappresentazione che è dato
dalla grammatica.
OGGETTI
Persone, animali, numeri ……
RELAZIONI
Fratello di, più piccolo di, possiede..
PROPRIETÀ
Rosso, primo, quadrato
FUNZIONI
Padre di, secondo tempo di, uno più di
MODELLO
• La conoscenza e la comprensione di fenomeni
complessi in ambito della ricerca sono
rappresentate come modello. Il metodo
scientifico è basato sulla creazione, verifica,
modifica del modello di rappresentazione del
mondo. La finalità del modello è quella di
semplificare e di spiegare la complessità dei
diversi fenomeni. Le scienze applicate usano i
modelli per predire, controllare e comprendere la
realtà del mondo.
Il modello è una rappresentazione che contiene gli
elementi essenziali degli oggetti o degli eventi
che si realizzano nel mondo reale.
La rappresentazione di un modello può avvenire
secondo due modalità.
• FISICA. Come un modello di aeroplano o il
modello di una costruzione.
• SIMBOLICA. Come nel linguaggio naturale, un
programma al computer o una serie di equazioni
matematiche.
• I modelli possono essere facilmente
cambiati o manipolati: il cambiamento di
un modello simbolico è certamente più
facile rispetto al cambiamento in un
modello fisico. I valori che si modificano in
un modello sono chiamati parametri.
• La costruzione del modello passa attraverso quattro fasi:
• SEMPLIFICAZIONE e IDEALIZZAZIONE si identificano
gli elementi essenziali della struttura (oggetti ed eventi).
• MANIPOLAZIONE e TRASFORMAZIONE
rappresentano le implicazioni derivate dal modello.
• RAPPRESENTAZIONE e MISURA sono il formalismo
che descrive gli oggetti, gli eventi e le loro relazioni.
Questo è il processo di traduzione dalle parole
all’espressione algebrica; in statistica utilizziamo i
simboli dell’algebra (misure) per dare significato al
processo chiamato misura.
• VERIFICA. Le implicazioni derivate sono confrontate con
i risultati o le osservazioni nel mondo reale
interpreta
Mondo reale
Modello
osservazione
m odifica
verifica
Mondo reale
Modello
Rappresentazione attraverso un modello generico
CO SA SI VEDE
Causa
Effetto
TEO RIA
Program m a
O sservazioni
Si crede
Si vede
CO SA SI CREDE
Rappresentazione di un modello statistico
...dal bit al linguaggio R
In principio era il bit…
…Per intenderci 0 e 1, il linguaggio macchina.
 Tra gli anni '40 e gli anni '50, la programmazione
degli elaboratori elettronici era destinata solamente
a una ristrettissima cerchia di esperti.
 Progenitore di tutti i
computer è l'ENIAC
(Electronic Numerical
Integrator And
Calculator ), al cui
progetto partecipò J.
von Neumann.
EVOLUZIONE STORICA DEL
CALCOLO
•
ABACO
•
1642 Blaise Pascal
•
1822 C. Babbage
Linguaggio Assembly
PRIMO VERO LINGUAGGIO DI
PROGRAMMAZIONE
FORTRAN (FORmula TRANslation)
 L'ideatore fu John Backus.
 Lo scopo principale era quello di automatizzare
calcoli matematici e scientifici.
 Sulla sua scia vennero progettati moltissimi altri
linguaggi di alto livello.
Linguaggio di
programmazione di secondo
livello:
Algol
 Progettato da un comitato internazionale con
l'obiettivo di creare un linguaggio universale.
 La sua indipendenza dalla macchina concedeva
maggiore creatività ai progettisti.
Aree di applicazione
 ALGOL è stato utilizzato in particolare
da scienziati europei e americani
interessati a ricerche sui computer.
 La sua applicazione in ambito
commerciale è stata interdetta.
 ALGOL 60 divenne comunque lo
standard per la pubblicazione di
algoritmi.
1960:COBOL
COmmon Business Oriented Language
 Utilizzato per sviluppare programmi
gestionali.
 La sua diffusione è dovuta alla facilità della sue
istruzioni, molto simili a frasi inglesi.
 Trovando una grandissima applicazione nelle
aziende, ebbe molto successo.
Per i programmatori
pricipianti:BASIC
Beginner's All purpose Symbolic
Instruction Code
 Sviluppato a Dartmouth College, grazie al progetto di
J. Kemeny e T. Kurtz (1964).
 E’ tra i migliori linguaggi utilizzati nelle scuole a scopo
didattico.
 Realizza un'ampia gamma di applicazioni e dispone di
molte versioni.
 Dal BASIC discende il filone dei vari Visual BASIC,
linguaggi visuali orientati agli oggetti, con l'interfaccia
grafica (bottoni, finestre etc.).
Chi è Pascal?
 Sviluppato da Niklaus Wirth, membro
dell'International Federation of Information
Processing (IFIP).
 La pubblicazione originale del linguaggio
avvenne nel 1971, ma fu scelto per
l’insegnamento dagli anni ’60 alla fine degli
anni ’80.
 Consente lo sviluppo di programmi ben
strutturati e ben organizzati.
 E’ diretto discendente di ALGOL 60.
Il più basso tra i più
alti:
il linguaggio C
 Linguaggio ad alto livello definito come “il
linguaggio di piu' basso livello tra i linguaggi ad
alto livello”.
 Dennis Ritchie realizzò la prima versione nel 1972
a Bell Laboratories.
 I suoi principi erano presi dal precedente
linguaggio B e il B aveva ereditato certe
caratteristiche da BCPL e CPL.
 Nasce per lo sviluppo di sistemi operativi, quindi
per software di basso livello.
…Combined Programming
Language (CPL)
Problema:
 occupava troppo spazio per poter girare in
molte applicazioni.
Soluzione:
 1967 venne creato il BCPL (Basic CPL),
versione ridotta che non perde le sue
funzioni di base.
 La potenza e flessibilità del C apparve
subito evidente e per questo il sistema
operativo di Unix, scritto in assembly,
venne riscritto immediatamente in C.
 Riesce a mantenere semplicita' d'uso ma…
…C’è un trucco…
 Affida le funzioni più complesse a
un'insieme di librerie esterne,
esattamente come il MacOS.
C++
 E' un'estensione del C.
 Fornisce una serie di funzioni che potenziano il
C.
 Software Engineering
 Grafica
 Sviluppato nei primi anni '90 alla Sun
Microsystem.
 E' orientato agli oggetti.
 E' indipendente dalla piattaforma.
 Contiene strumenti per il networking.
 E' progettato per eseguire codici in
modo sicuro.
 Il bytecode viene eseguito dalla JVM
(Java Virtual Machine).
LINGUAGGIO
R
 Nasce in Nuova Zelanda.
 Basato sulla probabilità e la
statistica.
 Usato per la progettazione di
software di biologia molecolare
 Esistono diverse versioni.
 Progetto Bionconductor.
Però…..
• I linguaggi si dividono infine in base alla
modalità di esecuzione:
• Un file.exe è un file che è stato scritto in un certo
linguaggio X e poi è stato tradotto nel linguaggio
macchina (il linguaggio X è compilato).
• Un file.bat è un file che viene eseguito senza
dover essere compilato di volta in volta
(linguaggio interpretato).
…Ora,resta solo
un'ultima,fondamentale e
importante domanda…
Perchè tutti questi linguaggi?
•
•
•
•
•
•
Perchè col tempo sono cambiate le esigenze:
Negli anni '60 tutto era molto sperimentale;
Gli anni '70 hanno portato alla diffusione dei linguaggi procedurali.
Il software è artigianato;
Gli anni '80 portano alla diffusione dei primi pc e alla
pragrammazione ad oggetti. Il software è manifattura seriale;
Gli anni '90 portano alla programmazione ad aspetti. Il software è
commerciale;
Gli anni 2000 portano allo sviluppo complesso. Non esiste più il
concetto di software ma di servizio.
Conclusioni…
 Ciascun programmatore sceglierà
sempre e comunque uno specifico
linguaggio da utilizzare in base al
problema da risolvere.