Elementi di Informatica Facoltà di Economia Introduzione al corso Lezione: 06/10/15 Docente: Summa Donato dove reperire le informazioni: http://economia.unibas.it/economia/ [email protected] 1 Un po’ di Bibliografia • Informatica una panoramica Generale Brookshear – Pearson Addison Wesley • Applicazioni aziendali con EXCEL (Borazzo,Candiotto) APOGEO 2 Programma del corso - Introduzione - Memorizzazione dei dati - Conversione dei dati - Architettura dei calcolatori - Sistemi operativi - Algoritmi - Reti - Software applicativo: Excel 3 Introduzione Conoscenza dell’informatica: diversi livelli CPU-Elaboratore-Hardware Sistema Operativo Linguaggi di Programmazione-Software Un Calcolatore è un insieme di interruttori Sistema Operativo: è solo un organizzatore dei dispositivi di I/O Linguaggio di Programmazione: Insieme delle istruzioni da dare in pasto ad una macchina 4 Introduzione L’ informatica è la disciplina che cerca di dare un fondamento scientifico ad argomenti come la progettazione di computer, programmazione, elaborazione delle informazioni e soluzioni algoritmiche di processi Informazione Automatica 5 Introduzione Origini delle macchine calcolatrici • Generazione Zero: Meccanici • I Generazione: Valvole Elettroniche • II Generazione: Transistor • III Generazione: Circuiti Integrati • IV Generazione: Circuiti Integrati VLSI 6 Introduzione Abaco Uno dei primi dispositivi di calcolo: Origine Greco-Romana Macchine ad Ingranaggi: Leibniz, Pascal (1600) Macchine create per eseguire operazioni di addizione Macchine analitica (Babbage 1850) Fu progettata per leggere istruzioni sotto forma di fori su schede di cartone per lavorare tessuti su telai • Prima macchina programmabile • Primo programmatore: (Ada Byron) I progettisti della macchina di Babbage anticiparono davvero la moderna progettazione dei computer. Se il livello tecnologico di allora avesse permesso di produrre le sue apparecchiature in modo economicamente conveniente, e se le esigenze delle amministrazioni fossero state della stessa portata di quelle di oggi, tale macchina avrebbe portato la rivoluzione informatica già nell’800. 7 Il suo progetto era basato sul progetto di telaio il quale, facendo uso di diverse schede perforate, determinava le diverse trame di tessuto da produrre. Babbage lo adattò in modo che generasse operazioni matematiche. La macchina analitica, considerata il primo computer al mondo, era costituita da: Dispositivi di Ingresso basati sulle schede perforate analoghi a quelli di Jacquard; Un Processore Automatico con il compito di eseguire calcoli numerici; Un’Unità di Controllo che verificava venissero svolti i compiti in modo corretto; Un Meccanismo di Uscita dei calcoli svolti; Una Memoria che conservava i numeri in attesa che questi venissero “processati”. 8 Il primo grande computer elettromeccanico e' quello di Howard Aiken (1900-1973) che nel 1937, ad Harward, insieme ad IBM, riprende in esame i lavori di Babbage e cerca di utilizzare i rele' per realizzare un computer del tipo di quello di Babbage. Nel 1944 e' operativo Mark I, con 3000 rele', parole di 23 cifre decimali, capace di 3 operazioni al secondo 9 ENIAC (Elecronic Numerical Integrator and Computer) costruita da Mauchly ed Eckert all'Universita' della Pensilvania. La macchina, sviluppata fra il 1943 ed il 1946, fu finanziata dai militari, ed era intesa a calcolare tabelle di puntamento per l'artiglieria, che fino ad allora erano calcolate a mano, con un lavoro lungo ed estenuante. ENIAC era costruita con 18000 valvole termoioniche, 1500 rele' , consumava attorno ai 150 KW, l'apparecchiatura pesava 30 tonnellate , ed occupava un salone di 30 metri, per un'altezza di 2.5 m. Si programmava predisponendo, a mano, connessioni su pannelli intercambiabili, che avevano qualcosa come 6000 interruttori, cavi e prese. 10 Generazione II Transistor Nel 1948 venne inventato il transistor (Brattain e shockley) che sostituirà le valvole Generazione III I circuiti Integrati Su una piastrina 4 × 3 mm Faggin, Hoff e Mazer riuscirono, nel 1971, ad inserire 2.250 transistor, che formavano il cuore di un intero calcolatore in grado di elaborare in parallelo 4 bit 11 Nel 1971 l'Intel produce la prima CPU su un singolo CIP, il 4004, con 2300 transistor. Era una CPU a 4 bit, prodotta su commessa della Busicom, ditta giapponese , l'importanza di questa linea di sviluppo non fu compresa subito e l'Intel riusci' a ricomperare il progetto dalla Busicom qualche anno piu' tardi. Nel 1972 l'Intel produce l'8008, una CPU ad 8 bit, con un limite di memoria di 16 K, questo limite viene superato nel 1974 con l'8080 (64 K di RAM). nel 1978 viene prodotto l'8086, che ha un bus a 16 bit, 8088, con un piu' economico bus ad 8 bit viene utilizzato dall'IBM per i primi personal computers. 12 Generazione IV La tendenza a costruire circuiti sempre piu' piccoli e l'integrazione di molte componenti sulla stessa piastrina di silicio porta ad un crollo dei costi, ad una aumento delle prestazioni, e ad un'enorme espansione del mercato. Vengono prodotti cip di silicio che integrano migliaia, poi decine, centinaia di migliaia o milioni di componenti (VLSI , very large scale integration ). 13 Il mercato delle CPU vede protagonista l'Intel, tallonata da AMD e, per un certo periodo , da Cyrix, Importante e' l'aumento delle prestazioni che si ha negli anni 90, col 486 e soprattutto col Pentium, che ha una architettura più complessa delle CPU precedenti, e maggiori performance. Le performance delle cpu Intel migliorano fino a divenire paragonabili a quelle dei grandi calcolatori, ma ad una frazione del costo. Negli anni successivi si assiste ad un ulteriore miniaturizzazione delle componenti, e ad un aumento del clock dei processori, aumento che si arresta nel 2005, poco sotto i 4 Ghz, per problemi termici ed elettrici. Per aumentare le prestazioni si procede quindi a progettare macchine con più CPU, ed integrati che contengono più di una CPU. Si assiste anche ad un grande aumento di prestazioni delle memorie e divengono comuni dischi di grande capacità (centinaia di Gbyte). 14 anno modello Clock numero di RAM MHz transistors indirizzabile Note 1971 4004 0.108 2.300 640 KB cpu a 4 bits 1972 8008 0.108 3.500 16 KB cpu ad 8 bits 1974 8080 2 6.000 64 KB cpu general purpose 1978 8086 5-10 29.000 1 MB cpu a 16 bits 1979 8088 5-8 29.000 1 MB usato su PC IBM 1982 80286 8-12 134.000 16 MB con protezione memoria 1985 80386 16-33 275.000 4 GB cpu a 32 bits 1989 80486 25-100 1.2 M 4 GB 8 KB cache on cip 1993 Pentium 60-233 3.1 M 4 GB 2 pipeline (superscalare), MMX 1995 Pentium pro (P6) 150-200 5.5 M 4 GB 2 livelli cache, no MMX, 1997 Pentium II 233-400 7.5 M 4 GB 2 livelli cache, MMX, slot 1 1999 Pentium III 500-1.13 Ghz 9.5-28 M 4 GB bus >66 Mhz 2000 Pentium IV 1-2.2 Ghz (2002) 3.8 Ghz nel 2004 42 M 4 GB 15 La legge di Moore (1965) Il numero di transistor per chip raddoppia ogni 18 mesi • Circa un aumento del 60% all’anno • Conseguenze: – Aumento della capacità dei chip di memoria – Aumento della capacità delle CPU La legge di Moore è tratta da un'osservazione empirica di Gordon Moore cofondatore di Intel: nel 1965 scrisse infatti un articolo su una rivista specializzata nel quale illustrava come nel periodo 1959 -1965 il numero di componenti elettronici transistor che formano un chip fosse raddoppiato ogni anno. Moore, grazie alle sue supposizioni poi diventate leggi è stato dunque tra coloro che hanno dato il via alla corsa all'evoluzione dei processori. 16 Legge di Moore per le CPU Legge di Nathan • Le dimensioni del software sono sempre cresciute col calare dei costi e con l’aumentare della memoria Disponibile • Il Circolo Virtuoso – Costi più bassi e prodotti migliori – Aumento dei volumi di mercato – Fattori di scala nella produzione – Costi più bassi …... • Più transistor in una CPU significano: – Eseguire direttamente istruzioni più complesse – Maggiore memoria sul chip (cache) – Maggiore parallelismo interno • Altro fattore decisivo è la frequenza di funzionamento 17 Questa legge è diventata il metro di misura e l'obiettivo di tutte le aziende che operano nel settore, non solo la Intel. Un esempio di come i microprocessori in commercio seguano la legge di Moore è il seguente: nel maggio del 1997 Intel lancia il processore Pentium II con le seguenti caratteristiche: Frequenza: 300 MHz Numero di transistor: 7,5 milioni Dopo tre anni e mezzo, ovvero nel novembre del 2000, mette in vendita il Pentium 4 con le seguenti caratteristiche: Frequenza’ 1,5 GHz Numero di transistor': 42 milioni Come si può vedere, in 42 mesi le prestazioni dei processori sono circa quintuplicate, proprio come prevedeva la legge. Infatti, a ben vedere, la frequenza del processore è passata da 300 MHz a 1,5 GHz, esattamente cinque volte quella del Pentium II. Ad ulteriore conferma c'è anche il numero di transistor utilizzati per costruire il processore, un processore Pentium II è formato da 7,5 milioni di transistor, se moltiplichiamo per cinque quel valore otteniamo che il processore dovrebbe essere formato da circa 37,5 milioni di transistor, il Pentium IV è formato da 42 milioni, il che vuol dire che non solo Intel ha rispettato la legge, ma addirittura è riuscita a fare meglio. Questa tecnologia ha una fine?? 18 Personal Computer • Sappiamo chi è • Microprocessore a 32/64 bit • Memoria di 1-2 Gbyte • Capacità dei dischi dell’ordine dei Tbyte • Per il 95% basato sulla piattaforma Intel Server • Su rete locale o Web server • Memorie fino di diversi Gbyte • Capacità dei dischi dell’ordine dei Tbyte • Gestione di rete efficiente Mainframe • Diretti discendenti della serie IBM/360 • Gestione efficiente dell’I/O • Periferie a dischi di molti Tbyte • Centinaia di terminali connessi • Costi di parecchi miliardi 19 Introduzione Vantaggi del computer • Rapidità • Precisione • Capacità di esecuzione di lavori ripetitivi • Capacità di gestione di grandi quantità di dati • Capacità di integrare dati provenienti da fonti diverse • Possibilità di memorizzare dati per lunghi periodi di tempo 20 Introduzione Limiti (svantaggi) del computer • Mancanza di intelligenza autonoma • Mancanza di creatività • Difficoltà ad affrontare problemi nuovi • Difficoltà nei lavori non ripetitivi • Difficoltà a gestire informazioni non strutturate • Difficoltà nell'interpretare un discorso • Possibilità di guasti 21 Introduzione Un algoritmo può essere informalmente definito come una sequenza finita di “mosse” che risolve in un tempo finito un determinato problema. L'esecuzione delle azioni nell'ordine specificato dall'algoritmo consente di ottenere, a partire dai dati di ingresso, i risultati che rappresentano la risoluzione del problema. 22 I linguaggi di programmazione possono essere suddivisi in linguaggi a basso e ad alto livello. Un esempio di linguaggio a basso livello è il linguaggio macchina, che fornisce appunto le istruzioni a Basso livello (cioè direttamente eseguibili dall’elaboratore) per la risoluzione di un problema. In linguaggio macchine è per esempio possibile specificare il caricamento di dati (variabili) in locazioni di memoria ben precise (ad esempio i registri della CPU). I linguaggi ad alto livello, come il C/C++, Java, Pascal, Basic e altri, sono molto più simili al linguaggio naturale. Le Istruzioni sono quindi molto più intuitive per il programmatore. In ogni caso, l’esecuzione di un programma scritto in un linguaggio ad alto livello è subordinata a una fase in cui le istruzioni del linguaggio sono tradotte in istruzioni a basso livello (compilazione), direttamente eseguibili dal calcolatore. 23 La rappresentazione di un algoritmo può essere espressa graficamente tramite diagrammi di flusso (flow chart). È uno metodi più comuni usati per la rappresentazione di algoritmi, specialmente nel caso di algoritmi brevi. Un diagramma di flusso, detto anche diagramma a blocchi, si presenta come un insieme di figure geometriche collegate da frecce. Tutti i diagrammi a blocchi cominciano con un’ellisse che contiene la parola inizio: I dati in ingresso sono i dati noti del problema, quelli che devono essere elaborati per arrivare alla soluzione: Le operazioni da svolgere sui dati sono racchiuse in rettangoli: no yes if I/O Operazioni Start End 24 La realizzazione di programmi, spesso complessi, consente una varietà di possibili applicazioni, tra cui: Word Processing (Memorizzare, elaborare testi), Basi di Dati (Memorizzare grossi archivi di dati, recupero veloce, produrre informazioni globali), Accesso Remoto (Trasmissione e recupero di informazioni), Calcolo (Risolvere problemi matematici), Simulazioni (Rappresentare e elaborare informazioni che simulano l’ambiente reale), Progettazione ingegneristica, Rappresentazione scientifica dei dati. Tuttavia, esistono problemi che non possono essere risolti tramite un calcolatore elettronico per diversi motivi, tra cui: la risoluzione del problema non esiste, la risoluzione del problema impiegherebbe un tempo di calcolo eccessivo (anche infinito), la soluzione del problema è “soggettiva”. 25 •Per generare programmi è necessario avere o generare algoritmi efficienti. •Non bisogna confondere il programma (PC) (sequenza di passi). con l’algoritmo •Pertanto un programma è nient’altro che un algoritmo dove l’esecutore è il computer stesso. Sviluppare software significa generare programmi che siano corretti ed efficienti. Corretto: Efficiente: validazione del risultato. tempo, memoria (in termini di costo) 26