1 Introduzione al software Maurizio Gabbrielli Università di Bologna.

Slides:



Advertisements
Presentazioni simili
Traduzione ed Interpretazione
Advertisements

Sistema operativo MS-DOS
Il Software.
Software di base: Linguaggi di Programmazione
Interazione Uomo - Macchina
La struttura fisica e logica di un elaboratore
Evoluzione dei linguaggi di programmazione
STRUTTURA DEL PERSONAL COMPUTER
I linguaggi di programmazione
Definizione e tipi di implementazione
Linguaggi di programmazione
Elaboratore e Sistemi Operativo
Introduzione allo studio dell’informatica
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
Introduzione allinformatica. Cosè linformatica ? Scienza della rappresentazione e dellelaborazione dellinformazione ovvero Studio degli algoritmi che.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Corso di Informatica (Programmazione)
Le prestazioni (velocità) di un singolo disco sono limitate dalla tecnologia usata, -per aumentare le prestazioni si può pensare di far operare in parallelo.
Fondamenti di Informatica
Struttura dei sistemi operativi (panoramica)
Linguaggi di Programmazione 1 docente: Maurizio Tucci Lezione 0.1 Concetti di Base.
Software di base Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei.
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
9. HARDWARE KERNEL O NUCLEO GESTORE DELLA MEMORIA GESTORE DELLE PERIFERICHE GESTORE DEI FILE INTERFACCIA UTENTE - GUI(Graphic Interface Unit) 2 ECDL MODULO.
Informatica per medici
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
Modulo 1 - Concetti di base della Tecnologia dell'Informazione
STRUTTURA GENERALE DI UN ELABORATORE
Concetti di base sul Software dei PC Unitre Anno
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
VIRTUALIZZAZIONE Docente: Marco Sechi Modulo 1.
Architettura del calcolatore
Introduzione allinformatica Luigi Di Chiara Arci Solidarietà Napoli.
Il Sistema Operativo (1)
CONCETTI DI BASE 1.0 FONDAMENTI 1.1 HARDWARE 1.2 SOFTWARE 1.3 RETI
Linguaggi per COMUNICARE
prof. Antonella Schiavon ottobre 2009
Corso di Informatica Corso di Laurea in Conservazione e Restauro dei Beni Culturali Gianluca Torta Dipartimento di Informatica Tel: Mail:
Realizzazione a cura di
INFORMATICA TECNOLOGIE INFORMATICHE INFORmazione autoMATICA
la traduzione dei programmi
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Tecnologie dell’Informazione e della Comunicazione
Corsi di Laurea in Biotecnologie
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali (corso TIE) CORSO LAUREA MAGISTRALE IN SCIENZE E TECNOLOGIE DELLE PRODUZIONI ANIMALI.
LINGUAGGI DI PROGRAMMAZIONE Per comunicare comandi e dati ad un computer occorre un particolare linguaggio detto LINGUAGGIO MACCHINA, che è un insieme.
Il software Componente del computer costituita dai: –programmi di base per la gestione del sistema –programmi applicativi per l’uso del sistema Queste.
Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica Università degli Studi di Roma “La Sapienza”
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Corso di Architetetture degli Elaboratori, A.A. 2004/ Architettura degli Elaboratori Elisa B.P. Tiezzi Orario ricevimento: Giovedì, ( Il materiale.
L’esecuzione dei programmi
Concetti Fondamentali sulla Programmazione
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
Elementi di Informatica SciGeo a.a. 2002/2003. Docente Giorgio Delzanno Ufficio 104 – I piano Dipartimento di Informatica e Sc. Inf. Tel
Il software Claudia Raibulet
Parte IIElementi di Informatica1 Introduzione ai sistemi operativi Parte II.
Informatica Lezione 6 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
Informatica e Informatica di Base
Struttura Fondamentale degli Elaboratori Elaboratore –È un sistema numerico –È un sistema automatico –È un sistema a programamzione registrabile –Ha una.
Parte IIConoscenze Informatiche1 Introduzione ai sistemi operativi e WindowsX Parte II.
ISIA Duca degli Abruzzi a.s. 2010/2011 prof. Antonella Schiavon
I Sistemi Operativi. Definizione Per Sistemi Operativi (di seguito SO) si intendono quei pacchetti software, a loro volta costituiti da più sottoprogrammi.
LINGUAGGI DI PROGRAMMAZIONE E' un linguaggio formale dotato di una sintassi ben definita che viene utilizzato per scrivere programmi che realizzano algoritmi.
Il computer RAM: Unità di misura MByte e GByte MHz Processore: Unità di misura Singolo o multiprocessore 32/64 bit velocità GHz Mouse tastiera video stampante.
COMPONENTI DI UN SISTEMA INFORMATICO HardwareSoftware Parte fisicaComponenti logiche Componenti fisiche (elettroniche e meccaniche) di un computer Istruzioni.
Unità di apprendimento 6
1 Informatica di Base Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Concetti informatici di base. Concetti informatici di base Il computer o elaboratore è una apparecchiatura costituita da un insieme di dispositivi di.
Struttura del Computer
Transcript della presentazione:

1 Introduzione al software Maurizio Gabbrielli Università di Bologna

2 Il calcolatore elettronico Calcolatore = hardware + software Hardware: i componenti fisici Software: le istruzioni che ``dicono’’ all’hardware cosa fare (i programmi) Il calcolatore è un esecutore di istruzioni molto efficiente ma ``poco creativo’’ (fa solo ciò che gli si dice di fare)

3 Come è fatto un calcolatore Processore (CPU) –Central Processing Unit –Interpreta ed esegue le istruzioni Memoria –principale e ausiliaria –contiene dati ed istruzioni Dispositivi di Ingresso –tasiera, mouse... Dispositivi di Uscita –monitor, stampante … Memoria Processore (CPU) Dispositivi di Ingresso Dispositivi di Uscita

4 Two Kinds of Memory Main –working area –temporarily stores program and data (while program is executing) Auxiliary –permanent (more or less) –saves program and results –includes floppy & hard disk drives, CDs, tape, etc.

5 Main Memory Organization Bit = one binary digit –Binary digit can have only one of two values, 0 or 1 Byte = 8 bits “Byte Addressable” –Main memory is a list of numbered locations that contain one byte of data in each location Number of bytes per data item may vary

6 Auxiliary Memory Organization

7 Cosa fa un calcolatore Programma (memorizzato) CPU Dati (input per il programma) Output La CPU ripete continuamente i seguenti due passi: 1) Preleva un’istruzione dalla memoria 2) Decodifica ed esegue l’istruzione, memorizza i risultato e torna al passo 1 Pogramma — in prima approssimazione un insieme di istruzioni che la CPU deve eseguire

