Nel dettaglio, tipicamente, allo stato acceso viene associata la cifra 1 mentre allo stato spento la cifra 0.



Documenti analoghi
Architettura hardware

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Architettura hardware

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

Dispensa di Informatica I.1

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

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Informatica 1 Lezione 1

NOZIONI ELEMENTARI DI HARDWARE E SOFTWARE

Il Sistema Operativo (1)

Il sistema operativo: interazione con l utente

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

Laboratorio di Informatica

Scuola Secondaria di Primo Grado Anna Frank Nome Cognome classe anno sc. 2008/09 INFORMATICA

Il software: Istruzioni per il computer. I tre tipi di software di sistema. Compiti del sistema operativo

Corso di Informatica

Memoria Secondaria o di Massa

Il computer: primi elementi

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

Il Software. Il software del PC. Il BIOS

Informazione analogica e digitale

Concetti fondamentali della Tecnologia Dell informazione Parte prima

Il Sistema Operativo: il File System

Architettura dei computer

MODULO Il personal computer. ISIS STRINGHER Corso Serale Anno scolastico 2010/11 Classe 1 Commerciale

Laboratorio di Informatica

Laboratorio di Informatica

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

Alfabetizzazione Informatica. Prof. Giuseppe Patti

Corso: Informatica+ Andrea Cremonini. Lezione del 20/10/2014

5-1 FILE: CREAZIONE NUOVO DOCUMENTO

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

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

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

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

INTERAZIONE CON L UTENTEL

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

INFORMATICA, IT e ICT

COME E COMPOSTO IL PC -

Informatica per la Storia dell Arte. Anno Accademico 2014/2015

Reti di calcolatori ed indirizzi IP

Biblioteca di Cervia NOZIONI BASE DI INFORMATICA

Architettura di un calcolatore

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

PARTE 4 La Macchina Software

Software di base. Corso di Fondamenti di Informatica

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Utilizzo applicativo Biliardogare.it della F.I.Bi.S.

Elementi di informatica

Virtualizzazione VirtualBox su Host Windows

Appunti di informatica. Lezione 6 anno accademico Mario Verdicchio

IRSplit. Istruzioni d uso 07/10-01 PC

MANUALE EDICOLA 04.05

Le Infrastrutture Software ed il Sistema Operativo

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

Modulo informatica di base 1 Linea 2

1 -Introduzione MODULO L1

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

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

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

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

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

Premessa Le indicazioni seguenti sono parzialmente tratte da Wikipedia ( e da un tutorial di Pierlauro Sciarelli su comefare.

Organizzazione della memoria

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

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

Informatica - A.A. 2010/11

MODULO 01. Come è fatto un computer

Gestione del file system

Cosa è un foglio elettronico

MODULO 01. Come è fatto un computer

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

Esame di INFORMATICA

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Esercitazione 1 primi passi e uso dei file

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Introduzione alla programmazione in C

CERTIFICATI DIGITALI. Manuale Utente

IL SOFTWARE TIPI DI SOFTWARE. MACCHINE VIRTUALI Vengono definite così perché sono SIMULATE DAL SOFTWARE, UNIFORMANO L ACCESSO SISTEMA OPERATIVO

Registratori di Cassa

Sharpdesk V3.3. Guida all installazione Versione

Il Computer 1. A cosa serve un Computer? Scrivere, Calcolare, Disegnare, Giocare, Ricercare informazioni, Comprare

Uso del Computer e Gestione dei File. Uso del Computer e Gestione dei File. Federica Ricca

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

Istruzioni operative instal azione FirmaVerifica3.0 Pag.1 di 27

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori

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

COMPETENZE INFORMATICHE DI BASE PER ADULTI

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Linguaggi e Paradigmi di Programmazione

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

Manuale Operativo per la firma digitale

MANUALE PARCELLA FACILE PLUS INDICE

Laboratorio di Informatica di Base Archivi e Basi di Dati

Hardware delle reti LAN

Gestione della memoria centrale

1) GESTIONE DELLE POSTAZIONI REMOTE

Introduzione ai Sistemi Operativi

Transcript:

CONCETTI INTRODUTTIVI, DEFINIZIONI (L alfabeto dei calcolatori) Aritmetica binaria La notazione con cui sono rappresentati normalmente i numeri è detta posizionale: ad esempio nel numero 4.726, la cifra 7 rappresenta le centinaia, perché è al terzo posto da destra. Ogni posto rappresenta quindi una potenza di 10 migliaia centinaia decine unità 1000 100 10 1 10 3 10 2 10 1 10 0 4 7 2 6 In questa notazione si usano 10 cifre e per questo essa è detta decimale (o in base 10) Ma le stesse quantità sono rappresentabili anche con meno simboli; se ne possono ad esempio usare anche solo due: 0 e 1. In questo caso le posizioni rappresentano le potenze di 2, quindi *,16,8,4,2,1+ e come effetto secondario, i numeri tendono ad essere molto più lunghi. Per conoscere il valore (decimale) di un numero espresso attraverso la notazione binaria (o in base 2) occorre sommare tutte le potenze di 2, nelle posizioni in cui vi e un 1. Esempio: 11001 = 25 questo perché: Le potenze di 2 sono 16 8 4 2 1 E la somma di 16*1 + 8*1 + 0*4 + 0*2 + 1*1 = 25 In realtà esattamente come è in notazione decimale in cui, 25 = 2 (decine, 10) + 5 (unità, 1) ossia: 25 = 2*10 + 5*1 (un fatto che sembra tremendamente ovvio solo perché si è abituati a contare in base 10 fin dalla nascita). Perché aritmetica binaria? Visto che i dati nei calcolatori sono rappresentabili facilmente in un sistema di tipo ON/OFF (acceso/spento), risulta pertanto assolutamente naturale e connaturato al modo di immagazzinare le informazioni l uso di un aritmetica che utilizzi due sole cifre, quindi binaria (o in base 2) Nel dettaglio, tipicamente, allo stato acceso viene associata la cifra 1 mentre allo stato spento la cifra 0. Quanti numeri? Nella rappresentazione decimale, con una cifra si possono rappresentare 10 simboli (equindi 10 valori numerici o oggetti distinti): 0, 1, 2,, 9 Con 2 cifre, 100 simboli: 0, 1, 2,, 98, 99 e si noti che 100 = 10x10 Con 3 cifre, invece 1000 : 0, 1, 2,, 998, 999 e in fatti 1000 = 10x10x10 Ossia, N cifre si possono rappresentare 10 N simboli (o valori numerici).

