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