8 Dall’algoritmo al programma Algoritmo = descrizione precisa dei passi da eseguire per giungere alla soluzione di un problema –algoritmo per la moltiplicazione –algoritmo per ordinare un insieme di numeri –ricetta di cucina …. Il calcolatore è un esecutore di algoritmi. –Perché un algoritmo possa essere eseguito esso deve essere formalizzato in termini di un linguaggio comprensibile al calcolatore. Programma = descrizione formale di un algoritmo in termini di un linguaggio di programmazione

9 Linguaggi di programmazione Linguaggio di programmazione: linguaggio artificiale, definito da una sintassi e da una semantica, che permette di esprimere istruzioni per un calcolatore (ossia programmi). Ogni linguaggio di programmazione consiste di : Operazioni di base: –operazioni aritmetiche –lettura da tastiera di un dato, scrittura su monitor di un dato... Costrutti linguistici per combinare le operazioni di base: –eseguire una dopo l’altra una sequenza di operazioni, –eseguire una operazioni solo se una certa condizione è verificata –eseguire un’operazione per un certo numero di volte Ci sono varie tipologie di linguaggi di programmazione e molte centinaia di linguaggi diversi

10 La gerarchia dei linguaggi di programmazione Utente Macchina Astrazione e vicinanza al linguaggio naturale Facilità di esecuzione per il calcolatore

11 Linguaggi basso livello Linguaggio macchina –quello che una macchina esecutrice di algoritmi è in grado di comprendere –usualmente inteso come il linguaggio del calcolatore fisico (usa 0 e 1) –scarsamente comprensibile all’utente umano Linguaggio assembly (o assembler) –rappresentazione simbolica del linguaggio macchina –compreso dal programma assemblatore (assembler) che traduce assembly in linguaggio macchina –ogni ``famiglia’’ di calcolatori ha il proprio linguaggio assembly

12 Linguaggi alto livello Linguaggi più vicini all’utente che alla macchina –vicini al linguaggio naturale –non direttamente comprensibili alla macchina –uso di notazione simbolica e meccanismi di astrazione Primi linguaggi alto livello definiti negli anni (FORTRAN e ALGOL). –Varie centinaia di linguaggi definiti a oggi, con più di 100 linguaggi di ampia diffusione. –Sviluppo influenzato da vari fattori: hardware disponibile, metodologie di programmazione, applicazioni … I linguaggi moderni prediligono gli aspetti di facilità di sviluppo e di correttezza dei programmi

13 Come si esegue un programma alto livello ? I linguaggi alto livello sono utili per l’utente umano, ma lontani dal linguaggio ``compreso’’ dalla macchina fisica Come rendere comprensibile al calcolatore fisico un programma alto livello ? Due soluzioni (spesso coesistenti) –Interprete –Compilatore

14 Cosa è un interprete? È un valutatore di programmi –segue il flusso di esecuzione del programma –esegue contemporaneamente la traduzione in linguaggio macchina dei comandi del programma e la loro esecuzione –l’output dell’interprete è il risultato della esecuzione del programma (ad esempio un numero, una stringa, … ) valore programma inte rpre te 3

15 Cosa è un compilatore ? È un traduttore di programmi –traduce da linguaggio di programmazione (linguaggio sorgente) in linguaggio macchina (linguaggio oggetto) –l’output del compilatore è un programma in linguaggio macchina programma compila tore programma