Più in generale, detta b la base della notazione, con N cifre in base b si possono rappresentare b N simboli (o valori numerici o oggetti) distinti. Quindi in notazione binaria (base 2), con N cifre sono rappresentabili fino a 2 N simboli (o valori numerici o oggetti). Ad esempio, con 8 cifre si possono rappresentare fino a 2 8 = 256 simboli. Pertanto, è possibile usare un numero binario, anche di soli 8 bit, per rappresentare molti valori numerici e creando delle tabelle di corrispondenza, rappresentare anche eventuali oggetti (lettere, caratteri o segni speciali). Per esempio, numero 0 => lettera a, numero2 => lettera b, Estendendo il concetto, si comprende come tutti i dati contenuti, gestiti ed elaborati da un calcolatore possano essere rappresentati da una lunga sequenza di zeri e uni (01001101 01010111 01100110 ). Alcune potenze di 2 Da quanto detto risulta naturale anche rappresentare grandezze convenzionali tramite approssimazioni di potenze di 2. Infatti, visto che la potenza 2 10 = 1024 ~ 1000 risulta quindi non troppo scorretto sostituire il valore 1024 al posto del mille. Pertanto, è possibile istituire delle correlazioni, anche se un po approssimate, tra valori numerici speciali della notazione decimale e i corrispettivi valori della notazione binaria (es. kilo = 1000 ~ 1024 = 210) ICT ITALIANO SI PUO APPROSSIMARE CON CHE VALE Kilo Mille 2 10 1.024 Mega Milione 2 20 1.048.576 Giga Miliardo 2 30 1.073.741.824 Tera Biliardo (1000 miliardi) 2 40 1.099.511.627.776 Peta Milione di miliardi 2 50 1.125.899.906.842.620 Bit e Byte Inoltre, vista l importanza nel modo dei calcolatori della numerazione in base 2, ad alcuni elementi di essa, sono stati assegnati dei nomi specifici: () il bit, è la più piccola quantità di informazione, non ulteriormente divisibile, memorizzabile su un elaboratore. Esso corrisponde a una cifra binaria e può assumere il valore 0 o 1, () il BYTE, insieme di 8bit, è invece la quantità di dati minima accessibile o utilizzabile da un programma. E i caratteri? Come pocanzi detto, attraverso la notazione in base 2 è possibile rappresentare anche un grande insieme di oggetti. Più in dettaglio, attraverso una sequenza di cifre binarie (bit) e un opportuna tabella di conversione è possibile rappresentare lettere e segni speciali. Nello specifico, la più famosa e antica (ma tuttora usata) tabella di conversione è l ASCII (American Standard Code for Information Interchange) che consente di rappresentare lettere (minuscole e maiuscole), numeri, segni di interpunzione oltre ad una ventina di simboli speciali tramite 7 bit. Pertanto, si comprende perché un byte (8 bit) sia sufficiente a rappresentare tutti i caratteri e segni speciali dell alfabeto e perché, in definitiva, sia il più piccolo elemento gestibile da un programma.

Convenzioni La velocità delle reti di calcolatori per convenzione si misura in bit al secondo (quantità di informazione elementare trasmessa o ricevuta) bit => b. 10 Mb/sec = 10 mega bit/sec = 10 milioni di bit (o cifre) al secondo. Lo spazio disco o le dimensioni di file di dati sono invece misurati in Byte (numero di caratteri contenuti) Byte => B. 250 GB = 250 gigabyte = 250 miliardi di byte (spesso caratteri) archiviabili. Conseguenze Poiché un carattere è lungo 8 bit ( = 1 byte) bisogna fare attenzione nelle valutazioni di spazio, velocità, banda, tempo, ecc. Infatti, ad esempio: Un filmato di 1h 45min (~800 MB) per essere trasferito via rete su una connessione da 2 Mb / sec, non ci metterà: 800 / 2 = 400 secondi, cioè 6 min e 40 sec, ma invece 800 * 8 = 6400 / 2 = 3200 secondi, cioè 53 min e 20sec. Per finire, niente e tutto Il concetto di DEFAULT: Gli elaboratori sono privi di iniziativa. Una delle conseguenze più pervasive è l impossibilità di compiere azioni, per noi naturali, come quella di fare una scelta arbitraria per superare una condizione non prevista e per la quale non sia specificato alcun criterio. È quindi spesso necessario, se non indispensabile, indicare dei valori, detti di default, per variabili, criteri, azioni, scelte, da utilizzare in assenza di altre indicazioni o di indicazioni ambigue. Esempi di frasi esplicative: Appena installato, la password di default è K04resYt Per default la tua connessione al sito terminerà dopo 5 minuti di inattività In caso di errore, farà un dump di memoria ed un reboot, ma puoi cambiare il default usando la variabile DEFAULT_ERROR_CONDITION. HARDWARE, PANORAMICA HARDWARE (La materia dei calcolatori) Definizione: In inglese indica il negozio di ferramenta, la ferraglia, le componenti metalliche e meccaniche; ma anche più genericamente, viti, bulloni, In informatica indica altrettanto genericamente tutti gli apparati e le parti fisiche e di componenti elettronici che costituiscono un elaboratore. Per antonomasia, a volte il computer stesso. Componenti Hardware Esempi: CPU (Central Processing Unit), Memoria RAM, Dischi, Schermo video, Periferiche di I/O, tastiera, Mouse, Modem, Componenti fondamentali Un calcolatore, in termini essenziali e teorici può essere sempre ricondotto a questi componenti fondamentali: 1. un unità di elaborazione centrale (la CPU) 2. una memoria centrale (volatile, la RAM) 3. un sistema di archiviazione persistente (o di memoria persistente o di massa, tipicamente l HD) 4. un sistema di periferiche di input/output (I/O)

Esempi di calcolatore Le calcolatrici da Uovo di Pasqua sono dei calcolatori. Infatti posseggono: Un circuito elettronico con un processore per il calcolo (CPU), Alcune celle di memoria per registrare i dati immessi quando sono accese (RAM), Una tastiera numerica e un display video (I/O) per visualizzare i dati immessi e i risultati ottenuti. Inoltre, quando vengono accese non hanno dati in memoria, mentre quando vengono spente perdono tutti i dati immessi. I telefoni cellulari, anche nei casi di modelli semplici, sono anch essi dei calcolatori in quanto sono dotati di: Un circuito stampato con un processore dedicato (CPU), Una memoria volatile (RAM), Una SIM con una memoria persistente per mantenere i dati dell utente, la rubrica e gli SMS anche quando il telefono è spento, Un video, una tastiera, un altoparlante, ecc come sistema di periferiche di I/O. CPU (Central Processing Unit) È la parte centrale, considerata il cuore o il cervello del calcolatore. È composta da un numero altissimo (decine di milioni) di circuiti stampati estremamente miniaturizzati (distanza tra circuiti quantificabile in milionesimi di millimetri). Compie costantemente delle operazioni che hanno le seguenti caratteristiche: Sono estremamente semplici e atomiche paragonabili a somme, sottrazioni e movimentazioni di dati tra celle di memoria, Sono numericamente tantissime ed eseguite in tempi brevissimi, Sono eseguite sequenzialmente, ossia, sempre e solamente un operazione alla volta. CPU Caratteristiche L operatività della CPU viene quantificata in tempomacchina : quantità di tempo dedicato alla risoluzione esclusiva di un attività. Il tempomacchina viene generalmente: Condiviso tra le attività del Sistema operativo e le attività richieste dagli Utenti, Suddiviso in unità fondamentali e assegnato con opportune strategie ai singoli processi software e a tutte le periferiche in I/O che lo richiedano. Le prestazioni della CPU sono invece misurate in velocità : numero (o cicli) di operazioni per secondo, ad esempio: Pentium II 450 MegaHertz (1998) => 450.000.000 operazioni al sec. Pentium dual core 2,2 GHz (2008) => 4.400.000.000 operazioni al sec. CPU Architetture I calcolatori, a seconda delle loro prestazioni (e del loro prezzo) possono essere dei sistemi: Monoprocessore => ossia dotati di una sola CPU, Intel: AMD: Multiprocessore => quindi dotati di più CPU (generalmente 2 o 4) che condividono il carico computazionale. Intel: 2 CPU, 4 CPU; AMD: 2 CPU, 4 CPU. RAM, Memoria centrale È il luogo utilizzato dalla CPU per l esecuzione delle sue operazioni. Esse prevedono che il dato su cui occorre operare sia:

