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 s0S di partenza del funzionamento dell’automa; • insieme degli stati finali FS; • 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 è (PQ) è chiamata congiunzione • (or). Una formula che usa , A (PQ) è una disgiunzione dei disgiunti (il simbolo deriva dal latino vel che significa o). • Una formula come (PQ) R è chiamata implicazione. • La parte (PQ) rappresenta la premessa o antecedente, mentre R costituisce la conclusione. • La formula (PQ) (QP) è 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.