Concetti generali

Transcript

Concetti generali
Informatica I
1 – Concetti generali
05-08 Marzo 2012
Corso di Laurea in Matematica e applicazioni
Università di Camerino
A.A. 2011/2012
Agenda
• Cos’è l’informatica
• Un pò di storia
• Organizzazione multilivello del
calcolatore
Informatica I
1 – Concetti generali
A.A. 2011/2012
Cos’è
l’informatica
?
Prospettiva degli studenti
• Lo psicoanalista dei computer: “I think of someone working
on a computer trying to solve any problems the computers
might have.”
• Il frustrato: “It is the science of ideas, methods, and languages
that make the computer the 'devil' that you must work with.”
•
•
“Computer science is the part of our life which deals with computers”
“Computer science is the understanding of how computers works”
•
“Computer science is programming”
•
“Computer science is the study of computer theory”
•
“Computer science involves using a programming language to solve scientific problems”
James W. McGuffee, “Defining Computer Science”, 2000
Informatica I
1 – Concetti generali
A.A. 2011/2012
Cos’è l’informatica (1/2)
“Computer Science is the study of Computers”
A. Newell, A. J. Perlis, and H. Simon, “What is Computer Science?”, 1967
“A discipline that involves the understanding and design of computers and
computational processes”
Computing Sciences Accreditation Board (CSAB)
“The study and application of languages and methods for making precise
and understandable descriptions of things”
T. Long et al, “Providing Intellectual Focus to CS1/CS2”, 1998
Informatica I
1 – Concetti generali
A.A. 2011/2012
Cos’è l’informatica (2/2)
“An integrated field of study that draws its foundations from mathematics,
science, and engineering”
E. Roberts et al, “Curriculum 2001: Interim Report from the ACM/IEEE-CS Task Force”, 1999
“… the systematic study of algorithmic processes - their theory, analysis,
design, efficiency, implementation, and application - that describe and
transform information.”
P.J. Denning et al, “Computing as a Discipline”, 1989
Informatica I
1 – Concetti generali
A.A. 2011/2012
Cosa NON è l’informatica (1/2)
“[Computer science] is not really about computers -- and it's not about computers
in the same sense that physics is not really about particle accelerators, and
biology is not about microscopes and Petri dishes...and geometry isn't really
about using surveying instruments. Now the reason that we think computer
science is about computers is pretty much the same reason that the Egyptians
thought geometry was about surveying instruments: when some field is just
getting started and you don't really understand it very well, it's very easy to
confuse the essence of what you're doing with the tools that you use.”
H. Abelson - Introductory lecture to Structure and Interpretation of Computer Programs
http://www.youtube.com/watch?v=zQLUPjefuWA
Informatica I
1 – Concetti generali
A.A. 2011/2012
Cosa NON è l’informatica (2/2)
• L’informatica non si occupa (solo) di studiare i computer
• L’informatica non si occupa (solo) di come si scrivono i programmi
per computer
• L’informatica non si occupa (solo) di come si utilizzano i computer
Informatica I
1 – Concetti generali
A.A. 2011/2012
Un pò di
storia
Computer/Computing machines
• Storicamente i computer (ita=calcolatori) erano impiegati (in
carne ed ossa) che calcolavano secondo metodi effettivi
(meccanici), e lavoravano nel commercio, governo e strutture di
ricerca.
• Col termine computing machine (poi diventato più
semplicemente computer), si definiva una macchina che fa il
lavoro di un computer umano.
Informatica I
1 – Concetti generali
A.A. 2011/2012
Pascalina (1642)
• Inventata dal filosofo e
matematico francese Blaise
Pascal ed è una macchina che
permette di addizionare e
sottrarre (con il riporto!)
• E’ stato il primo computer a
essere
–
–
–
–
Utilizzato in un ufficio
Commercializzato
Brevettato
Descritto in un enciclopedia
Informatica I
1 – Concetti generali
A.A. 2011/2012
Charles Babbage (1/2)
Matematico e filosofo
britannico, ha inventato:
• Difference engine (1822):
Macchina per calcolare
funzioni polinomiali (grazie
alla serie di Taylor, anche
logaritmi e
trigonometriche)
• Analytical engine (1837)
Informatica I
1 – Concetti generali
A.A. 2011/2012
Charles Babbage (2/2)
Matematico e filosofo
britannico, ha inventato:
• Difference engine (1822)
• Analytical engine (1837):
Mai realizzata, primo
progetto di calcolatore
generico
Input
(schede
perforate)
Informatica I
Mill (mulino)
Output
Elaborazione
(stampatore)
1 – Concetti generali
A.A. 2011/2012
Alan Turing (il padre dell’informatica)
Contributi principali:
• Macchina di Turing (universale):
macchina astratta in grado di
calcolare qualsiasi procedura
calcolabile da un computer
(automatico o umano)
•
•
•
Crittoanalista del governo britannico durante la
seconda guerra mondiale (cifratice tedesca
Enigma)
Pionere dell’Intelligenza Artificiale
Pioniere della Biologica teoretica (teoria chimica
sulla morfogenesi)
Informatica I
1 – Concetti generali
A.A. 2011/2012
Alan Turing (1912 - 1954)
• University of Cambridge (1931 – 1936): si laurea con il
massimo dei voti; definisce la famosa macchina.
• Princeton University (1936 – 1938): completa il PhD in
logica matematica.
• (1938 – 1945): crittografo per il governo britannico.
Lavora al COLOSSUS, il primo calcolatore elettronico
(secretato dal governo per 30 anni).
• London National Physical Laboratory (1945): progetta
l’ACE (Automatic Computing Engine). Non realizzata,
perchè valutata troppo costosa.
• Manchester University (1948 – 1954): lavora su
intelligenza artificiale e morfogenesi; nominato docente
in ‘Theory of Computing’.
•1952: Arrestato per l’allora crimine di omosessualità e
sottoposto alla castrazione chimica.
• 1954: muore suicida.
Informatica I
1 – Concetti generali
A.A. 2011/2012
Alan Turing (1912 - 1954)
• Quest’anno (2012) si festeggia il centenario
della nascita di Turing
http://www.mathcomp.leeds.ac.uk/turing201
2/
• ACM Turing award: assegnato annualmente
dalla Association for Computing Machinery
(ACM) – l’associazione più grande e
importante nell’informatica - ad una
personalità che eccelle per i contributi di
natura tecnica che ha dato alla comunità
informatica.
Informatica I
1 – Concetti generali
A.A. 2011/2012
John Atanasoff
• Tra il 1939 e il 1942 costruisce insieme a
Clifford Berry l’Atanasoff-Berry Computer
(ABC)
• L’ ABC è stata la prima macchina automatica
(risolveva solo sistemi di equazioni lineari
algebriche) a:
• Utilizzare cifre binarie per rappresentare
i numeri
• Utilizzare l’elettronica, anzichè la
meccanica
• Definire un sistema in cui la
computazione e la memoria fossero
separate
Informatica I
1 – Concetti generali
A.A. 2011/2012
ENIAC (1946)
Il primo calcolatore automatico general-purpose
"conosciuto”.
•
•
•
•
•
30 tonnellate
140 kW di consumo
20 registri da 10 cifre
6.000 interruttori
Una foresta di cavi
Informatica I
1 – Concetti generali
A.A. 2011/2012
John Von Neumann (1903 - 1957)
“L’ultimo grande matematico”
Jean Dieudonné
Maggiori contributi:
• Macchina di Von Neumann: primo
modello concettuale di architettura
hardware, sul quale si basano i moderni
computer
• In molteplici campi della matematica tra
cui teoria degli insiemi, analisi funzionale,
topologia, fisica quantistica, economia,
informatica, teoria dei giochi e
fluidodinamica
Informatica I
1 – Concetti generali
A.A. 2011/2012
Alcune predizioni
• “Nel futuro i computers peseranno non meno di 1.5 ton.” (Popular
Mechanics 1949)
• “Penso che ci sia mercato nel mondo per non più di cinque computer.”
(Thomas Watson, chairman di IBM, 1943)
• “Ho girato avanti e indietro questa nazione (USA) e ho parlato con la
gente. Vi assicuro che questa moda dell’ elaborazione automatica non
vedrà l’anno prossimo.” (Editor dei libri scientifici di Prentice Hall
1947)
• “Non c‘è ragione per cui qualcuno possa volere un computer in casa
sua.” (Ken Olson, fondatore di Digital, 1977)
• “I calcolatori mobili senza filo sono come i bagni mobili senza
tubature. Essi saranno utili sui veicoli, nei cantieri, ai concerti rock. Il
mio consiglio è quello di collegare con un filo la tua casa e di restare in
casa.” (Bob Metcalfe, co-inventore della tecnologia Ethernet, 1995)
Informatica I
1 – Concetti generali
A.A. 2011/2012
50s
[1953] La International Business
Machines (IBM) entra nel
mercato con l’IBM 701. Solo 19
esemplari prodotti (affittato a
15.000 $ al mese)
[1954] FORTRAN, il primo
linguaggio di programmazione
ad alto livello
[1959] Brevettato il circuito
integrato (aka microchip). Col
microchip i transitor e i
collegamenti sono messi in un
unico cristallo di materiale
semiconduttore (il chip).
Informatica I
1 – Concetti generali
IBM 701
A.A. 2011/2012
60s
[1964] Il primo prototipo di mouse (“an X-Y position
indicator for a display system.”)
[1969] ARPAnet, il primo esempio di Internet. Proteggeva
le informazioni tra sedi militari attraverso una rete di
computer separati geograficamente. Negli anni ’70, in
ARPAnet sviluppati email, telnet (accesso remoto), e FTP
(trasferimento file).
[1969] La AT&T sviluppa il sistema operativo Unix, che
diventerà uno tra i più usati (Apple MacOSX e Linux sono
basati su Unix)
Informatica I
1 – Concetti generali
A.A. 2011/2012
70s (1/2)
[1971] L’Intel sviluppa il primo
microprocessore su singolo
chip, l’Intel 4004
[1971] IBM presenta il primo
disco di memoria, il floppy disk.
[1972] Pong, il primo videogame
[1973] Brevettata la rete locale
(LAN), o Ethernet
[1973] Nasce il linguaggio C
Informatica I
1 – Concetti generali
A.A. 2011/2012
70s (2/2)
[1976] Wozniak e Jobs
producono l’Apple I e
fondano la Apple
Computers
[1978] Visicalc, il primo
“foglio elettronico”
Informatica I
1 – Concetti generali
A.A. 2011/2012
80s (2/2)
[1981] IBM presenta il Personal
Computer IBM PC, che monta il
sistema operativo Microsoft MS-DOS
[1984] Apple Macintosh, il primo
computer di successo con GUI
(Graphical User Interface)
[1985] Nasce Microsoft Windows 1.0
[1985] Sony sviluppa il CD-ROM
(Compact Disc Read-only Memory)
[1989] Tim Berners-Lee propone il World
Wide Web (WWW)
IBM PC
Apple Macintosh
Informatica I
1 – Concetti generali
A.A. 2011/2012
90s
[1991] Linus Torvalds rilascia Linux, un
sistema operativo free e open source
basato su Unix
[1994] Sviluppato l’USB 1.0 (Universal
Serial Bus)
[1995] Nasce il linguaggio di
programmazione Java
[1997] Definito lo standard IEEE 802.11,
per l’implementazione di Wireless LAN
Informatica I
1 – Concetti generali
A.A. 2011/2012
Legge di Moore
“Il numero di
transitor in un
circuito integrato
quadruplica ogni 3
anni”
Valida fino al 2020?
(transitor a
dimensione
atomica)
Informatica I
1 – Concetti generali
A.A. 2011/2012
Organizzazione
multilivello del
calcolatore
Cos’è un computer? (1/2)
Computer =? “genio elettronico”
NO!
Fa esattamente ciò che gli viene ordinato, nulla di
più!
Informatica I
1 – Concetti generali
A.A. 2011/2012
Cos’è un computer? (2/2)
• Un computer è un apparecchio elettronico che,
strutturalmente, non ha niente di diverso da un televisore, o
una lavatrice, semplicemente è progettato per svolgere altre
funzioni.
• Come tutte le macchine, non ha nessuna capacità decisionale
o discrezionale, ma si limita a compiere determinate azioni
secondo procedure prestabilite (programmi).
• Il computer esegue istruzioni; dal momento in cui viene
avviato al momento in cui viene spento.
• Il computer esegue un'istruzione dietro l'altra senza mai
nessuna interruzione (molti milioni di volte per secondo).
Anche quando sembra che non stia facendo niente, sta in
realtà eseguendo ciclicamente un'istruzione di "attesa".
Informatica I
1 – Concetti generali
A.A. 2011/2012
Hardware vs Software (1/2)
HW (ciò che puoi toccare)
SW (ciò che non puoi toccare)
• Dispositivo fisico contenente
componentistica elettronica, in
grado di essere programmato
per eseguire un'attività di
elaborazione dell’
informazione all’interno di un
computer.
• Il software denota l’insieme
delle istruzioni (programmi)
che consentono
all’hardware di svolgere i
propri compiti.
• Il computer non può
funzionare senza hw (si ha
bisogno almeno di un disco,
scheda madre, processore, ...)
• Il computer può funzionare
senza sw (ma non va molto
lontano)
Informatica I
1 – Concetti generali
A.A. 2011/2012
Hardware vs Software (2/2)
Principio di equivalenza tra HW e SW: : tutto ciò che
può essere fatto con l’hardware, può essere fatto con
il software, e viceversa.
Informatica I
1 – Concetti generali
A.A. 2011/2012
Processo elaborativo (1/2)
Schema concettuale
Elaborazione
Dati
SW
HW
Risultati
Istruzioni
Informatica I
1 – Concetti generali
A.A. 2011/2012
Processo elaborativo (2/2)
Elaborazione
Dati
Istruzioni
SW
HW
Risultati
Input: le informazioni entrano in un elaboratore attraverso i dispositivi di input: tastiera,
scanner, mouse, microfono, video-camera ...; le informazioni sono immagazzinate in forma
digitale.
Elaborazione: il computer elabora le informazioni (istruzioni aritmetico-logiche, e istruzioni
più complesse)
Output: per vedere o sentire il prodotto dell'elaborazione di un computer, questo va
“scritto” su una stampante, uno schermo, un altoparlante, ... (dispositivi di output)
Informatica I
1 – Concetti generali
A.A. 2011/2012
Linguaggio macchina
•L’insieme delle istruzioni primitive di un computer formano il
cosiddetto Linguaggio Macchina, un linguaggio tramite il quale
è possibile “parlare” con lui
•Ciascun computer ha un suo Linguaggio Macchina, che
dipende strettamente dall’hardware
•Il linguaggio macchina è il linguaggio con cui sono scritti i
programmi eseguibili per computer.
•E’ elementare, basato sull’alfabeto binario. Difficile utilizzarlo
direttamente
• Si preferisce utilizzare linguaggi ad alto livello, che poi
vengono tradotti in linguaggio macchina
Informatica I
1 – Concetti generali
A.A. 2011/2012
Structured Computer Organization
(1/2)
Per una comprensione migliore, conviene pensare ai computers
come una serie di astrazioni, ciascuna costruita sulla base della
precedente.
•Astrarre la macchina reale M0 e il linguaggio macchina L0,
attraverso macchine virtuali Mn e linguaggi più utilizzabili Ln.
•Visione multilivello
Informatica I
1 – Concetti generali
A.A. 2011/2012
Structured Computer Organization
(2/2)
2 metodi possibili, entrambi basati sulla definizione di un insieme
di istruzioni (linguaggio L1) più semplici da usare del linguaggio
macchina (linguaggio L0)
– Traduzione
– Interpretazione
Informatica I
1 – Concetti generali
A.A. 2011/2012
Traduzione
•Un metodo per eseguire un programma scritto in L1 (codice
sorgente) consiste nel sostituire ciascuna istruzione in una
sequenza di istruzioni corrispondenti in L0 (codice oggetto)
•Il computer quindi esegue il programma originale in L1 ma
“tradotto” in L0
•In altre parole, l’intero programma L1 è dapprima convertito in
un programma L0, poi il programma L0 viene eseguito dalla
macchina fisica M0
• Il programma che traduce viene detto compilatore
Informatica I
1 – Concetti generali
A.A. 2011/2012
Interpretazione
•Consiste nel costruire un programma in L0 che prende come
ingresso un programma scritto in L1, e che analizza ciascuna
istruzione ed esegue direttamente l’insieme equivalente di
istruzioni L0
•Cioè, ogni istruzione L1 viene esaminata, decodificata ed
eseguita immediatamente
•Non si richiede la generazione di un nuovo programma in L0
Si parla di interpretazione, ed il programma usato è detto
interprete
Informatica I
1 – Concetti generali
A.A. 2011/2012
Macchina virtuale
È più semplice immaginare l’esistenza di una macchina virtuale
M1 il cui linguaggio macchina è proprio L1
• In tal modo, non avremmo bisogno né di L0 né della macchina
M0 che esegue L0
• Naturalmente, se i linguaggi L0 e L1 non sono troppo differenti,
il passaggio è più facile (questo implica che L1 è più comprensibile
di L0, ma ancora lontano dal linguaggio umano)
• L’obiettivo è quello di evitare al programmatore l’uso (faticoso)
di linguaggi più adatti alla macchina (machine-oriented) che
all’utente (user-oriented)
Informatica I
1 – Concetti generali
A.A. 2011/2012
Livelli multipli
Soluzione: inventare un altro insieme di istruzioni L2 ancora più
user-oriented (e meno machine-oriented) di L1: linguaggio L2,
associato alla virtual machine M2.
• Possiamo costruire una serie completa di linguaggi (e
corrispondenti macchine virtuali), ciascuno dei quali usa come
base il predecessore
• Una macchina a n livelli contiene n differenti virtual machines e
n differenti linguaggi.
Informatica I
1 – Concetti generali
A.A. 2011/2012
Macchina multilivello
Useroriented
....
Macchina virtuale Mn, con
linguaggio Ln
I programmi in Ln vengono o
interpretati da un interprete a
livello n-1, o vengono tradotti al
linguaggio macchina di Mn-1
Macchina virtuale M1, con
linguaggio L1
Macchina reale M0, con
linguaggio L0
Informatica I
I programmi in L1 vengono o
interpretati da un interprete a
livello 0, o vengono tradotti al
linguaggio macchina di M0
I programmi in L0 possono
essere eseguiti direttamente
dall’hardware (linguaggio
macchina)
1 – Concetti generali
Machineoriented
A.A. 2011/2012
Concretamente...
Livello 5: Problem-oriented language
Livello 4: Assembly language
Livello 3: Operating system language
Livello 2: Instruction Set Architecture
Livello 1: Microarchitecture
Livello 0: Digital logic level
Informatica I
1 – Concetti generali
A.A. 2011/2012
Livello 0: Digital logic level
•Le unità costituenti sono le porte logiche; ciascuna ha in ingresso uno o più segnali
digitali (0 o 1) e calcola semplici funzioni di questi ingressi, come AND o OR
• Ciascuna porta è costituita da un numero limitato di transistors (switch digitali)
• Un insieme di porte si combinano a formare una memoria di 1-bit, che può
contenere 0 o 1
• Le memorie da 1-bit si combinano in gruppi di dimensione 2n, ad es., 16, 32 or 64
per formare i registri
• Ciascun registro può contenere un numero binario entro un dato range, determinato
dalla dimensione del registro (in un registro intero n bit, range: [0, 2n -1])
• Le porte vengono combinate per costituire il vero blocco “calcolatore”.
Informatica I
1 – Concetti generali
A.A. 2011/2012
Livello 1: Microarchitecture Level
• Questo livello è costituito da registri da 8-32 bit, che formano una unità di
memoria ed un circuito chiamato ALU (Arithmetic Logic Unit) che è in grado
di eseguire semplici operazioni aritmetico/logiche (and, or, not, ..., add, sub,
mul, div, ...)
• I registri sono connessi all’ALU secondo un preciso data path su cui avviene
il flusso dati.
• Il passaggio di due operandi attraverso la ALU e la memorizzazione del
risultato in un nuovo registro viene detto ciclo di data path
• Un ciclo di data path è eseguito in un ciclo di clock (nell’ordine di
nanosecondi) della CPU
Informatica I
1 – Concetti generali
A.A. 2011/2012
Level 2: Instruction Set Architecture
(ISA)
• Questo livello forma l’interfaccia tra HW e SW
• La compilazione di un programma ad alto livello genera un
programma ISA
• E’ definito dall’ Instruction Set della macchina, ovvero da un
insieme di istruzioni eseguite dal microprogramma o
direttamente a livello hardware
• L’Instruction Set dipende dal particolare hw, in particolare
dal processore, o dalla famiglia di processori
Informatica I
1 – Concetti generali
A.A. 2011/2012
Level 3: Operating System Level
• A questo livello è disponibile una memoria organizzata, un insieme di istruzioni a più
alto livello (system call), e la possibilità di eseguire un task in concorrenza.
• Queste nuove operatività di livello 3 sono realizzate tramite un interprete che lavora
a livello 2, chiamato sistema operativo (OS)
• Le istruzioni di livello 3 identiche a quelle di livello 2 vengono in ogni caso
controllate da microprogramma (o dall’hardware), non dall’OS. Ovvero: alcune
istruzioni del livello 3 sono interpretate dall’OS ed altre sono interpretate
direttamente dal microprogramma
• Questo livello è dunque un ibrido
Non confondere il sistema operativo con le applicazioni
che vi eseguono!
Informatica I
1 – Concetti generali
A.A. 2011/2012
Level 4: Assembly Level
• Questo livello contiene una formalizzazione simbolica basata su uno dei
linguaggi sottostanti.
• Programmi in linguaggio assembly sono prima tradotti in linguaggio 1, 2 o 3
e poi interpretati dalla relativa macchina virtuale o reale
• Il programma che esegue la traduzione è detto assembler
• Nel linguaggio assembly, ogni statement produce esattamente un’istruzione
macchina (corrispondenza 1-1)
CONS: difficile
PROS: performance e accesso più diretto all’HW. Programmare in assembler permette di
avere un codice più ridotto e veloce, rispetto ai linguaggi più ad alto livello (importante
negli embedded systems, come smart card, driver dei dispositivi, cellulari (più vecchi))
Informatica I
1 – Concetti generali
A.A. 2011/2012
Level 5: Problem Oriented Language
• Il più alto livello di astrazione: higher-level languages. Il linguaggio utilizzato è più
vicino al linguaggio naturale, e quindi più facile per il programmatore.
•A questo livello vi sono i linguaggi utilizzati da chi produce applicativi (es: Java, C,
LISP,…)
• I programmi scritti in questi linguaggi sono tradotti al livello 3 or 4 da traduttori noti
come compilatori
• A differenza dell’assembly language, non c’è una corrispondenza 1-1 con le istruzioni
macchina, ma 1-n
CONS: meno performante dell’assembly, genera codice macchina più grande e meno
ottimizzato
PROS: più facile, permette di codificare in modo più naturale e veloce la soluzione a un
dato problema (linguaggi procedurali, funzionali, a oggetti, …)
Informatica I
1 – Concetti generali
A.A. 2011/2012
Esempio
Alto livello: d = s + t
Assembly: add d, t, s
Macchina: 000000ss sssttttt ddddd000 00100000
Informatica I
1 – Concetti generali
A.A. 2011/2012
Riassumendo…
• I computer sono progettati come una serie di livelli, costruiti uno sull’altro
• Ciascun livello corrisponde ad un diverso livello di astrazione (dal machineoriented all’user-oriented), con oggetti ed operazioni differenti
• Per il programmatore, la scelta tra assembly language e high level language
dipende da fattori di performance, dalla macchina su cui l’applicazione deve
eseguire, e dalla complessità del problema trattato
• L’insieme delle operazioni, tipi di dati e caratteristiche di ogni livello
costituisce la sua architettura (gli aspetti implementativi relativi alla tecnologia
usata nella realizzazione dei chip non ne fanno parte)
Informatica I
1 – Concetti generali
A.A. 2011/2012
Logaritmo
Serie di Taylor
Informatica I
...
1 – Concetti generali
A.A. 2011/2012