Portato dalla memoria di massa (l HD) ad un area di memoria centrale (la RAM) riservata al processo software in esecuzione, Da qui, acceduto o portato in aree di memoria centrale riservate alla CPU, Utilizzato dalla CPU, Riportato indietro una volta terminata l operazione. RAM, Memoria virtuale Pertanto, la RAM viene generalmente suddivisa in aree dedicate: Ai processi, Al sistema operativo perché operi su questi. Inoltre, la sua dimensione può essere estesa oltre la sua dimensione fisica, tramite il concetto di memoria virtuale: emulazione di uno spazio fisico più grande di quello effettivamente disponibile attraverso il concetto di spazio degli indirizzi. RAM, Tecnologie Esigenza: memorizzare informazioni numeriche, in particolare, sequenze di due soli simboli: lo 0 e l 1. Implementazione: disporre di un apparato che sia in grado di rappresentare due differenti modi di essere (stati). Realizzazione: sistemi che tramite un circuito (o un componente elettronico) ed un campo elettrico possano rappresentare (alternativamente) due stati fisici stabili, riconoscibili (ciascuno assegnato ad uno, due possibili simboli). Nello specifico, ciò si realizza tramite differenti valori di tensione elettrica, ad esempio: 0 volt => 0; 5 volt => 1. Ovviamente, in assenza di campo elettrico (quindi allo spegnimento), lo stati fisico si annulla e con esso quindi anche il valore numerico rappresentata. RAM, Evoluzioni Confronti storici 1988, sistema multi utente Digital VAX/750 (80 utenti contemporanei) interfaccia solo a carattere: RAM: 5 MB, costo RAM: circa 500 euro/mb (1.000.000 lire), costo elaboratore: 25.000 euro. 2008, PC portatile, RAM DDR da 1GByte costo RAM: 10-100 euro, costo PC: 450 euro. Ma la memoria è 200 volte più capiente! Memoria di massa Con questo termine si intendono apparati dedicati esclusivamente all immagazzinamento di dati, con una modalità che li renda disponibili anche in assenza di alimentazione elettrica. In generale le memorie di massa vengono divise in classi o categorie legate: al costo, alla velocità di accesso ai dati e alla tecnologia con cui sono realizzate. Memorie di massa, dischi Completato la dotazione di un computer e consentono di salvare tutte le informazioni in forma di file, rendendole disponibili in maniera continuativa.

Sono di alta capacità e vengono valutati e misurati in termini di spazio massimo disponibile. Capacità media di un disco da PC (2008): 120-500 Gbyte. Tecnologia: una serie di dischi paralleli e concentrici ruota ad alta velocità (5.000-15.000 giri/min), mentre una testina legge/scrive spostandosi in maniera radiale. Difetti: rotazione da motore elettrico, parti meccaniche in movimento, riscaldamento, danneggiamento da movimento e contatto fisico con la testina. Costo disco fisso 160 Gbyte: 50euro. Memorie di massa, nastri Sono unità costituite da un nastro ricoperto da una pellicola magnetizzabile. Vengono dette ad accesso sequenziale in quanto i dati vengono scritti tutti di seguito contrariamente ai dischi. Si caratterizzano per avere un accesso più lento rispetto ai dischi ma posseggono maggiori capacità di archiviazione. Sono in genere utilizzate per salvataggi periodici dei dati (backup). Capacità media di una cassetta Ultrium 4: 1,5TB. Costo: 40 euro. Difetti: il costo del supporto e del lettore unito alla lentezza di accesso ai dati. Memorie di massa, memorie a stato solido Più comunemente note come Pendrive o flashmemory, sono sistemi di memoria che si caratterizzano per la totale assenza di parti meccaniche e che archiviano le informazioni, similmente ai dischi, in modo non sequenziale. Hanno sostituito floppy e dischetti (magnetici) per il salvataggio veloce e il trasporto dei dati. Capacità: 2-32 Gbyte. Tecnologia: Sfruttano concetti di fisica quantistica (effetto tunnel) Costo: basso < 3 euro/1gbyte. Difetti: Limite fisico sul numero massimo di possibili riscritture. Inoltre, sono già in commercio (2010) PC portatili con dischi SSD da 160 GB ad un costo abbordabile. Memorie di massa, CD e DVD Sono supporti ottici di sola lettura o riscrivibili un numero limitato di volte attraverso un masterizzatore. Vengono tipicamente utilizzati per salvataggio occasionali o periodici di medie quantità di dati, oppure, per la distribuzione massiccia di contenuti digitali (film, giochi, software). Tecnologia: una pellicola riflettente, contenuta all interno del disco, riflette il laser emesso dal dispositivo di lettura e incidente sul disco (l 1). Se in un settore la pellicola non è presente, il laser attraversa il disco rappresentando così uno stato diverso (lo 0). Capacità: CD-ROM (max 800MB), DVD (max 4-8GB) Costo: basso, anche dei lettori e masterizzatori. Difetti: si possono graffiare e non essere più leggibili. Attenzione: l integrità dei dati conservati ha una durata legata al supporto fisico, minore di quanto comunemente si immagini (poche decine di anni nel caso migliore). Periferiche di I/O Con questo termine si indicano tutti gli apparati collegati al calcolatore tramite i quali sia possibile

