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