Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona



Documenti analoghi
Architettura del calcolatore

Contenuti. Visione macroscopica Hardware Software. 1 Introduzione. 2 Rappresentazione dell informazione. 3 Architettura del calcolatore

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Architettura hardware

Linguaggi di programmazione

C. P. U. MEMORIA CENTRALE

Linguaggi e Paradigmi di Programmazione

Dispensa di Fondamenti di Informatica. Architettura di un calcolatore

Struttura del calcolatore

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Lezione 3: Architettura del calcolatore

Linguaggi di programmazione

Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009. Prof. Raffaele Nicolussi

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

Approccio stratificato

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE

Dispensa di Informatica I.1

CPU. Maurizio Palesi

Esame di INFORMATICA

La Macchina Virtuale

23/02/2014. Dalla scorsa lezione. La Macchina di Von Neumann. Uomo come esecutore di algoritmi

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

Architettura dei computer

Ing. Paolo Domenici PREFAZIONE

Laboratorio di Informatica Corso di Laurea in Matematica A.A. 2007/2008

RETI E SISTEMI INFORMATIVI

Introduzione all'architettura dei Calcolatori

Vari tipi di computer

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Origini e caratteristiche dei calcolatori elettronici

Architettura di un calcolatore

- Algoritmi ed esecutori di algoritmi - ALGORITMI MACCHINA DI VON NEUMANN

Il Processore: i registri

Richiami di informatica e programmazione

Informatica - A.A. 2010/11

Laboratorio di Informatica

Calcolo numerico e programmazione Architettura dei calcolatori

ARCHITETTURA DELL ELABORATORE

All interno del computer si possono individuare 5 componenti principali: SCHEDA MADRE. MICROPROCESSORE che contiene la CPU MEMORIA RAM MEMORIA ROM

Corso di Informatica

Funzionalità di un calcolatore

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Architettura di un computer

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

INFORMATICA 1 L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira

Il computer: primi elementi

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

Corso di Calcolatori Elettronici I A.A Il processore Lezione 18

CdL in Medicina Veterinaria - STPA AA

Anatomia e fisiologia del computer: l architettura del calcolatore

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO

Von Neumann. John Von Neumann ( )

La macchina programmata Instruction Set Architecture (1)

Fondamenti di Informatica. Allievi Automatici A.A Nozioni di Base

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

In un modello a strati il SO si pone come un guscio (shell) tra la macchina reale (HW) e le applicazioni 1 :

Parte II.2 Elaboratore

CONCETTI BASE dell'informatica Cose che non si possono non sapere!

Il Sistema Operativo. Di cosa parleremo? Come si esegue un programma. La nozione di processo. Il sistema operativo

Corso di Informatica

CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Il calcolatore elettronico. Parte dei lucidi sono stati gentilmente forniti dal Prof. Beraldi

Il Software... A.A Informatica 96

L architettura del calcolatore (Prima parte)

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

PARTE 4 La Macchina Software

I componenti di un Sistema di elaborazione. Memoria centrale. È costituita da una serie di CHIP disposti su una scheda elettronica

Introduzione. Informatica B. Daniele Loiacono

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Architettura hw. La memoria e la cpu

CHE COS È L INFORMATICA

IL SISTEMA OPERATIVO IL SISTEMA OPERATIVO INTERFACCE TESTUALI INTERFACCE TESTUALI FUNZIONI DEL SISTEMA OPERATIVO INTERFACCE GRAFICHE

Software di base. Corso di Fondamenti di Informatica

Programmi. Algoritmi scritti in un linguaggio di programmazione

IL COMPUTER APPUNTI PER LEZIONI NELLE 3 CLASSI LA MACCHINA DELLA 3 RIVOLUZIONE INDUSTRIALE. A CURA DEL Prof. Giuseppe Capuano

Interpreti e compilatori La macchina di Von Neumann

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