Ricevere delle informazioni (input) dall esterno Mandare delle informazioni (output) verso l esterno Sebbene sia concettualmente (e tecnicamente possibile) avere calcolatori privi di dispositivi di I/O, nella realtà ogni calcolatore ne possiede anche più d uno in quanto tali dispositivi sono il modo con cui il calcolatore comunica con il mondo al di fuor di sé stesso (umano o altro calcolatore che sia). Periferiche di I/O, esempi Stampanti, Tastiere, Video, Mouse, Scanner, Rete (scheda di), Joystick, Webcam, PERIFERICHE I/O Dispositivi di Input / Output (L interazione uomo-macchina) La CPU, la RAM ed il sistema di archiviazione dei dati, costituiscono il cuore del calcolatore. Tuttavia, per poter utilizzare un calcolatore occorre essere in grado di fornirgli dei dati e riceve dei risultati. Occorre pertanto disporre di dispositivi di Input e Output che implementando delle interfacce di comunicazione consentano un interazione tra l uomo e la macchina. Porte di collegamento Esempi di dispositivi di input/output sono i seguenti: Rispettivamente: Monitor, tastiera, mouse, joystick, web-cam, stampante, ecc. Ogni dispositivo di input/output, in genere, si collega ad una porta del calcolatore. Esistono molti tipi di porte a seconda del tipo di protocollo di comunicazione implementato e dalla velocità di trasmissione dei dati (USB 1.0, USB 2.0, Seriale, Parallela, ecc.). Dispositivi Output Stampante, Monitor, Casse acustiche. Dispositivi Input Tastiera, Strumenti di puntamento (es. mouse), Scanner, Microfono, Macchina fotografica e Camera digitale. Funzionamento dei dispositivi di Output Tutti i dispositivi output operano sotto il controllo del processore del calcolatore. Nel dettaglio, il processore decide: Quale attività debba essere eseguita da un dispositivo, In quale sequenza più attività debbano essere eseguite da un dispositivo, In che modo, più attività debbano essere eseguite da più dispositivi, ossia, ne coordina la sequenza nel caso in cui alcune abbiano la priorità su tutte le altre. Per realizzare tutto questo, i dispositivi di output comunicano costantemente con il processore avvertendolo ogni qualvolta, finita un attività, si rendano disponibili ad eseguire un nuovo compito. Funzionamento dei dispositivi di Input Anche i dispositivi di input lavorano sotto il controllo del processore del calcolatore. Ma a differenza dei dispositivi di output essi restano costantemente in attesa di un evento dal mondo esterno. Infatti, quando l utente usa un dispositivo di input, per fornire al calcolatore un comando (o un dato), il dispositivo traduce e registra il comando e manda al processore un segnale, detto interrupt.

Periodicamente, il processore esegue un controllo di tutti i dispositivi di input. Se si accorge che un dispositivo ha inviato un interrupt, si mette in comunicazione con quel dispositivo al fine di ricevere il comando (opportunamente tradotto) proveniente dal mondo esterno. Ricevuto il comando, il processore sospende il compito che sta eseguendo per assecondare il comando ricevuto. Terminate tutte le operazioni necessarie, il processore riprenderà il compito che stava eseguendo prima di essere interrotto dal dispositivo di input. (Input: il primo mouse 1964, D. Engelbart) Input: la tastiera La tastiera è il principale strumento di input del calcolatore. Ogni volta che l utente preme un tasto, la tastiera avverte il processore attraverso un segnale di interrupt che un carattere (opportunamente decodificato in codice binario) è disponibile. Quando si parla di tastiere, si usa spesso la definizione di tastiera QWERTY, definizione che deriva dalla disposizione dei primi sei caratteri alfabetici. Output: il video Il video generalmente visualizza i dati che l utente inserisce come input e i risultati delle elaborazioni del calcolatore. I video si caratterizzano a seconda della loro dimensione (misurata in pollici e pari alla lunghezza della diagonale) e della tecnologia con cui sono costruiti (LED, LCD, tubo catodico). Ogni video è essenzialmente una matrice di punti luminosi e colorati (detti pixel ), che si attivano con intensità differenti. Maggiore è il numero di pixel e maggiore è la risoluzione (o qualità) del video. Output: il video alfanumerico I primi video sono stati essenzialmente un interfaccia di tipo alfanumerico basata sui caratteri ASCII. Output: il video grafico I video moderni, invece, sia per le loro prestazioni che per le evoluzioni che hanno avuto tutti i sistemi operativi più diffusi, implementano delle vere e proprie interfacce grafiche più intuitive e funzionali. IL FILE SYSTEM L archiviate delle informazioni (Introduzione) Il file system è il sistema con cui il calcolatore archivia in modo persistente le informazioni. L unità fondamentale gestita dal file system è il file che al suo interno può contenere sia dati che istruzioni di un programma. Per assolvere a questo compito, il file system utilizza dispositivi hardware che consentono di mantenere le informazioni anche quando il calcolatore è spento. Tali dispositivi sono detti: memorie secondarie, memorie di massa o memorie persistenti (o non volatili). Tipicamente si tratta di Hard Disk ma alcuni calcolatori utilizzano anche: memorie allo stato solido o schede di memoria (compact flash, secure digital, memory stick). La metafora del quaderno Il file system è totalmente gestito dal Sistema Operativo nel senso che è il sistema operativo che decide come e dove le informazioni (i file) debbano essere fisicamente archiviate sul dispositivo di memoria secondaria attraverso il file system. A livello astratto, in prima analisi, ogni dispositivo di memoria

secondaria può essere visto come un quaderno con molte pagine su cui il sistema operativo scrive i file uno di seguito all altro. Problemi Ma è molto frequente il fatto che sistema operativo abbia la necessità di aggiungere o cancellare un file oppure aumentare o diminuire la dimensione di un file. Tutto ciò, seguendo il modello appena citato (file scritti su più pagine, uno di seguito all altro) potrebbe generare alcuni problemi di gestione delle risorse disponibili Infatti: un file cancellato lascerebbe delle pagine vuote, mentre la modifica di un file, dando origine ad una nuova versione che potrebbe essere sia più corta che più lunga di quella precedente, potrebbe: () nel primo caso lasciare delle pagine vuote, () nel secondo caso richiedere delle pagine aggiuntive già occupate da altri file. La metafora del quaderno ad anelli Per superare i problemi descritti, si può immaginare un modello differente in cui le pagine su cui è scritto un file non vengano posizionate in modo continuo ma in modo sparso. A livello astratto, pertanto, un dispositivo di memoria secondaria si può pensare come un quaderno ad anelli, in cui le pagine possono essere spostate, aggiunte, cancellate senza creare sprechi di spazio e senza limitazioni sulla crescita delle dimensioni di un file (l unico limite può essere quello di avere ancora pagine bianche disponibili). Indice: il file system In analogia con l utilizzo di un indice, le pagine del quaderno devono essere numerate e per poter ricostruire il contenuto dei file, l indice deve contenere (nel corretto ordine) tutti i numeri delle pagine su cui è stato scritto il file. La visione astratta dei file Come già detto, è il sistema operativo a gestire il file system ( l indice del quaderno ); ma il sistema operativo (e il file system) deve anche fornire una visione astratta dei file presenti sulla memoria secondaria in quanto l'utente deve avere sempre la possibilità di: () avere a disposizione un insieme di operazioni ad alto livello per poter lavorare su i file (crea, apri, salva, cancella,...) che non tengano conto del tipo di supporto su cui gli stessi file sono stati archiviati. () identificare ogni file con un nome indipendentemente dalla sua posizione e dispersione nella memoria secondaria. Organizzazione gerarchica dei file Questi obiettivi si raggiungono attraverso l organizzazione gerarchica dei file, implementata dal file system e gestita dal sistema operativo. Essa consiste essenzialmente nel: () raggruppare i file in sotto insiemi memorizzati all interno di contenitori dette directory (o cartelle in quasi tutti i sistemi operativi), () usare nomi di file astratti e univoci all interno delle directory (pertanto, si possono avere due file con lo stesso nome purché siano in due directory diverse). Esempio: Contenuto della cartella Internet Explorer

