Introduzione all`informatica - Dipartimento di Informatica

Introduzione all’informatica
Introduzione all’Informatica
 Chi sono?
 Claudio Schifanella
 Dipartimento di Informatica
 [email protected]
 http://www.di.unito.it/schi
Informatica
Introduzione
Perché l’enfasi sulla teoria?
 Per non essere legati indissolubilmente a un tipo di
computer (es. PC con Windows)
 Per non essere legati a un tipo di programma (es.
versione 2000 di Microsoft Word)
 Se non si conoscono gli strumenti tecnologici, non se ne
possono sfruttare le potenzialità
 Il computer è versatile: non si possono prevedere gli usi
futuri
Informatica
Introduzione
Ringraziamenti
 Questi lucidi sono stati ideati, preparati e aggiornati nel
corso degli anni, oltre che da me, da vari colleghi. Tra
tutti, è necessario citare almeno:








Marina Ribaudo (Univ. di Genova)
Marco Botta (Univ. di Torino)
Giancarlo Ruffo (Univ. di Torino)
Alessandro Mazzei (Univ. di Torino)
Jeremy Sproston (Univ. di Torino)
Luca Anselma (Univ. di Torino)
Roberto Esposito (Univ. di Torino)
Rossano Schifanella (Univ. Di Torino)
Informatica
Introduzione
“Sì, ma perché proprio a noi?”
 Perché uno dovrebbe interessarsi di informatica?
 Il computer è uno strumento di lavoro quotidiano
 Perché è fondamentale come supporto alla ricerca
 come strumento per la modellazione delle molecole; per
l’analisi statistica; per le ricerche bibliografiche; per la
scrittura di testi.
 Perché è utile indipendentemente dal tipo di studi che
fate
 per redigere la tesi di laurea, per reperire informazioni su
internet, per comunicare con collaboratori ed amici, etc.
Informatica
Introduzione
Dove è necessaria l’informatica?
 Ovunque si utilizzino apparecchiature
programmabili:
 Uso di computer in vari settori “tradizionali” (attività
industriali, commerciali, militari, ecc.), ma anche:
 Editoria elettronica
 Elaborazione di immagini e suoni
 Computer art
 …
6
Informatica
Cos’è l’Informatica?
Definizione 0:
“L’Informatica è la scienza del calcolo automatico.”
Introduzione
Informatica
Introduzione
Cos’è l’Informatica?
Definizione 1:
“Con il termine Informatica si indica l’insieme dei processi
che rendono possibile la creazione, la raccolta,
l’elaborazione, l’immagazzinamento e la trasmissione
dell’informazione con metodi automatici”
8
Informatica
Introduzione
Cos’è l’Informatica?
Definizione 2:
“La determinazione con metodo sia ipotetico-deduttivo che
sperimentale, nonché l'analisi e la definizione di protocolli e
metodologie di verifica valide per la costruzione di prototipi
e applicazioni ingegnerizzate riguardo a tutto ciò in cui
consiste la definizione di dati di ingresso e la costruzioni di
soluzioni che comportino la definizione di dati di uscita”
[ACM, Association for Computing Machinery, Syllabus dei corsi universitari di
Informatica]
9
Informatica
Introduzione
Di cosa parliamo quando parliamo di
Informatica
 Information and Communication Technology:
Informatica come tecnologia
 risvolti fisico-matematici e ingegneristici del calcolo
automatico; teorie e tecniche di comunicazione
 Computer Science:
Informatica come scienza
 basata su modellizzazione, formalizzazione e verifica
sperimentale (teoria degli automi, logica formale, teorie del
linguaggio)
“Computer Science is no more about computers than
astronomy is about telescopes.” (E. Dijkstra)
Introduzione alle tecnologie
informatiche
Informatica
Introduzione
Il calcolo automatico
 Effettuare calcoli a mente o a “mano” è un’attività
“costosa” (in termini di tempo e fatica) e incline
all’errore.
 Per secoli l’uomo ha cercato di porre rimedio a questo
fatto “automatizzando” il processo di calcolo.
Informatica
L’abaco
 È la prima “macchina” di
calcolo nota.
 I primi abaci risalgono al V
millennio a.C.
Introduzione
Informatica
L’abaco
 L’abaco aiuta l’utente
principalmente come
strumento per tenere
traccia di quanto già fatto.
 La logica e la correttezza
dell’operazione
dipendono interamente
dall’utente
Introduzione
Informatica
La Pascalina
 Bisogna aspettare fino al XVII
secolo d.C. per avere la
prima vera innovazione
rispetto all’abaco.
 Inventata nel 1642 dal
filosofo e matematico
francese Blaise Pascal
 Per molto tempo è stata
considerata la prima
addizionatrice meccanica,
anche se questo merito
andrebbe alla calcolatrice
di Wilhelm Schickard.
Introduzione
Informatica
La Pascalina
 La pascalina é il primo
grande passo avanti: la
logica dell’operazione é
controllata dalla
macchina.
Introduzione
Informatica
Introduzione
Problema
 La pascalina permetteva di effettuare “solo” addizioni e
sottrazioni.
 Moltiplicazioni, divisioni potevano essere effettuate
mediante ripetizioni di addizioni e sottrazioni, ma era di
nuovo l’utente a dover controllare il processo.
Informatica
Introduzione
Come aggiungere nuove operazioni?
 Si può pensare di affrontare il problema modificando la
macchina in modo da introdurre la divisione e la
moltiplicazione.
 Nuovi problemi: radice quadrata? logaritmo?
 Quante sono le funzioni definibili?
 In effetti non si sta risolvendo il problema, lo si “rimanda”
Informatica
Introduzione
Come aggiungere nuove operazioni?
 Il problema vero è che la logica che governa le
operazioni è “cablata” nella macchina calcolatrice.
 La soluzione è di trattare tale logica come parte
dell’input della macchina.
Informatica
Introduzione
Logica delle operazioni come parte
dell’input?
 Il prodotto, la divisione, …, possono essere “descritti”
tramite operazioni più semplici
 Individuiamo un insieme “base” di operazioni e
combiniamole per rappresentare quelle più complesse
 L’ordine delle operazioni base e i loro argomenti possono
essere specificati usando solo numeri
 Siamo quindi in grado di descrivere la logica di
operazioni complesse usando il linguaggio (i numeri)
usato per l’input delle macchine di calcolo
20
Informatica
La “Macchina Analitica”
Introdotta da Charles
Babbage intorno al 1840, è il
primo esempio di macchina
di calcolo “programmabile”
Introduzione
Informatica
Introduzione
La logica dell’operazione è
“confusa” con i dati
Dati
Programma
Informatica
Introduzione
Da Babbage ai giorni nostri
 Le idee di Babbage erano troppo avanzate per la sua
epoca storica. Da un lato la tecnologia non era ancora
sviluppata a sufficienza da supportare le sue idee (la
macchina analitica era progettata per funzionare a
vapore!), dall’altro non era ancora sentita così forte
l’esigenza del calcolo automatico.
 Per questi motivi le sue idee non ebbero il successo che
meritavano e furono dimenticate per quasi un secolo.
Informatica
Introduzione
Da Babbage ai giorni nostri
Le idee di Babbage vennero “riscoperte” nella prima metà
del ‘900 da Alan Turing e da John von Neumann.
Informatica
Alan Turing
Uno dei padri
dell’informatica. Moltissime
sue idee/congetture sono
attuali oggigiorno.
Introduce il concetto di
macchina universale (i
computer moderni sono
“implementazioni di questo
concetto”)
Introduzione
Informatica
Introduzione
La macchina di Turing
 È un modello astratto di calcolatore. Turing la descrive e
la usa al fine di analizzare l’insieme delle funzioni che
possono essere calcolate in modo automatico.
 Nasce uno dei pilastri dell’informatica teorica: la teoria
della calcolabilità.
 È universale perché può calcolare tutte le funzioni
“calcolabili”. Alla base del suo funzionamento c’è la
stessa idea che c’è alla base della macchina analitica.
Informatica
Introduzione
La macchina di Turing
 Perché si parla di funzioni “calcolabili”?
 Si può dimostrare che non tutte le funzioni definibili in matematica
sono calcolabili mediante una macchina di Turing.
 Non è un problema specifico della macchina di Turing: esistono
problemi che “semplicemente” non possono essere risolti in modo
automatico (es. Halting problem).
 Da RAI filosofia
 http://www.filosofia.rai.it/articoli/la-macchina-di-turing/13882/default.aspx
 Da YouTube
 https://www.youtube.com/watch?v=1IPbWTatJWs
 https://www.youtube.com/watch?v=FTSAiF9AHN4
Informatica
Introduzione
John Von Neumann
Crea il modello di calcolatore a cui
si ispirano i calcolatori moderni.
Matematico ungherese, ha dato il
suo contributo in moltissimi campi,
quali: teoria quantistica, economia,
meteorologia, logica, teoria dei
giochi
Due contributi fondamentali:
1) Architettura di un elaboratore
(«First draft», 30/06/1945)
2) Bomba atomica
John Von Neumann
http://www.raiscuola.rai.it/articoli/john-von-neumann/21878/default.aspx
Da RAI Scuola
Un po’ di storia (tecnologica)…
 1600: macchine calcolatrici a ingranaggi (Pascal, Leibniz)
 1800: macchine con schede perforate e primi programmi
(Babbage, Lovelace (figlia di Byron))
 1920: erano chiamati computer “impiegati” (spesso donne)
che eseguivano calcoli numerici
 1940: macchine a relay meccanici
 Bell Laboratories
 Mark I presso Harvard University e IBM
 1950: macchine di von Neumann
 Schede perforate, nastri magnetici
 Transistor, circuiti stampati
 1980: microcomputer
 Home computer, personal computer
Un po’ di storia (scientifica)…
 300 a.C.: algoritmo di Euclide per MCD
 1800: Boole
metodi puramente simbolici per modellare il ragionamento
 1930: Church, Turing
 modello formale astratto di computer
 computer come macchina universale: “We are trying to build a
machine to do all kinds of different things simply by programming rather
than by the addition of extra apparatus” (Turing)
 esistono problemi che un computer non può risolvere
 1940: Shannon
teoria dell’informazione
 1950/60: Dijkstra, Kruskal, Hoare, ecc.
algoritmi fondamentali, linguaggi di programmazione, teoria dei
linguaggi formali, ecc.
 1970: Codd, Rivest et al., McCarthy et al., Cook et al.
database relazionali, crittografia a chiave pubblica, intelligenza
artificiale, complessità computazionale
Informatica
Introduzione
Temi dell’informatica
 Calcolabilità
 Ingegneria del software
 Complessità
 Reti di calcolatori
 Teoria dei linguaggi formali
 Interazione uomo-macchina
 Algoritmi e strutture dati
 Sicurezza
 Linguaggi di programmazione
 Intelligenza artificiale
 Compilatori e interpreti
 Basi di dati
 Architettura dei calcolatori
 …
 Sistemi operativi
Informatica
Temi dell’informatica
 Ciascuno di questi temi è un “edificio” più o meno
complesso; ad es.
 Intelligenza artificiale:
 Risoluzione dei problemi
 Rappresentazione della conoscenza
 Meccanismi di ragionamento
 Apprendimento automatico
 Pianificazione, scheduling, diagnosi, configurazione,
soddisfacimento di vincoli, …
Introduzione
Informatica
Introduzione
Introduzione all’informatica
 Informatica: infor(mazione) (auto)matica
insieme dei processi e delle tecnologie che consentono
 la creazione,
 la raccolta,
 l’elaborazione,
 l’immagazzinamento,
 la diffusione
dell’informazione
Informatica
Introduzione
Introduzione all’informatica
 Le tecnologie informatiche hanno tre funzioni principali:
 elaborare dati per ottenere informazioni significative
 mantenere le informazioni elaborate per utilizzarle in
combinazione con altre come dati di un nuovo processo di
elaborazione
 organizzare le informazioni in una nuova forma per renderle
più comprensibili, più interessanti o più utili
 N.B.: Il calcolatore non ‘inventa’ nuove informazioni
 “Computers are useless. They can only give you
answers.” (P. Picasso (1968?))
Il ciclo di elaborazione
Dati e informazioni
Informatica
Introduzione
Terminologia
 Hardware
 componente fisica del sistema informatico
 computer, stampanti, monitor, tastiere, mouse, modem,
cavi telefonici
 Computer
 elaboratore: dispositivo in grado di eseguire
automaticamente una serie di istruzioni
 elettronico: usa componenti elettronici
 digitale: elabora segnali numerici
Informatica
Introduzione
Terminologia
 Sistema
 insieme di parti correlate che operano e interagiscono per
svolgere una funzione specifica
 è costituito da componenti e da sottosistemi (sistemi
a loro volta)
Informatica
Introduzione
Terminologia
 Algoritmo (aritmetica elementare formulata dal
matematico arabo medioevale al-Khuwarizmi)
 insieme delle operazioni necessarie a risolvere un problema
(es. ricetta, istruzioni di montaggio LEGO®)
 n.b.: più algoritmi possono risolvere lo stesso problema
 Programma
 implementazione di un algoritmo in un linguaggio formale
 n.b.: più programmi possono implementare lo stesso
algoritmo
Informatica
Introduzione
Terminologia
 Software
 insieme dei programmi che fanno funzionare l’hardware
 Due categorie principali di software
 sistemi operativi: permettono all’elaboratore di svolgere le
proprie funzioni (software di base)
 programmi applicativi: svolgono i compiti più vari, in
funzione delle esigenze dell’utenza
Informatica
Introduzione
Software
 Svariate decine di sistemi operativi
 MS-DOS, Windows 2000/XP/Vista/7
 Mac OS
 Unix (BSD, Linux, Solaris, Irix, Ultrix, HP-UX…)
 Centinaia di migliaia di programmi applicativi, ad esempio:
 browser, videoscrittura, fogli elettronici
 gestione di basi di dati
 grafica avanzata
 controllo di centraline
 …
Informatica
Dati
 Materia prima del trattamento dell’informazione
 Hardware e software hanno lo scopo di elaborare e
rappresentare dati
 Un computer può elaborare dati di ogni genere
 dati semplici: lettere e numeri
 dati complessi: suoni, immagini, filmati, grafici
Introduzione
Tipi di dato