Corsi Speciali Abilitanti Indirizzo 2: Fisico-Matematico Modulo Didattico: Elementi di Informatica Classi: 48/A TEST D INGRESSO

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Ottimizzazione delle interrogazioni (parte I)

Introduzione. Laboratorio di Calcolo Corso di Laurea in Fisica. Università degli Studi di Roma La Sapienza

Introduzione al sistema operativo Il file system: file, directory,...

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

Il Sistema Operativo

Corso di Laurea in Informatica Architetture degli Elaboratori

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Transcript:

Programmazione per Bioinformatica Il Calcolatore e la Programmazione Dr Damiano Macedonio Università di Verona

Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macrocomponenti: Hardware: componenti fisiche. Software: tutti i possibili tipi di programmi utilizzati per fornire istruzioni al computer 2

Architettura del calcolatore L architettura dell hardware di un calcolatore reale è molto complessa La macchina di von Neumann è un modello semplificato dei calcolatori moderni, composta da Unità di calcolo Una memoria che contiene programmi e dati dei programmi Le istruzioni da eseguire stanno in memoria, vengono prelevate, decodificate ed eseguite. John von Neumann, matematico ungherese, progettò, verso il 1945, il primo calcolatore con programmi memorizzabili anziché codificati mediante cavi e interruttori 3

Macchina di Von Neumann E composta da 4 tipologie di componenti funzionali: unità centrale di elaborazione (CPU) esegue istruzioni per l elaborazione dei dati svolge anche funzioni di controllo memoria centrale memorizza e fornisce l accesso a dati e programmi interfacce di ingresso e uscita bus componenti di collegamento con le periferiche del calcolatore svolge la funzionalità di trasferimento di dati e di informazioni di controllo tra le varie componenti funzionali 4

Modello di Von Neumann (1) La CPU (Central Processing Unit) spesso integra due distinte unità: L Unità di controllo si occupa di controllare tutte le operazioni del calcolatore, interpretare le istruzioni prelevate dalla memoria e inviare alle altre unità i segnali per l'esecuzione delle operazioni L Unità aritmetico-logica, detta ALU (Arithmetic & Logic Unit), fornisce la capacità di effettuare operazioni di tipo aritmetico/logico di base. Si occupa di eseguire le operazioni : somme, confronti A volte e affiancata da un co-processore matematico Controllo ALU CPU Ingresso Uscita PERIFERICHE istruzioni dati MEMORIA BUS Le componenti fondamentali di un moderno calcolatore elettronico 5

Modello di Von Neumann (2) La Memoria centrale ha lo scopo di conservare le istruzioni e i dati da elaborare e i risultati ottenuti dalle elaborazioni; Le Interfacce collegano alle Unità di ingresso (Input) che immette le informazioni nel calcolatore per farle elaborare; Unità di uscita (Output) che riceve le informazioni dalla memoria del calcolatore per renderle pronte all uso; le unità di ingresso e uscita sono anche dette periferiche Il Bus, vero e proprio canale di comunicazione che consente ai dati di transitare fra diversi componenti del calcolatore. CPU Controllo Ingresso ALU Uscita PERIFERICHE BUS istruzioni dati MEMORIA Le componenti fondamentali di un moderno calcolatore elettronico 6

Modello di Von Neumann (3) Per ogni istruzione del programma: la CPU, tramite la sua parte Controllo, ordina il prelevamento di una istruzione dalla Memoria; la decodifica, cioè la interpreta capendo quali azioni comporta; la esegue utilizzando le opportune unità coinvolte durante l esecuzione può: usare la ALU effettuare altri accessi in memoria per leggere o scrivere dati effettuare operazioni di ingresso (per es. leggi un dato dalla tastiera) o di uscita (per es. visualizza il risultato sul video). Controllo ALU CPU Ingresso Uscita PERIFERICHE istruzioni dati MEMORIA Segnali di controllo Spostamento dati e/o istruzioni 7

