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. DOVE ANDIAMO • Nel settore dell'elaborazione le aree di interesse comune fra informatica e Biotech sono tante e possono essere raggruppate in modi diversi. In particolare, suddividendo queste aree secondo un criterio legato al tipo di dati che vengono trattati, si possono individuare tre filoni principali: • elaborazione immagini • elaborazione dati • elaborazione biosegnali CLASSIFICAZIONE DEGLI STUDI Distinguiamo due principali tipi di studi: gli studi osservazionali e gli studi sperimentali. Gli studi osservazionali si caratterizzano per il fatto che il ricercatore non interferisce in nessun modo sulle unità dello studio (animali, gruppi di animali, allevamenti) ma si limita a osservare determinati fenomeni e a registrarne in modo opportuno le manifestazioni in genere nell ambiente naturale dei soggetti, si tratta quindi di studi che non vengono condotti nell ambito di ambienti controllati quali i laboratori. Gli studi sperimentali, al contrario, sono condotti in laboratorio e in condizioni particolarmente controllate al fine di ridurre gli errori dovuti alle molteplici variabili biologiche che possono influenzare i risultati di una ricerca. In genere sono studi condotti su un numero relativamente piccolo di soggetti. Popolazione di riferimento, popolazione target, popolazione di studio. COME PROCEDERE I. Oggetto o ipotesi. • A. Quali sono gli obiettivi dello studio e le ipotesi cui bisogna rispondere? • B. Qual'é la popolazione cui i ricercatori intendono riferire i risultati del loro studio? II. Disegno della ricerca. • A. Lo studio era un esperimento, un'osservazione pianificata o un'analisi di dati registrati in precedenza? • B. Come è stato selezionato il campione? Ci sono possibili sorgenti di selezione che potrebbero rendere il campione atipico o non rappresentativo? Se così è, quale accorgimento fu preso per evitare questo vizio? • C. Qual è la natura del gruppo di controllo o del gruppo standard di confronto? III. Osservazioni. • Vi sono definizioni chiare dei termini usati, inclusi i criteri diagnostici, le misure eseguite ed i risultati? • Il metodo di classificazione o di misura era coerentemente adottato su tutti i soggetti e rilevante ai fini che si propongono i ricercatori? Ci sono possibili vizi di misura ed in tal caso quali accorgimenti si utilizzano per eliminarli? • Le osservazioni sono attendibili e riproducibili? IV. Presentazione dei risultati. • A. I risultati sono presentati in modo chiaro, oggettivamente, e con dettagli sufficienti a consentire al lettore di giudicarli personalmente? • B. I risultati sono internamente consistenti, in altri termini, sono corrette le operazioni di calcolo? V. Analisi. • A. I dati meritano un'analisi statistica? Se sì, i metodi dell'analisi statistica sono appropriati alla sorgente e alla natura dei dati e l'analisi è eseguita ed i risultati sono interpretati in modo corretto? • L'analisi è sufficiente a determinare se le differenze significative possono essere attribuite a mancanza di confrontabilità tra i gruppi per quanto riguarda il sesso, la distribuzione per età, le caratteristiche cliniche, o altre variabili rilevanti? VI. Conclusioni. • Quali sono le conclusioni giustificate dai risultati? Quali non lo sono? Le conclusioni sono pertinenti alle domande poste dai ricercatori? I DATI Precisione: accordo tra le misure replicate; non possiede un valore numerico,, è la qualità di una misura per cui essa è definita esattamente nel minimo dettaglio. In alcuni casi questo termine viene impiegato come sinonimo di validità. Imprecisione: deviazione standard dei risultati in una serie di misure ripetute. Riproducibilità: reliability nella terminologia anglosassone, indica la precisione tra le serie o tra giorni, ossia la stabilità di una osservazione Accuratezza: l accuratezza rappresenta l accordo tra la stima del parametro ed il vero valore. Esistono due tipi di validità: quella interna che rappresenta il grado di conformità con il campione della popolazione studiata, mentre quella esterna rappresenta la possibilità di generalizzare i dati su altre realtà non prese in considerazione. Inaccuratezza: differenza tra la media di una serie di misure ed il valore vero. La differenza viene espressa solitamente in %. Bias: errore sistematico, rappresenta una distorsione dei risultati. Attendibilità: è una caratteristica delle misurazioni ripetute. Validità: esprime il grado di corrispondenza o di approssimazione del risultato di una misura. 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. 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 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. 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 interpre ta Mond o rea le Mo de llo o sse rvazione mo difica v erific a Mond o rea le Mo de llo Rappresentazione attraverso un modello generico COSA SI VEDE Caus a Effe tto TEORIA Pro gramm a Osse rvazioni Si c re de Si ved e COSA 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 definito come il § Linguaggio ad alto livello 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.