La struttura ad albero La struttura gerarchica del file system, per come viene costruita, può sempre essere descritta attraverso un modello chiamato struttura ad albero. Infatti, attraverso il modello, ciascun file system può sempre essere rappresentato nel modo seguente: Applicazioni Elab_imm Elab_suoni (Foglie) Elab_testi Narrativa-Fra HD (C:) Biblioteca Narrativa-Ing (Foglie) Narrativa-Ita (Radice dell albero) Bianchi Utenti Pautasso (Foglie) Rossi Omonimie e percorsi Il modello ad albero è utile anche per capire perché il file system permette che coesistano due file con lo stesso nome astratto purché siano in director diverse. Questo si spiega considerando che, in un organizzazione gerarchica a più livelli, non è solo il nome astratto del file ad identificarlo in modo univoco ma l'intera sequenza di directory che lo contengono, a partire dalla radice dell'albero. Perciò, anche se due file (ma anche due directory) hanno lo stesso nome simbolico, se sono contenuti in due directory diverse allora saranno riconoscibili in quanto avranno due percorsi diversi. Pathname Ad esempio il file libro1 di narrativa italiana è univocamente identificato dal percorso: C:\Biblioteca\Narrativa-Ita\libro1. Mentre la directory Pautasso di Utenti è identificata dal percorso: C:\Utenti\Pautasso. Il carattere \ (backslash) viene usato (in windows) come separatore. Una sequenza di questo tipo può essere vista come il cammino che si deve compiere per raggiungere un determinato file a partire dalla radice dell'albero, ed è chiamata pathname. Esempio: Pathname del file explore.exe Meccanismi di protezione Un ultima caratteristica del file system nasce dalla considerazione che nei sistemi multi-utente, devono esistere dei meccanismi affinché ciascun utente possa proteggere i propri file da gli altri utenti sia in termini di accesso che di modifica o cancellazione dolosa o involontaria. Per gestire questa necessità, il file system conserva per ciascun file archiviato, un insieme di informazioni aggiuntive. Privilegi e attributi Attraverso tali informazioni il file system è in grado di riconoscere: l autore del file, la data di creazione, la data dell ultima modifica,... e l insieme dei privilegi (lettura, scrittura, cancellazione ed esecuzione) che

l autore ha deciso di concedere a tutti gli altri utenti. In tal modo, in sinergia con il sistema operativo, il file system preserva i file archiviati da tutti i possibili usi impropri da parte di tutti gli utenti (amministratore del calcolatore compreso nel caso si tratti di file dello stesso sistema operativo). Esempio: privilegi (o attributi) del file File_System.ppt. In Windows è possibile vedere tutte queste informazioni cliccando quando il puntatore è sul file desiderato: tasto destro del mouse > proprietà. IL SOFTWARE L utilità di un calcolatore Il solo hardware non è sufficiente per far funzionare un calcolatore. Occorre necessariamente introdurre un altro elemento: il software. ossia, un insieme di programmi che permettano di trasformare un insieme di circuiti elettronici (l hardware) in un oggetto in grado di svolgere delle funzioni utili e di natura diversa. Ma usare direttamente i circuiti elettronici (l hardware) di un calcolatore è un operazione al quanto difficile. Per poterlo fare occorrerebbe: conoscere, esattamente, tutti i dettagli costruttivi dell hardware che compone lo specifico calcolatore; fornire al calcolatore delle istruzioni scritte in un linguaggio a lui comprensibile (linguaggio macchina) fatto di lunghe sequenze di bit 0 o 1. Inoltre, ogni piccola differenza dell hardware comporterebbe una ricodifica o una riscrittura delle istruzioni. Inoltre, l utente deve essere in grado di: usare nello stesso modo, o comunque in modo molto simile, calcolatori diversi dal punto di vista dell hardware, avere un semplice linguaggio d interazione con il calcolatore, avere un insieme di strumenti applicativi per svolgere compiti utili e diversi. La macchina virtuale Nei moderni calcolatori, tutti questi obiettivi vengono raggiunti attraverso la definizione di macchine virtuali. Oggetti che vengono realizzati al di sopra della macchina hardware reale. Che cos è e come funziona Questa macchina si definisce virtuale in quanto essa non esiste fisicamente ma viene realizzata mediante il software (software di base) al di sopra della macchina fisica racchiudendo in se tutte le caratteristiche specifiche dell hardware su cui è costruita. Quando l'utente (e in parte anche i software applicativi) deve interagire con l hardware del calcolatore, invia dei comandi attraverso un opportuno linguaggio alla macchina virtuale. E la macchina virtuale che si preoccupa della traduzione di ogni comando impartito dall utente nella specifica sequenza di istruzioni riconosciute dalla macchina fisica sottostante. utente macchina virtuale hardware