Memorizzazione Un calcolatore memorizza i dati, che rappresentano informazioni di interesse i programmi per l elaborazione dei dati La memoria è l unità responsabile della memorizzazione dei dati Una unità di memoria fornisce due sole operazioni memorizzazione di un valore (scrittura) accesso al valore memorizzato (lettura) 8

Memoria Costituita da un lungo elenco di byte, ognuno con il proprio indirizzo RAM: Volatile, contiene il programma in esecuzione e gran parte dei dati utilizzati Memoria Ausiliaria: Conserva i dati in modo permanente. I byte sono raggruppati in unità più grandi detti file Byte: la più piccola unità di memoria indirizzabile, contiene otto cifre binarie (bit). 9

Elaborazione Le istruzioni di un programma corrispondono ad operazioni elementari di elaborazione operazioni aritmetiche operazioni relazionali (confronto tra dati) operazioni su caratteri e valori di verità altre operazioni numeriche Un calcolatore sa svolgere poche tipologie di operazioni elementari ma in modo molto efficiente un calcolatore può eseguire decine o centinaia di milioni di istruzioni al secondo 10

Linguaggio Macchina Ogni processore ha un proprio linguaggio macchina con un proprio formato delle istruzioni Le istruzioni sono sequenze di bit che codificano: l'operazione da eseguire I gli operandi su cui tale operazione deve essere eseguita (registri, locazioni di memoria, costanti...) Il linguaggio assembler di un processore è la versione simbolica del linguaggio macchina 11

Linguaggio Assembler (un idea ) Istruzioni di trasferimento: LOAD R, x STORE R, y... Istruzioni aritmetico/logiche ADD R', R'' MUL R',R''... Istruzioni di controllo e di salto salto incondizionato JUMP alfa... alfa:... salto condizionato JZERO R1, alfa... alfa:... 12

L'algoritmo di Euclide in assembler (just for fun ) alfa: fine: LOAD R1, 101 LOAD R2, 102 DIV R1, R2 MUL R1, R2 LOAD R2, 101 SUB R2, R1 JZERO R2, fine LOAD R1, 102 STORE R1, 101 STORE R2, 102 JUMP alfa LOAD R1, 102 STORE R1, 103 13

Svantaggi del linguaggio macchina È necessario conoscere i dettagli dell'architettura del processore utilizzato e il relativo linguaggio Risulta impossibile trasportare i programmi da una macchina ad una differente Il programmatore si specializza nell'uso di trucchi legati alle caratteristiche specifiche della macchina I programmi risultano difficili da comprendere e da modificare La struttura logica del programma é nascosta Difficile comprendere il programma e correggerlo in presenza di errori 14

I linguaggi ad alto livello Obiettivo: rendere la programmazione indipendente dalle caratteristiche peculiari della macchina utilizzata. Non sono pensati per essere compresi direttamente da macchine reali, ma da macchine astratte in grado di effettuare operazioni più ad alto livello rispetto alle operazioni elementari dei processori reali. L'attivita di programmazione viene svincolata dalla conoscenza dei dettagli architetturali della macchina utilizzata. 15

Compilatori e interpreti L hardware del computer non è in grado di comprendere i linguaggi di alto livello. I programmi in linguaggio di altro livello devono essere tradotti in linguaggio macchina. Compilatore: elabora il programma scritto in linguaggio di alto livello in modo che possa essere eseguito sulla macchina (compilazione). Una volata compilato, è possibile eseguire il programma risultante, senza doverlo ricompilare. Interprete: traduce le istruzioni da un linguaggio ad alto livello a un linguaggio di basso livello. Esegue ogni singola porzione di codice subito dopo averla tradotta. La traduzione viene ripetuta a ogni esecuzione del programma. 16

Compilatori Programma di alto livello Indipendenza dalla piattaforma Compilatore per Windows Compilatore per MacOS Compilatore per Linux Eseguibile per Windows Eseguibile per MacOS Eseguibile per Linux 17

