fondamenti di informatica

Transcript

fondamenti di informatica
FONDAMENTI DI
INFORMATICA
Andrea Fusiello
Informatica!
•  Scienza dei calcolatori (Computer Science) o Scienza
dell’informazione?
•  L’informatica è la scienza che studia l’elaborazione delle
informazioni
•  L’informatica è la scienza degli algoritmi che descrivono e
trasformano l’informazione: la loro teoria, analisi, progetto,
efficienza, realizzazione ed applicazione
[ACM - Association for Computing Machinery]
•  Information and Communication Technology (ICT)
Informazione!
L'informazione è ciò che, per un recettore posto in una
situazione in cui si hanno almeno due occorrenze possibili,
supera un'incertezza e risolve un'alternativa, cioè
sostituisce il noto all'ignoto, il certo all'incerto. In altre
parole, essa riguarda il contesto in cui i dati sono raccolti,
la loro codifica in forma intelligibile e -- in definitiva -- il
significato attribuito a tali dati, [Wikipedia]
Precisazione: i dati sono valori che non hanno significato
se non in se stessi, mentre l'informazione è ciò che il
recettore del dato ricava dalla sua interpretazione.
Algoritmo!
•  Sequenza di passi che definiscono il modo in cui viene
eseguita un’operazione.
•  Una volta definito un algoritmo per eseguire un
.
determinato compito, svolgerlo non richiede più alcuna
conoscenza sui principi su cui l’algoritmo si basa.
•  La conoscenza necessaria per svolgere il compito è tutta
codificata nell’algoritmo, di modo che l’esecuzione
diventa meccanica (= fattibile da una macchina)
•  Programma: un algoritmo espresso come sequenza di
istruzioni che una macchina è in grado di interpretare ed
eseguire.
Algoritmo di Euclide per MCD
!
Descrizione: questo algoritmo riceve in input due interi
positivi e ne calcola il massimo comune divisore.
Procedura
Passo 1 Si assegni a M e a N, rispettivamente, il valore
maggiore e minore dei due valori di ingresso.
Passo 2 Si divida M per N, e si denomini il resto R.
Passo 3 Se R non è 0, si assegni a M il valore di N, si
assegni a N il valore di R, e si ritorni al Passo
2; altrimenti, il massimo comune divisore è il
valore assegnato a N.
Evoluzione delle capacità!
•  Macchine a funzione fissa: Macchina di Pascal (1642) per
le addizioni, calcolatore di Atanasoff–Berry (1941)
costruito per risolvere sistemi di equazioni lineari.
•  Macchine programmabili: macchina analitica di Babbage
(1837), ENIAC (1946)
•  Macchine a programma memorizzato (Von Neumann,
1945), prima realizzazione nel 1948.
Evoluzione dellʼhadware!
Ingranaggi
Relè
Valvola
termoionica
Transistor
Transistor VLSI
Timeline!
•  1939 Prime macchine elettromeccaniche (es. Mark I nel 1944)
•  1941 Prima macchina a valvole termoioniche (Atanasoff–Berry)
poi Colossus e ENIAC (1946)
•  1955 transistor rimpiazzano le valvole (es. IBM 1401 del 1960
all-transistorized)
•  1960 circuiti integrati, minicomputer (es PDP-11 del 1970)
•  1970 microprocessore
•  1975 Olivetti P6060, uno dei primi PC, seguono Apple I (1976)
e IBM PC (1981)
•  1982 Compaq introduce il primo “clone”
•  1983 Apple Lisa, prima interfaccia grafica
•  1984 Psion Organizer, primo palmtop computer (o PDA).
Segue Palm nel 1996.
•  1994 IBM Simon, primo PDA+telefono (smartphone). Segue
Nokia Communicator nel 1996
Mark I
The all-transistorized IBM 1401 Data
Processing System
DEC PDP-11
IBM PC
Apple Lisa
Palm Pilot
Internet timeline!
•  1961 Commutazione di pacchetto
•  1969 ARPANET, 4 nodi
•  1974 viene formalizzato il TCP/IP (appare il termine
“Internet”)
•  1983 ARPANET adotta TCP/IP
•  1973-1990 processo di unione di reti, nasce Internet
•  ~1990 Internet si apre ad operatori commerciali
•  1989, Tim Berners-Lee (CERN) inventa HTTP
•  1994 Lycos primo motore di ricerca
•  1998 Google
Astrazione!
•  Distinzione tra le proprietà esterne di un’entità ed i
dettagli della sua struttura interna.
•  L’astrazione permette di costruire, analizzare e gestire
sistemi complessi che non sarebbero comprensibili nella
loro interezza se considerassimo i dettagli tutti assieme.
Astrazione in informatica!
Computer science commonly presents levels of
abstraction, wherein each level represents a different
model of the same information and processes, but uses a
system of expression involving a unique set of objects and
compositions that apply only to a particular domain.
Each relatively abstract, "higher" level builds on a relatively
concrete, "lower" level, which tends to provide an
increasingly "granular" representation.
For example, gates build on electronic circuits, binary on
gates, machine language on binary, programming
language on machine language, applications and
operating systems on programming languages.
Astrazione in ingegneria!
•  Designing and building things that work is at the heart of
engineering. Engineers have to work together in teams to
build complex systems, whether software, hardware,
cars, planes, or bridges. This complexity is a major
source of engineering cost and errors
•  The solution to complexity is abstraction, also known as
information hiding. Abstraction is simply the removal of
unnecessary detail. The idea is that to design a part of a
complex system, you must identify what about that part
others must know in order to design their parts, and what
details you can hide. The part others must know is the
abstraction.
Astrazione in generale!
•  L’astrazione consiste nell’ eliminare tutti i dettagli
ininfluenti (in un certo contesto) per concentrare l’ analisi
sulle variabili determinanti.
•  L’astrazione è il processo di riduzione dei dettagli in una
rappresentazione della realtà, al fine di concentrare l’
analisi e lo studio sui fattori determinanti dei fenomeni.
•  Sostituire una situazione del mondo reale complessa e
particolareggiata con un modello comprensibile e privo di
dettagli inessenziali, all’interno del quale si possa
risolvere il problema.
Ingegneria, complessità e astrazione!
•  L’ingegnere deve essere preparato a gestire la
compessità dei sistemi.
•  Se ci riflettete, questa capacità è il filo rosso che lega
tutte le specialità dell’ingegneria.
•  L’astrazione è lo strumento principale per affrontare il
compito.