Esempio Per fare un esempio pratico, si potrebbe dire che quando un utente clicca con il mouse sull icona che rappresenta la stampante, è la macchina virtuale che si attiva per tradurre quel comando in una opportuna sequenza di operazioni che il calcolatore esegue per soddisfare la richesta dell utente di stampare qualcosa. Partendo dall esempio precedente, si può perciò dire che la macchina virtuale è un software o un insieme di software che consente di gestire le risorse fisiche e interagire con il calcolatore in modo semplice. Volendo semplificare, a tale software si può fare riferimento con il termine di Sistema Operativo. Nota: in realtà il Sistema Operativo non assolve solo alla funzione di realizzare la macchina virtuale (e ad essere precisi non la realizza nemmeno integralmente) ma possiede anche altri compiti che verranno descritti in un altra lezione. Il softwere applicativo I compiti svolti con l ausilio del calcolatore sono chiamati applicazioni e i programmi usati per realizzarli sono detti: programmi applicativi Ad esempio: scrivere una lettera, fare una fattura commerciale, creare un archivio di clienti sono tutte applicazioni mentre i programmi di video scrittura, i fogli elettronici e il software di gestione delle basi di dati sono tutti programmi applicativi con cui le precedenti attività vengono realizzate. Alcuni esempi di programmi applicativi verranno descritti in successive lezioni. Dove si trova? All interno del calcolatore, il software applicativo si stratifica sopra la Macchina Virtuale per poter svolgere molte azioni ricorrenti indipendentemente dall hardware su cui sta lavorando (es. muovere il puntatore, aprire un file, stampare un documento, ) 0010110101010011 1111000010101011 Hardware 0001001010100111 0010110101000011 Macchina Virtuale (Sistema Operativo e Interfaccia Utente) Software Applicativo Esempi: videoscrittura Applicazione: editare testi (formato carattere, struttura paragrafo, tabelle grafici, immagini, Microsoft: WordPad, Word, Publisher, Open Office: Writer Esempi: fogli elettronici Applicazione: eseguire calcoli (dati, formule, statistiche, grafici, Microsoft: Excel Open Office: Calc

Esempio: presentazioni Applicazione: creare presentazioni (dati, formule, statistiche, grafici, Microsoft: PowerPoint Open Office: Impress Esempi: browser per internet Applicazione: esplorare la rete (siti, biblioteche digitali, commercio elettronico, grafici, Safari, Opera browser, mozilla Firefox, Internet explorer, Google chrome. Esempi: strumenti di disegno Applicazione: fare disegni (a mano libera, tecnici 2D e 3D, parti e assiemi, ) Microsoft: Paint Open Office: Draw Autodesk: AutoCAD L istallazione Il software applicativo deve generalmente essere installato successivamente all acquisto del calcolatore. Solitamente è distribuito su CD o DVD auto-installanti ma se il programma d installazione non parte automaticamente inserendo il disco nell apposito lettore, basta avviare il programma (molto spesso chiamato setup.exe) manualmente (con un doppioclick ). Il programma d installazione ha il compito di copiare tutti i file necessari sul disco fisso in funzione della macchina virtuale presente sul calcolatore. La rimozione Il software applicativo, quando non serve più, può essere disinstallato Nota: In Windows occorre selezionare la funzione Aggiungi/Rimuovi Applicazioni nella cartella Pannello di Controllo. L aggiornamento Le case produttrici di software, in genere, aggiornano i loro programmi applicativi con cadenza regolare. Gli aggiornamenti includono correzioni di errori (bug) e/o nuove funzionalità. Sono i numeri della versione che permettono di identificare una versione vecchia da una aggiornata. Inoltre, questi numeri consento anche di seguire i vari stadi di sviluppo di un programma applicativo. Infatti, questi numeri di solito sono formati da una parte intera e da una parte decimale. Un salto nella parte intera (da 6.0 a 7.0) indica generalmente una revisione completa del programma applicativo (nuove funzionalità) mentre un cambiamento nella parte decimale (da 6.3 a 6.4) denota modifiche più marginali (ad esempio correzioni di errori). E il programma applicativo che, quando viene avviato dall operatore, verifica la disponibilità in rete di una versione più aggiornata. Quando la trova, la scarica automaticamente chiedendo poi all utente il permesso per installare l aggiornamento scaricato. Può però capitare che gli aggiornamenti automatici non siano disponibili su tutti i programmi applicativi o per tutti gli utenti. In tal caso, dovrà essere l utente a verificare la presenza o meno di una versione più aggiornata ed avviare manualmente l installazione a patto che la licenza che a sottoscritto preveda un mantenimento (magari per un periodo definito) del prodotto acquistato.

I SISTEMI OPERATIVI (L anima del calcolatore) Il sistema operativo (SO) È un programma, o meglio, un insieme di programmi. Serve a coordinare ed ottimizzare le varie parti hardware che compongono l elaboratore. Fa da interfaccia tra il computer e chi lo utilizza: l utente umano, un applicazione o un altro computer. Può essere arricchito, aggiornato ed integrato. Alcuni esempi Microsoft DOS (Disk Operating System) 3.0; Microsoft Windows XP; Microsoft Windows Vista; Microsoft Windows 7; Unix; Linux (Red Hat V7.3); SUN Solaris V8; IBM VM (Virtual Machine): Dov è il Sistema Operativo? UTENTE SISTEMA OPERATIVO HARDWARE Che cosa fa? Il SO si presenta come mediatore tra l utente umano e l hardware. L utente non vede le singole parti fisiche del computer ma solo la rappresentazione che ne da il SO. L utente dirige l hardware tramite un linguaggio compreso, tradotto ed eseguito dal SO. Più nel dettaglio Gestisce le periferiche per le operazioni di I/O: Dischi, video, tastiere, stampanti, mouse, rete, Il File System, raccordando informazioni logiche e locazioni fisiche. Gestisce la CPU: Elaborazione dei processi, elaborazioni grafiche, Gestisce la memoria: Trasferimento memoria RAM/disco, memoria virtuale, paginge swapping. Gestisce i processi: Schedula, avvia e ferma i processi in macchina. Lato macchina Si caratterizza per flessibilità e capacità d integrazione: È in grado di prevedere ed accettare aggiunte per la gestione o la modifica di apparati periferici: driver per dischi, stampanti, scanner, puntatori,

È in grado di integrare modifiche HW o aggiornamenti funzionali: aumento di memoria, nuove schede grafiche, (esempio: RAM > 2GByte => ricompilazione / aggiornamento) È in grado di evolversi con versioni aggiornate in relazione alle evoluzioni della tecnologia HW (esempi: nuova scheda grafica, dischi più veloci, schermi più ampi,...) Lato utente Gestisce le risorse utente: file, direttori, quote, profili di accesso, privilegi, Gestisce le risorse per l utente, rendendogliele disponibili in modo comprensibile ed utilizzabile. Può fornire un ambiente virtuale, emulando risorse o addirittura computer interi (una virtual machine per ogni utente). Può emulare ambienti multi utente differenti da sé: concetto di macchina virtuale. Fornisce sempre uno o più linguaggi di controllo che consentono un interazione con l utente. Ad esempio: 1. C: > dir (Windows, fornisce l elenco dei file) 2. # ls al (Unix, come sopra) 3. $ show default (VMS, fornisce la propria posizione) Al suo interno È composto da (o contiene dei) programmi accessori per compiti particolari. Editor, per la composizione di testi e/o programmi: Notepad, Wordpad, Vi, ed, Pico, Compilatori e debugger, per le attività di programmazione. Utility generali: sort, merge, diff, findstr, Utility per configurazione e controllo della rete. Programmi per la gestione delle stampe. Programmi di partenza e arresto del sistema: halt, bootstrap, shutdown, Processi Tutti i calcolatori (per come li intendiamo comunemente in questo contesto) moderni prevedono il concetto di processo : tutte le attività sono suddivise e riconducibili in entità fondamentali dette processi (immaginiamo delle scatole ) individuate in maniera univoca, che contengono tutte (le sole) risorse necessarie a realizzarle. I processi vengono creati (nascono) quando servono e vengono cancellati (uccisi) quando il risultato è ottenuto, o quando non servono più. Un processo (di norma) è inconsapevole dell esistenza degli altri processi anche se possono esistere processi che comunicano tra loro. Sussistono in genere delle gerarchie tra processi, (genitore => figli), ma di norma esiste un processo padre di tutti i processi e generato in modo differente. Similitudine Tavoli in un ristorante classico : I tavoli (= i processi) sono numerati, Esistono(= vanno in esecuzione) solo se esiste un cliente (= un servizio da realizzare), Non c è altro modo di mangiare (= svolgere un attività) se non al tavolo, I clienti si siedono solo ai tavoli, I tavoli hanno quello che serve per mangiare e un legame con la cucina (= l HW) e la cassa (= l output) che è il cameriere (= il SO), I tavoli sono sparecchiati (eliminati) quando il cliente ha finito (ma il numero è riutilizzabile). Sistema operativo e processi Tutte le attività svolte da un calcolatore sono realizzate tramite processi. Più processi sono in genere attivi contemporaneamente sul calcolatore, per questo si parla di sistemi multiprocessing. Però, un solo processo

può essere fisicamente in esecuzione sulla CPU. Pertanto, tutti i restanti processi attivi devono essere ibernati in attesa che la CPU sia disponibile. E il SO che gestisce i processi, per quanto riguarda tempi e risorse (CPU e RAM) assegnate. Ma va osservato che anche il SO, in quanto applicazione software, è composto da processi che però hanno in genere una priorità d esecuzione rispetto agli altri (ed inoltre, non necessariamente solo da processi, per il SO possono esiste in effetti attività non realizzate come processi) Interfacce Il modo con cui un sistema operativo si presenta al proprio utilizzatore viene spesso definito con il termine di interfaccia. Essa è il modo con cui il sistema rende disponibili ed utilizzabili le proprie funzionalità verso l esterno (in particolare verso il suo utilizzatore umano). Tipi di interfacce Nei calcolatori più semplici, o più vecchi, esisteva un solo tipo di interfaccia di sistema operativo, molto semplice. Era rappresentata visivamente da un interprete dei comandi che si aspettava dei comandi testuali (solitamente simili a parole inglesi, vedi: linguaggi di programmazione, linguaggi interpretati, script di SO, script di shell ), forniti tramite una tastiera e visualizzati su uno schermo. Lo schermo visualizzava anche il risultato dei comandi eseguiti. Interfaccia detta a carattere. A partire dagli anni 80 si seguì invece un approccio più semplice da usare e più accattivante per l utente: l interazione tramite interfacce grafiche, gestite con un mouse. In questo caso si ha un device di I/O aggiuntivo oltre allo schermo e alla tastiera. A video vi è un menu più o meno ricco di funzionalità, attivabili con il mouse o, in alternativa, con una combinazione di tasti. Vi sono delle icone, rappresentazione visiva di programmi o funzionalità accessibili e/o utilizzabili tramite mouse, raggruppate in una scrivania virtuale, il Desktop. Interfacce grafiche MacOs di Apple e, molto più tardi, Windows di Microsoft sono senz altro tra le più conosciute e diffuse. Alcune (vedi distribuzioni LINUX) si sviluppano anche secondo filoni propri, in maniera indipendente dal sistema operativo che le ospita. Comunque, esse coesistono in genere anche con interfacce a carattere presenti e attive sullo stesso calcolatore. Possono infine coesistere contemporaneamente anche con altre interfacce grafiche residenti sullo stesso computer purché non attive contemporaneente. Esempio finale: il vostro PC Se riducete ad icona questa presentazione; Se riducete ad icona tutte le altre applicazioni che potrebbero occupare l intero schermo. Allora, guardando il video, quello che osserverete è un interfaccia grafica del sistema operativo che gira sul vostro PC; sia esso Mac, Windows, Linux, o altro Infatti se vi muovete e cliccate con il mouse, anche con il tasto destro, succedono delle cose. Ad esempio, se fate <CTRL>/<ALT>/<DEL> succede probabilmente qualcosa di strano. Tutto ciò che fate in realtà è interagire (o dare ordini, se preferite) con il sistema operativo del vostro computer. Concetti fondamentali È un programma, o meglio un insieme di programmi. È un interfaccia uomo-macchina. Viene comandato da direttive, testuali o grafiche. Gestisce risorse. È un Sistema che rende il calcolatore Operativo.

LINGUAGGI DI PROGRAMMAZIONE (Comunicare con i calcolatori) Concetti e definizioni Algoritmo: è un insieme di regole e prescrizioni da compiere per risolvere un problema. Esempio: istruzioni per il montaggio di un mobile IKEA [si noti che in questo esempio, come nella programmazione classica, si prevede che l attività sia concettualmente eseguita da un (solo) operatore in modo sequenziale, quindi, una singola istruzione per volta, una dopo l altra. In alcuni casi però compaiono anche concetti di parallelismo (tipo sollevate l armadio da terra almeno in due ) che si possono ritrovare anche nella programmazione moderna (sistemi multithread)+ Queste possono essere considerate un algoritmo in quanto descrivono l insieme di istruzioni da compiere per risolvere un problema: il montaggio del mobile acquistato. Programmazione Insieme di tecniche che consentono di descrivere degli algoritmi in modo da poter essere riconosciuti ed eseguiti da un calcolatore. Un calcolatore è in grado solo di eseguire istruzioni, opportunamente codificate, non di prendere iniziative di tipo creativo. Al limite può simulare dell iniziativa, purché in precedenza sia stata già descritta. Tutto ciò, quindi, implica la necessità di tradurre un algoritmo da un linguaggio naturale ( chiama, sesuccede questo fermati, ricomincia ) in sequenze di istruzioni comprensibili ed eseguibili da un elaboratore, ossia, in un programma (carica la cella 12001, vai alla 12008,...). Programma Quindi, un programma è la descrizione, in un linguaggio noto al computer, dei processi sequenziali necessari per operare delle trasformazioni di stato di alcuni oggetti (variabili, funzioni, ecc.) Nell esempio IKEA, il programma è il foglio di carta con le istruzioni, presentate in un linguaggio simbolico e visuale, con i vari passaggi numerati sequenzialmente. Per riassumere, alcune definizioni Algoritmo: descrizione e sviluppo logici di un processo. Linguaggio di programmazione: sistema che consente di formalizzare gli algoritmi in un linguaggio comprensibile dal calcolatore. Per fornire ad un computer le istruzioni da compiere per completare un processo. Programma: traduzione (o implementazione) di un algoritmo, attraverso un linguaggio di programmazione, in una sequenza di istruzioni comprensibile ed eseguibile da un calcolatore per compiere un processo. Tipi di linguaggi di programmazione Linguaggi macchina: insiemi di istruzioni estremamente elementari che un particolare computer è in grado di eseguire. sposta il contenuto della cella 37491 nella cella 38932 ; somma il valore 3 ; esegui l istruzione nella cella 34267. E stata la prima forma di programmazione, ancora usata ma estremamente complessa. Linguaggi di alto livello: insiemi di direttive e istruzioni indipendenti dal particolare computer su cui vengono eseguite. Sono nati successivamente ai linguaggi macchina e si strutturano, solitamente, con istruzioni simili a verbi if then, goto, while do, stop, exit,

Evoluzione dei linguaggi I linguaggi ad alto livello sono però troppo complessi per essere compresi ed eseguiti direttamente dal processore (CPU), pertanto: Contro: necessità di traduzione dai linguaggi di alto livello ai linguaggi macchina, quindi necessità di programmi intermedi di supporto quali: Compilatori e Assemblatori. Pro: nasce il concetto di indipendenza hardware e portabilità di un programma. La trafila della programmazione classica Come si procede, in genere: (1) Definizione di un algoritmo, di solito per mezzo di una rappresentazione simbolica (flowchart o diagramma di flusso). (2) Sua scrittura in un linguaggio sorgente di alto livello, quindi, scrittura del programma sorgente. (3) Compilazione / assemblamento del programma sorgente nel corrispondente linguaggio macchina (specifico per quel calcolatore), quindi, creazione del programma eseguibile. Nel caso si incorra in un errore di sintassi => correggere e tornare al punto 2, altrimenti, si continua. (1) Esecuzione del programma eseguibile. Controllo dei risultati, se si constata un errore nel funzionamento dovuto ad un errore logico nell algoritmo => correggere e tornare al punto 1, altrimenti, processo concluso. Un attività semplice: come si spegne la luce? Algoritmo: (a) Se la luce è spenta, stop. (b) Se la luce è accesa, spegnila. (c) stop. (semplice, no?) Compilazione del programma sorgente Lancio una compilazione del mio programma: # cc o Spegni_la_luce spegni. c In questo caso, se non ci sono errori di sintassi e/o di chiamate a su broutine il compilatore cc legge il file spegni.c, lo traduce opportunamente per il calcolatore su cui risiede, producendo un secondo file di output Spegni_la_luce.exe, detto eseguibile che si può davvero eseguire ottenendo, nel nostro caso, che la luce venga spenta. Il file Spegni_la_luce.exe non è comprensibile alla lettura umana. Può solo essere compreso ed eseguito da un calcolatore, anzi da quel, o meglio quella classe, di calcolatori. Esecuzione di un programma Lancio il programma compilato # runspegni_la_luce.exe # luce spenta correttamente! (POF! Si è spenta la luce) Il che non è completamente vero, perché se la luce fosse già stata spenta non sarebbe successo nulla e sarebbe comparsa una scritta diversa ( la luce è già spenta ). Questa variante può apparire banale, soprattutto se calata nella banalità dell esempio. Ma per un elaboratore il concetto di banale non esiste. Si tratta sempre e solo di attività semplici e meccaniche: - eseguire delle istruzioni - produrne il risultato Linguaggi interpretati Sono nati da esigenze diverse da quelle che hanno condotto alla nascita dei linguaggi di alto livello, ad esempio:

Per la gestione ed l interazione con il sistema operativo, Per attività marginali o di manutenzione del sistema, Per fornire ambienti semplici di programmazione. Caratteristiche In questi tipi di linguaggi: - Non esiste la fase di compilazione / assemblamento, - Le istruzioni del programma sorgente vengono lette, una per una e subito eseguite, grazie ad un particolare programma, detto appunto interprete, - l esecuzione dei programmi (spesso definiti script proprio per la loro natura diversa dal programma canonico) può essere costosa in termini di tempo di esecuzione. Questo, perché i linguaggi interpretati sono tipicamente poco efficienti (ad esempio la loro sintassi non prevede l esistenza dei cicli). Esempi Il BASIC, è un linguaggio sviluppato negli anni 60. Usato prevalentemente per sviluppo di giochi e applicazioni, anche complesse si è evoluto sopravvivendo e egregiamente ancora oggi. Esempio: programma RADICI.BAS per il calcolo delle radici dell equazione di secondo grado ax 2 + bx + c = 0: 10 for x = 1 to 3 11 input a, b, c 12 R1 = (-b + SQR (B^2 4*a*c) ) / (2*a) 13 R2 = (-b - SQR (B^2 4*a*c) ) / (2*a) 14 print R1; R2 15 next x 16 End Il programma, una volta scritto così in un file si esegue semplicemente con un comando del tipo: C:> RUN RADICI.BAS Che chiederà a video i tre parametri a, b e c per calcolare le due radici dell equazione relativa. Ulteriori esempi DOS: linguaggio di controllo dei sistemi operativi della famiglia Windows. I comandi DOS possono essere semplicemente inseriti in un file di testo ed essere mandati in esecuzione con il solo comando run. Shell (Unix): il nome generico shell denota i linguaggi di controllo dei sistemi operativi della famiglia Unix (Linux incluso). Come in DOS e nella maggioranza dei sistemi operativi esistenti, i relativi comandi possono essere inseriti in un file di testo ed eseguiti in sequenza. Usatissimo per tutte le attività di gestione degli elaboratori. Possono coesistere più varianti, lingue, dialetti e interpreti shell sulla stessa macchina. Perl: potentissimo linguaggio interpretato, nato per gestire Regular Expressions ma adattissimo per calcoli ed elaborazioni su file. Estremamente flessibile, ricchissimo di estensioni. Open Source. PHP linguaggio interpretato nato per la scrittura dinamica di pagine web. Potentissimo, ricco di estensioni. Ottimamente documentato. Open Source. Perché si usano? Per mettere in evidenza ciò che li differenzia da quelli compilati basta pensare a due diversi casi, che sono: (1) chiedere ad un ufficio specializzato la traduzione di un libro, (2) girare insieme ad un interprete in un paese straniero.

In molti casi, sarà meglio avere un ottima traduzione ma se si è, ad esempio, nel mezzo di un mercato coreano, è evidente che risulterà difficile spedire in Italia il testo delle domande che si vorrebbe fare per contrattare l acquisto di un prodotto mentre risulta chiaro che sarà molto più comodo farsi accompagnare da un traduttore. D altra parte, è ovvio che girare sempre e dovunque con un traduttore di fianco è sempre complesso e costoso, e pertanto non sempre fattibile. Anche se però va sottolineato che, con le CPU di 10, 20, 30 anni fa, la differenza nei tempi di esecuzione tra i linguaggi compilati e i linguaggi interpretati poteva essere drammatica, mentre oggi è perfettamente accettabile, anzi nella maggior parte dei casi nemmeno avvertibile. Pertanto, se si vogliono comunque massimizzare le prestazioni occorrerà ricorrere a linguaggi compilati, mentre se si vuole massimizzare la portabilità (e quindi l indipendenza hardware) occorrerà far uso di linguaggi interpretati. L interprete L interprete può essere sia una parte del sistema operativo sia un programma differente e installato successivamente sul calcolatore (esempio: Java Virtual Machine). Tutti i sistemi operativi correnti hanno almeno un interprete ed un linguaggio di comando con cui realizzare degli script di sistema operativo. Linguaggi ad oggetti (OO) La complessità attuale dei programmi, ma soprattutto la velocità di esecuzione degli attuali calcolatori, molto maggiore di anni fa, consente di programmare per macro funzionalità anziché singole istruzioni. Le funzionalità possono essere concettualmente semplici ( gestisci il tasto destro del mouse ), ma venir implementate con un grandissimo numero di istruzioni. Una volta corretta e consolidata, l azione o attività potrà essere congelata e riutilizzata più volte come funzione semplice (Gestisci-Tasto-DX-nel-Doppio- Click) all interno della stesso programma ogni volta che serva, oppure, anche da altri programmi che necessitino quella specifica funzionalità. La programmazione di fatto viene astratta, pensando il software come composto di Oggetti che hanno delle proprietà, delle funzioni e che si possono passare dei messaggi. La Classe può in sintesi essere considerata come uno stampo per creare oggetti. RETI DI CALCOLATORI (La condivisione di risorse e la comunicazione con altri utenti) L evoluzione Anni 70: esistono calcolatori di grandi dimensioni, presenti in centri di calcolo, che lavorano secondo il modello di time-sharing, ossia, più applicazioni si alternano condividendo la stessa risorsa per brevi periodi di tempo. Anni 80: si cominciano a diffondere reti di calcolatori indipendenti ed interconnessi. Si presenta per la prima volta la fusione tra calcolo e comunicazione. I servizi Anni 90: si intensifica la componente della comunicazione. Le reti cominciano a fornire agli utenti dei veri e propri servizi, come ad esempio, l accesso a informazioni remote: internet, l e-commerce, le biblioteche digitali, ecc; la comunicazione elettronica: l e-mail;