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