16 Tipologie di linguaggi alto livello Tre tipi di linguaggi –Linguaggi imperativi –Linguaggi dichiarativi Linguaggi Funzionali Linguaggi Logici –Linguaggi orientati agli oggetti I linguaggi imperativi (Fortran, Algol, Cobol, C … ) e quelli orientati agli oggetti (Java, C++, …) sono i linguaggi più diffusi

17 Programmazione orientata agli oggetti Ogni entità del sistema che si vuole descrivere è modellata mediante un oggetto. Un programma è costituito da un insieme di oggetti che interagiscono. Oggetto –rappresentazione di un elemento concreto del mondo reale o di un concetto –costituito da uno stato e da un insieme di funzionalità. Esempio: rettangolo –stato (campi): base, altezza, posizione –funzionalità (metodi): muovi, disegna, ottieni_Altezza, ottieni_Base, area

18 Architettura di un sistema software Applicazione Linguaggio di programmazione Sistema Operativo Hardware Ogni livello usa le funzionalità del livello sottostante e definisce nuove funzionalità Ogni livello definisce una sorta di ``computer virtuale’’

19 Un esempio Hardware Linux Java Browser Applicazione Web

20 Due tipi di software Software di sistema –Quello che comprende il sistema operativo –Di solito usa linguaggi che permettano anche operazioni di basso livello Software applicativo –L’insieme dei programmi che realizzano le diverse applicazioni: videoscrittura, basi di dati, fogli elettronici, navigazione Internet... –Vari linguaggi a seconda del tipo d’applicazione

21 Il sistema operativo Insieme di programmi che interagiscono e controllano le funzionalità della macchina fisica Estende le funzionalità della macchina fisica Risiede nella memoria ``Filtra’’ l’interazione fra programma applicativo e hardware Offre un’interfaccia amichevole all’utente umano (menu e icone)

22 Componenti di un sistema operativo Interprete dei comandi Gestore dei file Gestore delle periferiche Gestore della Memoria Nucleo BIOS Macchina Hw

23 Alcuni sistemi operativi Unix: sviluppato a partire dagli anni 70 presso AT&T. –Adatto principalmente per server di medie dimensioni. DOS: introdotto nel 1980 sul primo PC IBM, –interfaccia testuale. MacOS: sviluppato da Apple –Apple è stato il primo produttore ad offrire interfacce grafiche a finestre. Windows (95, 98, NT, 2000, …) Microsoft –tipico sistema operativo per PC, interfaccia grafica. Linux (anni 90): basato su Unix –sistema operativo per varie piattaforme basato sulla filosofia freeware, ossia è distribuito gratuitamente (si paga poi la manutenzione ed i servizi).

24 Software applicativo Insieme dei programmi che permettono di realizzare specifici compiti –videoscrittura –navigazione in Internet –elaborazione di dati mediante fogli elettronici –gestione di basi di dati –elaborazioni multimediali –progettazione assistita dal computer (CAD) –commercio elettronico ……. Il software applicativo è un livello ulteriore costruito sul sistema operativo

25 Tipologie di software Software freeware –Coperto da copyright, disponibile gratuitamente. Caso di Linux Software di pubblico dominio –Non coperto da diritti, si può copiare liberamente Software proprietario –Coperto da copyright, deve essere acquistato. Software shareware –Coperto da copyright, disponibile gratuitamente ma per continuare a usarlo occorre acquistarlo. Software rentalware –Coperto da copyright, viene noleggiato (a pagamento).

26 Alcune domande Cosa serve per poter esprimere tutti i possibili algoritmi ? Ci sono formalismi che permettono di esprimere più algoritmi di altri ? Ci sono problemi per i quali non esiste alcun algoritmo che li risolva ?

27 Cosa calcola un programma Dato lo schema visto è naturale pensare che un programma rappresenti una funzione Prog: Input Output Programma (memorizzato) CPU Dati (input per il programma) Output

28 Funzioni calcolabili: nozione intuitiva Una funzione f : A--> B e’ calcolabile se esiste un qualsiasi algoritmo che la calcola, ossia se esiste un algoritmo P tale che: dato un qualsiasi x  A, se f(x) = y allora P con input X termina e produce y come output

29 Tesi di Church Church (~ 1930). Una funzione che possa essere ``calcolata da un qualsiasi algoritmo’’ coincide con una funzione calcolabile da un modello matematico detto Macchina di Turing. –E’ una tesi non dimostrata, dato che la nozione di algoritmo e’ intuitiva. Pero’ a tutt’oggi non si e’ visto alcun controesempio. Le funzioni calcolabili dalla macchina di Turing coincidono con quelle calcolabili dai programmi scritti in un qualisiasi linguaggio di programmazione suficientemente generale (C, Java, Pascal ecc. ecc.).

30 Esistono funzioni non calcolabili ? Si, e sono la maggioaranza ! Ad esempio: –La funzione che determina se un programma termina oppure no –La funzione che deteremina se due programmi “fanno la stessa cosa” (calcolano la stessa funzione) –....