Interpreti Programma di alto livello Indipendenza dalla piattaforma Interprete per Windows Interprete per MacOS Interprete per Linux 18

Approccio di Java: il Bytecode Il compilatore Java traduce il programma in bytecode. Il bytecode è il liguaggio macchina della Java Virtual Machine (JVM). La JVM è un interprete che traduce il bytecode nel linguaggio macchina del computer effettivo. Tradurre il bytecode in linguaggio macchina è più semplice che tradurre il programma di alto livello. 19

Java Virtual Machine Sorgente Java Compilatore (javac) Java Bytecode Indipendenza dalla piattaforma Interprete (java) Interprete (java) per Windows Interprete (java) per MacOS Interprete (java) per Linux 20

Paradigmi di programmazione Paradigma: un insieme di teorie, standard e metodi che rappresentano un modo di organizzare la conoscenza, cioè e un modo di guardare il mondo. T. Kunh, La struttura delle rivoluzioni scientiche, 1970 Un paradigma di programmazione fornisce un metodo per: I concettualizzare il processo di computazione I organizzare e strutturare i compiti che un calcolatore deve svolgere Paradigmi: imperativo (Pascal, C,... ) funzionale (LISP, FP,... ) logico (Prolog) ad oggetti (Java) 21

Java: Object-Oriented Language Object-Oriented Programming: Si considera il programma come costituito da oggetti (o istanze) che possono agire da soli o interagire tra loro. Gli oggetti sono caratterizzati da stato e comportamento. Stato: Insieme delle proprietà (attributi) che caratterizzano l'oggetto in un determinato istante. cane: nome, colore, razza, età,... auto: colore, potenza, livello carburante, velocità,... Comportamento: Insieme delle azioni che l'oggetto può eseguire. cane: abbaiare, scodinzolare, mangiare,... auto: accelerare, consumare, sterzare,... 22

Messaggi e Oggetti Nella programmazione ad oggetti un'azione viene iniziata inviando un messaggio ad un agente (un oggetto) responsabile di svolgerla. Il messaggio codifica la richiesta di un'azione ed è corredato con l'informazione necessaria a soddisfarla (argomenti) Il ricevente, se accetta il messaggio, si assume la responsabilità di portare a compimento la relativa azione In risposta al messaggio il ricevente eseguirà un metodo per soddisfare la richiesta 23

Protocolli e contratti Protocollo (interfaccia): Definisce le regole di comunicazione con l'oggetto: l'insieme dei messaggi il formato dei messaggi che l'oggetto può riconoscere. Contratto Associato ad ogni messaggio Descrive il modo in cui l'oggetto garantisce di rispondere al messaggio 24

Classi in Java Classe Una classe è un modello che specifica lo stato e il comportamento di tutte le sue istanze (oggetti). Tutti gli oggetti sono istanze di una classe Il metodo utilizzato da un oggetto per rispondere a un messaggio è determinato dalla classe da cui è stato istanziato Tutti gli oggetti ottenuti istanziando una medesima classe rispondono ad un certo messaggio mediante il medesimo metodo 25

Principi Fondamentali Incapsulamento: Si rende visibile all utilizzatore solo una parte del programma, evitando alcuni dettagli. Polimorfismo: Si permette ad una stessa istruzione di un programma di avere significati differenti in contesti differenti. Ereditarietà: Ottimizza l organizzazione delle classi. Si può definire una sola volta gli attributi e i comportamenti comuni e applicarli poi ad un intero insieme di classi. 26

Gerarchia di Classi 27

Errori (Bug) Errori di sintassi: errori grammaticali del programma. Si violano le regole del linguaggio. Errori a run-time: errori che avvengono durante l esecuzione del programma (es. divisione per 0) Errori logici: errori semantici. Si è scritto un programma corretto dal punto di vista della sintassi che non da errori run-time, ma non fa quello che intendeva il programmatore! 28